XINU
|
新しいセマフォを作成する。 More...
#include <xinu.h>
Go to the source code of this file.
Functions | |
local sid32 | newsem (void) |
未使用のセマフォIDを返す。 More... | |
sid32 | semcreate (int32 count) |
未使用セマフォを割り当て、そのセマフォへのインデックス(セマフォID)を返す。 More... | |
新しいセマフォを作成する。
Definition in file semcreate.c.
未使用のセマフォIDを返す。
未使用セマフォを探索し、そのセマフォへのインデックス(セマフォID)を返す。
newsem()内で、次に確認すべきセマフォ(未使用セマフォ)へのインデックスを保持している。
未使用セマフォが見つかるまで、以下の処理を最大NSEM(セマフォ上限数)回ループして、セマフォテーブルの全探索を行う。
Step1. 前回調査したセマフォIDをインクリメントする。
Step2. 調査対象のセマフォIDがNSEMを超えていた場合、調査対象のセマフォIDを0とする。
Step3. 調査対象のセマフォIDが未使用状態であった場合、使用中に変更し、そのセマフォIDを返して処理を終了する。
Definition at line 49 of file semcreate.c.
References NSEM, S_FREE, S_USED, semtab, sentry::sstate, and SYSERR.
Referenced by semcreate().
未使用セマフォを割り当て、そのセマフォへのインデックス(セマフォID)を返す。
Step1. 割り込みを禁止する
Step2. セマフォカウント初期値が負の値、もしくは未使用のセマフォがない場合は、割り込みを許可状態に復元し、処理を終了する。
Step3. newsem()で取得したセマフォIDを用いて、セマフォテーブルからセマフォを取り出し、セマフォカウントの初期値を設定する。
Step4. 割り込みを許可状態に復元する。
[in] | count | セマフォカウントの初期値 |
Definition at line 22 of file semcreate.c.
References disable(), newsem(), restore(), sentry::scount, semtab, and SYSERR.
Referenced by ethinit(), lflinit(), lfsinit(), markinit(), mkbufpool(), net_init(), ptcreate(), rdsinit(), rfsinit(), and ttyinit().