XINU
|
セマフォテーブルエントリを解放し、セマフォを削除する。 More...
#include <xinu.h>
Go to the source code of this file.
Functions | |
syscall | semdelete (sid32 sem) |
セマフォテーブルエントリを解放し、セマフォを削除する。 More... | |
セマフォテーブルエントリを解放し、セマフォを削除する。
Definition in file semdelete.c.
セマフォテーブルエントリを解放し、セマフォを削除する。
Step1. 割り込みを禁止する。
Step2. セマフォIDが不正の場合は割り込みを許可状態に復元し、処理を終了する。
Step3. 削除したいセマフォの状態がFREEの場合は、割り込みを許可状態に復元し、処理を終了する。
Step4. セマフォの状態をFREEにする。
Step5. 待機状態プロセスを全てREADY状態に移行するまで、再スケジューリングを遅延(Defer)させる。
Step6. キュー操作API(getfirst())でキューの先頭から順番にプロセスIDを取り出し、READY状態にする。
Step7. 再スケジューリングの遅延を解除する。
Step8. 割り込みを許可状態に戻す。
[in] | sem | 削除したいセマフォのID |
Definition at line 22 of file semdelete.c.
References DEFER_START, DEFER_STOP, disable(), getfirst(), isbadsem, OK, ready(), resched_cntl(), restore(), S_FREE, sentry::scount, semtab, sentry::squeue, sentry::sstate, and SYSERR.
Referenced by _ptclear().