-
snd_mbx
-
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
|
mbxidで指定されたメールボックスに
pk_msgで指定されたメッセージを送信(待ちキューにメッセージをキューイング)します。
ただし,本サービス・コールを発行した際,対象メールボックスの待ちキューにタスクがキューイングされていた場合には,メッセージのキューイング処理は実行されず,該当タスク(待ちキューの先頭タスク)にメッセージが渡されます。
これにより,該当タスクは,待ちキューから外れ,WAITING状態(メッセージ待ち状態)からREADY状態へ,またはWAITING-SUSPENDED状態からSUSPENDED状態へと遷移します。
備考1 本サービス・コールを発行した際,待ちキューの先頭タスクがREADY状態へと遷移する場合は,該当タスクの優先度に対応したレディ・キューの最後尾にキューイングし直す処理もあわせて実行されます。
備考2 メッセージを対象メールボックスの待ちキューにキューイングする際のキューイング方式は,コンフィギュレーション時に
属性(キューイング方式)mbxatrで定義された順(FIFO順,優先度順)となります。
備考3 RI78V4のメールボックスは,メッセージの先頭アドレスを受信側処理プログラムに渡すだけであり,メッセージの内容が他領域にコピーされるわけではありません。したがって,本サービス・コールの発行後であってもメッセージの内容を書き換えることができます。