-
rcv_mbx
-
ER rcv_mbx ( ID mbxid, T_MSG **ppk_msg );
|
|
|
|
ID mbxid;
|
|
|
T_MSG **ppk_msg;
|
メッセージの先頭アドレスを格納する領域へのポインタ
|
【 TA_MFIFO属性用メッセージT_MSGの構造 】
typedef struct {
VP *msghead; /*RI600PX管理領域*/
} T_MSG;
|
【 TA_MPRI属性用メッセージT_MSG_PRIの構造 】
typedef struct {
T_MSG msgque; /* メッセージヘッダ*/
PRI msgpri; /* メッセージ優先度 */
} T_MSG_PRI;
|
mbxidで指定されたメールボックスからメッセージを受信し,その先頭アドレスを
ppk_msgで指定された領域に格納します。
ただし,本サービス・コールを発行した際,対象メールボックスからメッセージを受信することができなかった(待ちキューにメッセージがキューイングされていなかった)場合には,メッセージの受信は行わず,自タスクを対象メールボックスの待ちキューにキューイングしたのち,RUNNING状態からWAITING状態(メッセージ受信待ち状態)へと遷移させます。
なお,メッセージ受信待ち状態の解除は,以下の場合に行われます。
|
|
snd_mbxの発行により,対象メールボックスにメッセージが送信された。
|
|
|
|
|
|
|
|
|
|
備考 自タスクを対象メールボックスの待ちキューにキューイングする際のキューイング方式は,
メールボックスの生成時に指定した順(FIFO順または現在優先度順)に行われます。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- CPUロック状態から本サービス・コールを発行した。
- ディスパッチ禁止状態から本サービス・コールを発行した。
- 「PSW.IPL > カーネル割り込みマスクレベル」の状態から本サービス・コールを発行した。
|
|
|
- スタック・ポインタが呼出しタスクのユーザ・スタック領域の範囲外を指している。
- 呼び出しタスクからの ppk_msgが示す領域に対するオペランド・ライト・アクセス許可がない。
|
|
|
|
|
|
|
|
|
|