Everything

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
正常終了