-
snd_mbf
-
Send to message buffer (waiting forever).
ER tsnd_mbf (ID mbfid, VP msg, UINT msgsz);
|
|
|
|
ID mbfid;
|
ID number of the message buffer.
|
|
VP msg;
|
Pointer to the message to be sent.
|
|
UINT msgsz;
|
Message size to be sent (in bytes).
|
This service call processes as follows according to the situation of the message buffer specified by the parameter
mbfid.
- There is a task in the reception wait queue.
This service call transfers the message specified by parameter
msg to the task in the top of the reception wait queue. As a result, the task is unlinked from the reception wait queue and moves from the WAITING state (message reception wait state) to the READY state, or from the WAITING-SUSPENDED state to the SUSPENDED state.
- There is no task neither in the reception wait queue and transmission wait queue and there is available space in the message buffer.
This service call stores the message specified by parameter
msg to the message buffer. As a result, the size of available space in the target message buffer decreases by the amount calculated by the following expression.
- There is no task neither in the reception wait queue and transmission wait queue and there is no available space in the message buffer, or there is a task in the transmission wait queue.
This service call queues the invoking task to the transmission wait queue of the target message buffer and moves it from the RUNNING state to the WAITING state (message transmission wait state).
The sending WAITING state for a message buffer is cancelled in the following cases.
Sending WAITING State for a Message Buffer Cancel Operation
|
|
Available space was secured in the message buffer area as a result of issuing rcv_mbf.
|
|
Available space was secured in the message buffer area as a result of issuing prcv_mbf.
|
|
Available space was secured in the message buffer area as a result of issuing trcv_mbf.
|
|
The task at the top of the transmission wait queue was forcedly released from waiting by following either.
- Forced release from waiting (accept rel_wai while waiting).
- Forced release from waiting (accept irel_wai while waiting).
- Forced release from waiting (accept ter_tsk while waiting).
- The time specified by tmout for tsnd_mbf has elapsed.
|
|
Forced release from waiting (accept rel_wai while waiting).
|
|
Forced release from waiting (accept irel_wai while waiting).
|
|
The message buffer is reset as a result of issuing vrst_mbf.
|
|
Forced release from waiting (accept del_mbf while waiting).
|
|
Note 1 Message is written to the message buffer area in the order of the message transmission request.
Note 2 Invoking tasks are queued to the transmission wait queue of the target message buffer in the FIFO order.
|
|
|
|
|
|
|
|
- msgsz > (Maximum message size specified at creation)
|
|
|
|
|
|
- This service call was issued from a non-task.
- This service call was issued in the CPU locked state.
- This service call was issued in the dispatching disabled state.
- This service call was issued in the status "PSW.IPL > kernel interrupt mask level".
|
|
|
- Stack pointer points out of user stack for invoking task.
- The operand-read access to the area indicated by msg (start : msg, size : msgsz) has not been permitted to the invoking task.
|
|
|
- The message buffer specified by mbfid does not exist.
|
|
|
Forced release from the WAITING state.
|
|
|
|
|
|
Released from WAITING state by the object reset ( vrst_mbf)
|