-
sig_sem
isig_sem
-
ER sig_sem ( ID semid );
ER isig_sem ( ID semid );
|
MOV A, #semid
CALL !!_sig_sem
MOV A, #semid
CALL !!_isig_sem
|
semidで指定されたセマフォに資源を返却(セマフォ・カウンタに0x1を加算)します。
ただし,本サービス・コールを発行した際,対象セマフォの待ちキューにタスクがキューイングされていた場合には,カウンタ操作処理は実行されず,該当タスク(待ちキューの先頭タスク)に資源が渡されます。
これにより,該当タスクは,待ちキューから外れ,WAITING状態(資源待ち状態)からREADY状態へ,またはWAITING-SUSPENDED状態からSUSPENDED状態へと遷移します。
備考1 本サービス・コールを発行した際,待ちキューの先頭タスクがREADY状態へと遷移する場合は,該当タスクの優先度に対応したレディ・キューの最後尾にキューイングし直す処理もあわせて実行されます。
備考2 RI78V4が管理しているセマフォ・カウンタは,7ビット幅で構成されています。このため,本サービス・コールの発行により,資源数が最大カウント値127を越える場合には,カウンタ操作処理は実行されず,戻り値として“E_QOVR”が返されます。