XINU
ptreset.c
Go to the documentation of this file.
1 
6 /* ptreset.c - ptreset */
7 
8 #include <xinu.h>
9 
21 syscall ptreset(int32 portid, int32 (*disp)(int32))
22 {
23  intmask mask; /* Saved interrupt mask */
24  struct ptentry *ptptr; /* Pointer to port table entry */
25 
26  mask = disable();
27  if (isbadport(portid) ||
28  (ptptr = &porttab[portid])->ptstate != PT_ALLOC)
29  {
30  restore(mask);
31  return SYSERR;
32  }
33  _ptclear(ptptr, PT_ALLOC, disp);
34  restore(mask);
35  return OK;
36 }
void _ptclear(struct ptentry *, uint16, int32(*)(int32))
ポートを用いたメッセージと待機中プロセスを解放する。
Definition: ptclear.c:24
void restore(intmask)
ポートテーブルエントリ
Definition: ports.h:33
#define isbadport(portid)
ポートIDが不正値かどうかを確認する。
Definition: ports.h:64
全てのシステムヘッダファイルをインクルードする。
#define SYSERR
処理が失敗した場合
Definition: kernel.h:79
#define PT_ALLOC
ポートが割り当てられた
Definition: ports.h:15
syscall ptreset(int32 portid, int32(*disp)(int32))
ポートをリセットを行う。
Definition: ptreset.c:21
#define OK
処理が成功した場合
Definition: kernel.h:77
struct ptentry porttab[]
ポートテーブルエントリのextern宣言
Definition: ptinit.c:10
uint16 ptstate
ポート状態(FREE/LIMBO/ALLOC)
Definition: ports.h:40
uint32 intmask
保存された割り込みマスク
Definition: kernel.h:38
int int32
符号あり32ビット整数(int)
Definition: kernel.h:11
int32 syscall
システムコール関数 返り値の型
Definition: kernel.h:47
intmask disable(void)
割り込み禁止(intr.Sに定義がある)