XINU
|
プロセスにメッセージを送信し、受信側が待機状態の場合はREADY状態にする。 More...
#include <xinu.h>
Go to the source code of this file.
Functions | |
syscall | send (pid32 pid, umsg32 msg) |
プロセスにメッセージを送信し、受信側が待機状態の場合はREADY状態にする。 More... | |
プロセスにメッセージを送信し、受信側が待機状態の場合はREADY状態にする。
Definition in file send.c.
プロセスにメッセージを送信し、受信側が待機状態の場合はREADY状態にする。
Step1. 割り込みを禁止する。
Step2. 引数で渡されたプロセスのIDが不正値の場合は、割り込みを許可状態に復元し、処理を終了する。
Step3. 受信側プロセスが過去のメッセージを未処理の場合は、割り込みを許可状態に復元し、処理を終了する。
Step4. メッセージを受信側プロセスに送信(セット)し、受信側プロセスのメッセージ所持フラグを有効化する。
Step5. 受信側プロセスが受信待ち状態の場合はREADY状態とし、
受信待ちかタイムアウト待ちの場合はプロセスの休眠状態を解除してからREADY状態に変更する。
Step6. 割り込みを許可状態に復元する。
[in] | pid | メッセージを受信するプロセスのID |
[in] | msg | メッセージ内容(整数かポインタ) |
Definition at line 21 of file send.c.
References disable(), isbadpid, OK, PR_RECTIM, PR_RECV, procent::prhasmsg, procent::prmsg, proctab, procent::prstate, ready(), restore(), SYSERR, TRUE, and unsleep().
Referenced by arp_in(), icmp_in(), kill(), rdsprocess(), and udp_in().