- 106 -
ref_sem
Reference semaphore status
iref_sem
Reference semaphore status (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 = ref_sem( ID semid, T_RSEM *pk_rsem );
ER ercd = iref_sem( ID semid, T_RSEM *pk_rsem );
z
z
P
P
a
a
r
r
a
a
m
m
e
e
t
t
e
e
r
r
s
s
ID
semid
ID number of the target semaphore
T_RSEM
*pk_rsem
Pointer to the packet to which semaphore status is 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)
T_RSEM
*pk_rsem
Pointer to the packet to which semaphore status is returned
Contents of pk_rsem
typedef struct
t_rsem{
ID
wtskid
+0
2
ID number of the task at the head of the semaphore’s wait queue
UINT
semcnt
+2
4
Current semaphore resource count
} T_RSEM;
[
[
[
[
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
ref_sem SEMID, PK_RSEM
iref_sem SEMID, PK_RSEM
z
z
P
P
a
a
r
r
a
a
m
m
e
e
t
t
e
e
r
r
s
s
SEMID
ID number of the target semaphore
PK_RSEM
Pointer to the packet to which semaphore status is 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
ID number of the target semaphore
A1
Pointer to the packet to which semaphore status is returned
[
[
[
[
E
E
r
r
r
r
o
o
r
r
c
c
o
o
d
d
e
e
]
]
]
]
None
[
[
[
[
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 returns various statuses of the semaphore indicated by semid.
wtskid
Returned to wtskid is the ID number of the task at the head of the semaphore’s wait queue (the next task to be
dequeued). If no tasks are kept waiting, TSK_NONE is returned.
semcnt
Returned to semcnt is the current semaphore resource count.
If this service call is to be issued from task context, use ref_sem; if issued from non-task context, use iref_sem.