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() kernel call announces to the kernel that you are resuming the processing of a previously received message. 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. If you call MsgCurrent() on the rcvid pertaining to a low-priority client, then the priority boost given to your thread by a blocked high-priority thread can be lost.
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:
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |