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