snd_mbx

Outline

Send to mailbox.

C format

 ER      snd_mbx ( ID mbxid, T_MSG *pk_msg );


Assembly format

 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


Parameter(s)

I/O

Parameter

Description

I

 ID      mbxid;
ID number of the mailbox to which the message is sent.

I

 T_MSG   *pk_msg;
Start address of the message packet to be sent to the mailbox.



Explanation

This service call transmits the message specified by parameter pk_msg to the mailbox specified by parameter mbxid (queues the message in the wait queue).

If a task is queued to the target mailbox wait queue when this service call is issued, the message is not queued but handed over to the relevant task (first task of the wait queue).

As a result, the relevant task is unlinked from the wait queue and is moved from the WAITING state (receiving waiting for a mailbox) to the READY state, or from the WAITING-SUSPENDED state to the SUSPENDED state.

Note 1 If the first task of the wait queue is moved to the READY state after this service call is issued, this service call also re-queues the task at the end of the ready queue corresponding to the priority of the task.

Note 2 Messages are queued to the target mailbox wait queue in the order defined by Attribute (queuing method): mbxatr during configuration (FIFO order or priority order).

Note 3 With the RI78V4 mailbox, only the start address of the message is handed over to the receiving processing program, but the message contents are not copied to a separate area. The message contents can therefore be rewritten even after this service call is issued.

Note 4 For details about the message packet, refer to "12.5.5 Message packet".

Return value

Macro

Value

Description

E_OK

0

Normal completion.