Write a reply
#include <sys/neutrino.h> int MsgWritev( int rcvid, const iov_t* iov, int parts, int offset ); int MsgWritev_r( int rcvid, const iov_t* iov, int parts, int offset );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The MsgWritev() and MsgWritev_r() kernel calls write data to the reply buffer of a thread identified by rcvid. The thread being written to must be in the REPLY-blocked state. Any thread in the receiving process is free to write to the reply message.
These functions are identical except in the way they indicate errors. See the Returns section for details.
The data transfer occurs immediately and your thread doesn't block. The state of the sending thread doesn't change.
You'll use this function in one of these situations:
To complete a message exchange, you must call MsgReply*(). The reply doesn't need to contain any data. If it does contain data, then the data is always written at offset zero in the destination thread's reply message buffer. This is a convenient way of writing the header once all of the information has been gathered.
A single call to MsgReply*() is always more efficient than calls to MsgWritev() followed by a call to MsgReply*().
None. In the network case, lower priority threads may run.
The only difference between the MsgWritev() and MsgWritev_r() functions is the way they indicate errors:
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
MsgRead(), MsgReadv(), MsgReceive(), MsgReceivev(), MsgReply(), MsgReplyv(), MsgWrite()
Message Passing chapter of Getting Started with QNX Neutrino