XINU
system
semcount.c
Go to the documentation of this file.
1
5
#include <
xinu.h
>
6
18
syscall
semcount
(
sid32
semid)
19
{
20
intmask
mask;
/* Saved interrupt mask */
21
int32
count;
/* Current sempahore count */
22
23
mask =
disable
();
24
25
if
(
isbadsem
(semid) ||
semtab
[semid].sstate ==
S_FREE
)
26
{
27
restore
(mask);
28
return
SYSERR
;
29
}
30
count =
semtab
[semid].
scount
;
31
restore
(mask);
32
return
count;
33
}
semcount
syscall semcount(sid32 semid)
セマフォのカウント値を返す。
Definition:
semcount.c:18
restore
void restore(intmask)
xinu.h
全てのシステムヘッダファイルをインクルードする。
SYSERR
#define SYSERR
処理が失敗した場合
Definition:
kernel.h:79
isbadsem
#define isbadsem(s)
セマフォIDが不適切かどうかを確認する。
Definition:
semaphore.h:40
intmask
uint32 intmask
保存された割り込みマスク
Definition:
kernel.h:38
int32
int int32
符号あり32ビット整数(int)
Definition:
kernel.h:11
syscall
int32 syscall
システムコール関数 返り値の型
Definition:
kernel.h:47
sentry::scount
int32 scount
セマフォカウント(負の値(-N)の場合は、キューにN個の待機プロセスがある。それ以外はキューが空である) ...
Definition:
semaphore.h:24
S_FREE
#define S_FREE
セマフォテーブルエントリが利用可能
Definition:
semaphore.h:11
sid32
int32 sid32
セマフォID
Definition:
kernel.h:22
semtab
struct sentry semtab[]
セマフォテーブルエントリのextern宣言
Definition:
initialize.c:25
disable
intmask disable(void)
割り込み禁止(intr.Sに定義がある)
Generated by
1.8.13