XINU
system
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
}
_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
ptreset
syscall ptreset(int32 portid, int32(*disp)(int32))
ポートをリセットを行う。
Definition:
ptreset.c:21
OK
#define OK
処理が成功した場合
Definition:
kernel.h:77
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
syscall
int32 syscall
システムコール関数 返り値の型
Definition:
kernel.h:47
disable
intmask disable(void)
割り込み禁止(intr.Sに定義がある)
Generated by
1.8.13