Unblock a client and set its errno
#include <sys/neutrino.h> int MsgError( int rcvid, int error ); int MsgError_r( int rcvid, int error );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The MsgError() and MsgError_r() kernel calls unblock the client's MsgSend*() call and set the client's errno to error. No data is transferred.
If error is EOK, the MsgSend*() call returns EOK; if error is any other value, the MsgSend*() call returns -1.
These functions are identical except in the way they indicate errors. See the Returns section for details.
An error number of ERESTART causes the sender to immediately call MsgSend*() again. Since send and reply buffers passed to MsgSend() may overlap, you shouldn't use ERESTART after a call to MsgWrite(). |
None. In the network case, lower priority threads may run.
MsgError() has increased latency when you use it to communicate across a network — the server is now writing the error code to its local lsm-qnet.so, which may need to communicate with the client's lsm-qnet.so to actually transfer the error code.
The only difference between these functions is the way they indicate errors:
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
ChannelCreate(), MsgRead(), MsgReadv(), MsgReceive(), MsgReceivev(), MsgSend(), MsgSendv()
Message Passing chapter of Getting Started with QNX Neutrino