-
psnd_mbf
ipsnd_mbf
-
Send to message buffer (polling).
ER psnd_mbf (ID mbfid, VP msg, UINT msgsz);
ER ipsnd_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).
|
These service calls process 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.
These service calls return "E_TMOUT".
Note Message is written to the message buffer area in the order of the message transmission request.
|
|
|
|
|
|
|
|
- msgsz > (Maximum message size specified at creation)
|
|
|
|
|
|
- This service call was issued in the CPU locked state.
- The ipsnd_mbf was issued from task.
- The psnd_mbf was issued from non-task.
- This service call was issued in the status "PSW.IPL > kernel interrupt mask level".
|
|
|
Memory access violation. (only for psnd_mbf)
- 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.
|
|
|
|