-
tsnd_mbf
-
Send to message buffer (with time-out).
ER tsnd_mbf (ID mbfid, VP msg, UINT msgsz, TMO tmout);
|
|
|
|
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).
|
|
TMO tmout;
|
Specified time-out (in millisecond).
Value: Specified time-out.
|
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 with time (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.
|
|
The time specified by tmout has elapsed.
|
|
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.
Note 3
TMO_FEVR is specified for wait time
tmout, processing equivalent to
snd_mbf will be executed. When
TMO_POL is specified, processing equivalent to
psnd_mbf will be executed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 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".
|
|
|
Forced release from the WAITING state.
|
|
|
Polling failure or specified time has elapsed.
|
|
|
Released from WAITING state by the object reset ( vrst_mbf)
|