XINU
Functions
recvclr.c File Reference

受信メッセージをクリアし、待機している場合はメッセージを返す。 More...

#include <xinu.h>
Include dependency graph for recvclr.c:

Go to the source code of this file.

Functions

umsg32 recvclr (void)
 受信メッセージをクリアし、待機している場合はメッセージを返す。 More...
 

Detailed Description

受信メッセージをクリアし、待機している場合はメッセージを返す。

Definition in file recvclr.c.

Function Documentation

◆ recvclr()

umsg32 recvclr ( void  )

受信メッセージをクリアし、待機している場合はメッセージを返す。

Returns
現在のプロセスが有効なメッセージを持っている場合はその内容を返し、
現在のプロセスが有効なメッセージを持っていない場合はOKを返す。
Note
receive()と異なり、メッセージ受信を待ち続けず、即座にリターンする。

Definition at line 14 of file recvclr.c.

References currpid, disable(), FALSE, OK, procent::prhasmsg, procent::prmsg, proctab, restore(), and TRUE.

Referenced by arp_resolve(), icmp_recv(), main(), rdscontrol(), rdsread(), shell(), udp_recv(), and udp_recvaddr().

15 {
16  intmask mask; /* Saved interrupt mask */
17  struct procent *prptr; /* Ptr to process's table entry */
18  umsg32 msg; /* Message to return */
19 
20  mask = disable();
21  prptr = &proctab[currpid];
22  if (prptr->prhasmsg == TRUE)
23  {
24  msg = prptr->prmsg; /* Retrieve message */
25  prptr->prhasmsg = FALSE; /* Reset message flag */
26  }
27  else
28  {
29  msg = OK;
30  }
31  restore(mask);
32  return msg;
33 }
pid32 currpid
現在実行中のプロセス。
Definition: initialize.c:32
void restore(intmask)
#define OK
処理が成功した場合
Definition: kernel.h:77
uint32 umsg32
プロセス間で渡されるメッセージ
Definition: kernel.h:32
#define FALSE
Boolean False(0)
Definition: kernel.h:63
#define TRUE
Boolean True(1)
Definition: kernel.h:65
uint32 intmask
保存された割り込みマスク
Definition: kernel.h:38
struct procent proctab[]
プロセステーブル。
Definition: initialize.c:23
プロセステーブル(32bitsの倍数)。
Definition: process.h:85
bool8 prhasmsg
有効(Valid)メッセージの場合、非0となる。
Definition: process.h:106
intmask disable(void)
割り込み禁止(intr.Sに定義がある)
umsg32 prmsg
このプロセスに送信されたメッセージ。
Definition: process.h:104
Here is the call graph for this function:
Here is the caller graph for this function: