snd_mbx

概要

メッセージの送信

C言語形式

 ER      snd_mbx ( ID mbxid, T_MSG *pk_msg );
 

アセンブリ言語形式

 SUBW    SP, #0x06
 MOVW    [SP+0x02], AX
 MOVW    AX, BC
 MOVW    [SP+0x04], AX
 MOVW    AX, SP
 MOVW    BC, AX
 MOV     A, #mbxid
 CALL    !!_snd_mbx
 

パラメータ

I/O

パラメータ

説明

I

 ID      mbxid;
メールボックスのID

I

 T_MSG   *pk_msg;
メッセージを格納した領域へのポインタ

 

機能

mbxidで指定されたメールボックスにpk_msgで指定されたメッセージを送信(待ちキューにメッセージをキューイング)します。

ただし,本サービス・コールを発行した際,対象メールボックスの待ちキューにタスクがキューイングされていた場合には,メッセージのキューイング処理は実行されず,該当タスク(待ちキューの先頭タスク)にメッセージが渡されます。

これにより,該当タスクは,待ちキューから外れ,WAITING状態(メッセージ待ち状態)からREADY状態へ,またはWAITING-SUSPENDED状態からSUSPENDED状態へと遷移します。

備考1 本サービス・コールを発行した際,待ちキューの先頭タスクがREADY状態へと遷移する場合は,該当タスクの優先度に対応したレディ・キューの最後尾にキューイングし直す処理もあわせて実行されます。

備考2 メッセージを対象メールボックスの待ちキューにキューイングする際のキューイング方式は,コンフィギュレーション時に属性(キューイング方式)mbxatrで定義された順(FIFO順,優先度順)となります。

備考3 RI78V4のメールボックスは,メッセージの先頭アドレスを受信側処理プログラムに渡すだけであり,メッセージの内容が他領域にコピーされるわけではありません。したがって,本サービス・コールの発行後であってもメッセージの内容を書き換えることができます。

備考4 メッセージT_MSG,T_MSG_PRIについての詳細は,「12.5.5 メッセージ」を参照してください。

戻り値

マクロ

数値

意味

E_OK

0

正常終了