- 101 -
sig_sem Release
semaphore
resource
isig_sem
Release semaphore resource (handler only)
[
[
[
[
C
C
L
L
a
a
n
n
g
g
u
u
a
a
g
g
e
e
A
A
P
P
I
I
]
]
]
]
ER ercd = sig_sem( ID semid );
ER ercd = isig_sem( ID semid );
z
z
P
P
a
a
r
r
a
a
m
m
e
e
t
t
e
e
r
r
s
s
ID
semid
Semaphore ID number to which returned
z
z
R
R
e
e
t
t
u
u
r
r
n
n
P
P
a
a
r
r
a
a
m
m
e
e
t
t
e
e
r
r
s
s
ER ercd Terminated
normally (E_OK) or error code
[
[
[
[
A
A
s
s
s
s
e
e
m
m
b
b
l
l
y
y
l
l
a
a
n
n
g
g
u
u
a
a
g
g
e
e
A
A
P
P
I
I
]
]
]
]
.include mr100.inc
sig_sem SEMID
isig_sem SEMID
z
z
P
P
a
a
r
r
a
a
m
m
e
e
t
t
e
e
r
r
s
s
SEMID
Semaphore ID number to which returned
z
z
R
R
e
e
g
g
i
i
s
s
t
t
e
e
r
r
c
c
o
o
n
n
t
t
e
e
n
n
t
t
s
s
a
a
f
f
t
t
e
e
r
r
s
s
e
e
r
r
v
v
i
i
c
c
e
e
c
c
a
a
l
l
l
l
i
i
s
s
i
i
s
s
s
s
u
u
e
e
d
d
Register name
Content after service call is issued
R0 Error
code
R2
Semaphore ID number to which returned
[
[
[
[
E
E
r
r
r
r
o
o
r
r
c
c
o
o
d
d
e
e
]
]
]
]
E_QOVR Queuing
overflow
[
[
[
[
F
F
u
u
n
n
c
c
t
t
i
i
o
o
n
n
a
a
l
l
d
d
e
e
s
s
c
c
r
r
i
i
p
p
t
t
i
i
o
o
n
n
]
]
]
]
This service call releases one resource to the semaphore indicated by semid.
If tasks are enqueued in a waiting queue for the target semaphore, the task at the top of the queue is placed into READY
state. Conversely, if no tasks are enqueued in that waiting queue, the semaphore resource count is incremented by 1. If an
attempt is made to return resources (sig_sem or isig_sem service call) causing the semaphore resource count value to ex-
ceed the maximum value specified in a configuration file (maxsem), the error code E_QOVR is returned to the service call
issuing task, with the semaphore count value left intact.
If this service call is to be issued from task context, use sig_sem; if issued from non-task context, use isig_sem.