XINU
system
receive.c
Go to the documentation of this file.
1
5
#include <
xinu.h
>
6
17
umsg32
receive
(
void
)
18
{
19
intmask
mask;
/* Saved interrupt mask */
20
struct
procent
*prptr;
/* Ptr to process's table entry */
21
umsg32
msg;
/* Message to return */
22
23
mask =
disable
();
24
prptr = &
proctab
[
currpid
];
25
if
(prptr->
prhasmsg
==
FALSE
)
26
{
27
prptr->
prstate
=
PR_RECV
;
28
resched
();
/* Block until message arrives */
29
}
30
msg = prptr->
prmsg
;
/* Retrieve message */
31
prptr->
prhasmsg
=
FALSE
;
/* Reset message flag */
32
restore
(mask);
33
return
msg;
34
}
currpid
pid32 currpid
現在実行中のプロセス。
Definition:
initialize.c:32
restore
void restore(intmask)
xinu.h
全てのシステムヘッダファイルをインクルードする。
receive
umsg32 receive(void)
メッセージの受信を待ち、受信後にreceive()の呼び出し者にメッセージを返す。
Definition:
receive.c:17
PR_RECV
#define PR_RECV
プロセスがメッセージで待機中の状態。
Definition:
process.h:41
umsg32
uint32 umsg32
プロセス間で渡されるメッセージ
Definition:
kernel.h:32
FALSE
#define FALSE
Boolean False(0)
Definition:
kernel.h:63
intmask
uint32 intmask
保存された割り込みマスク
Definition:
kernel.h:38
procent::prstate
uint16 prstate
プロセス状態(PR_CURR, ..., etc)。
Definition:
process.h:88
resched
void resched(void)
最優先の適切なプロセスにCPU実行権を渡す。
Definition:
resched.c:22
proctab
struct procent proctab[]
プロセステーブル。
Definition:
initialize.c:23
procent
プロセステーブル(32bitsの倍数)。
Definition:
process.h:85
procent::prhasmsg
bool8 prhasmsg
有効(Valid)メッセージの場合、非0となる。
Definition:
process.h:106
disable
intmask disable(void)
割り込み禁止(intr.Sに定義がある)
procent::prmsg
umsg32 prmsg
このプロセスに送信されたメッセージ。
Definition:
process.h:104
Generated by
1.8.13