psnd_dtq

ipsnd_dtq

Outline

Send to data queue (polling).

C format

 ER      psnd_dtq (ID dtqid, VP_INT data);
 ER      ipsnd_dtq (ID dtqid, VP_INT data);
Parameter(s)

I/O

Parameter

Description

I

 ID      dtqid;
ID number of the data queue.

I

 VP_INT  data;
Data element to be sent to the data queue.



Explanation

These service calls process as follows according to the situation of the data queue specified by the parameter dtqid.

- There is a task in the reception wait queue.
These service calls transfer the data specified by parameter data 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 (data 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 data queue.
These service calls store the data specified by parameter data to the data queue.


- There is no task neither in the reception wait queue and transmission wait queue and there is no available space in the data queue, or there is a task in the transmission wait queue.
These service calls return "E_TMOUT".


Note Data is written to the data queue area of the target data queue in the order of the data transmission request.

Return value

Macro

Value

Description

E_OK

0

Normal completion.

E_ID

-18

Invalid ID number.

- dtqid < 0

- dtqid > VTMAX_DTQ

E_CTX

-25

Context error.

- This service call was issued in the CPU locked state.

- The ipsnd_dtq was issued from task.

- The psnd_dtq was issued from non-task.

- This service call was issued in the status "PSW.IPL > kernel interrupt mask level".

E_MACV

-26

Memory access violation. (only for psnd_dtq)

- Stack pointer points out of user stack for invoking task.

E_NOEXS

-42

Non-existent object.

- The data queue specified by dtqid does not exist.

E_TMOUT

-50

Polling failure.