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