MsgCurrent(), MsgCurrent_r()

Resume processing of a message

Synopsis:

int MsgCurrent( int rcvid );

int MsgCurrent_r( int rcvid );

Arguments:

rcvid
The receive ID that MsgReceive*() returned when you received the message.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The MsgCurrent() and MsgCurrent_r() kernel calls announce to the kernel that you are resuming the processing of a previously received message. These functions are identical except in the way they indicate errors. See the Returns section for details. The kernel checks that the thread identified by rcvid is still valid and is reply-blocked on the connection associated with that rcvid.

If the channel doesn't have _NTO_CHF_FIXED_PRIORITY set in its flags, then the appropriate priority adjustment will be made to the calling thread's priority.

Blocking states

None. If priority inheritance causes the priority of the calling thread to drop, other threads may run.

Returns:

The only difference between the MsgCurrent() and MsgCurrent_r() functions is the way they indicate errors:

MsgCurrent()
If an error occurs, -1 is returned and errno is set; otherwise, 0 is returned.
MsgCurrent_r()
The number of bytes read. This function does NOT set errno. If an error occurs, the value from the Errors section is returned, otherwise 0 is returned.

Errors:

ESRCH
The thread associated with the rcvid is not in either STATE_REPLY or STATE_NET_REPLY, or it is not blocked on the connection associated with the rcvid.

Classification:

QNX Neutrino

Safety:
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes

See also:

MsgSendnc(), MsgSendPulse(), MsgSendsv(), MsgSendsvnc(), MsgSendv(), MsgSendvnc(), MsgSendvs(), MsgSendvsnc()