MsgError(), MsgError_r()
Unblock a client and set its errno
Synopsis:
#include <sys/neutrino.h> int MsgError( int rcvid, int error ); int MsgError_r( int rcvid, int error );
Arguments:
- rcvid
- The receive ID that MsgReceive*() returned.
- error
- The error code that you want to set for the client.
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
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().
Blocking states
None. In the network case, lower priority threads may run.
Returns:
The only difference between these functions is the way they indicate errors:
- MsgError()
- If an error occurs, the function returns -1 and and sets errno. Any other value returned indicates success.
- MsgError_r()
- Returns EOK on success. This function does NOT set errno. If an error occurs, the function returns one of the values listed in the Errors section.
Errors:
- ESRCH
- The thread indicated by rcvid doesn't exist.
Classification:
| Safety: | |
|---|---|
| Cancellation point | No |
| Interrupt handler | No |
| Signal handler | Yes |
| Thread | Yes |