-
trcv_mbx
-
ER trcv_mbx ( ID mbxid, T_MSG **ppk_msg, TMO tmout );
|
|
|
|
|
ID mbxid;
|
|
|
T_MSG **ppk_msg;
|
メッセージの先頭アドレスを格納する領域へのポインタ
|
|
TMO tmout;
|
|
【 TA_MFIFO属性用メッセージT_MSGの構造 】
typedef struct t_msg {
struct t_msg *msgnext; /*システム予約領域*/
} T_MSG;
|
【 TA_MPRI属性用メッセージT_MSG_PRIの構造 】
typedef struct t_msg_pri {
struct t_msg msgque; /*システム予約領域*/
PRI msgpri; /*優先度*/
UH RFU; /*システム予約領域*/
} T_MSG_PRI;
|
mbxidで指定されたメールボックスからメッセージを受信し,その先頭アドレスを
ppk_msgで指定された領域に格納します。
ただし,本サービス・コールを発行した際,対象メールボックスからメッセージを受信することができなかった(待ちキューにメッセージがキューイングされていなかった)場合には,メッセージの受信は行わず,自タスクを対象メールボックスの待ちキューにキューイングしたのち,RUNNING状態からタイムアウト付きのWAITING状態(メッセージ受信待ち状態)へと遷移させます。
なお,メッセージ受信待ち状態の解除は,以下の場合に行われ,メッセージ受信待ち状態からREADY状態へと遷移します。
|
|
snd_mbxの発行により,対象メールボックスにメッセージが送信された
|
|
|
|
rel_waiの発行により,メッセージ受信待ち状態を強制的に解除された
|
|
|
|
|
|
備考1 自タスクを対象メールボックスの待ちキューにキューイングする際のキューイング方式は,コンフィギュレーション時に定義された順(FIFO順,優先度順)に行われます。
備考2
rel_wai,または
irel_waiの発行,または待ち時間の経過によりメッセージ受信待ち状態を解除された場合,
ppk_msgで指定された領域の内容は不定となります。
|
|
|
|
|
|
|
|
待ち時間の指定が不正( tmout<TMO_FEVR)である
|
|
|
- mbxid>生成されているメールボックスの最大ID
|
|
|
- CPUロック状態から本サービス・コールを発行した
- ディスパッチ禁止状態から本サービス・コールを発行した
|
|
|
|
|
|
|
|
|
|