resmgr_msgreadv()
QNX SDP8.0C Library ReferenceAPIDeveloper
Read a message from a client
Synopsis:
#include <sys/iofunc.h>
#include <sys/resmgr.h>
ssize_t resmgr_msgreadv( resmgr_context_t * ctp,
iov_t * rmsg,
int rparts,
size_t offset );
Arguments:
- ctp
- A pointer to a resmgr_context_t structure that the resource-manager library uses to pass context information between functions. This function extracts the rcvid from this structure.
- rmsg
- An array of buffers where the functions can store the data.
- rparts
- The number of elements in the rmsg array.
- offset
- An offset into the thread's send message that indicates where you want to start reading the data.
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
This resmgr_msgreadv() function is a convenience function that you can use in a resource manager instead of MsgReadv(). However, for efficiency, you should use resmgr_msggetv() instead.
You'll use resmgr_msgreadv() when handling combine messages,
where the offset of the rest of the message that is to be read is additionally offset by
previous combine message elements.
For more information, see
Layers in a resource manager
in the Bones of a Resource Manager chapter of Writing a Resource Manager.
Returns:
The same values as MsgReadv(): the number of bytes read, or -1 if an error occurs (errno is set).
Errors:
- EFAULT
- A fault occurred in a server's address space when it tried to access the caller's message buffers.
- EOVERFLOW
- The sum of the IOV lengths exceeds SSIZE_MAX, or the number of parts exceeds 524288.
- ESRCH
- The thread indicated by ctp->rcvid doesn't exist or has had its connection detached.
- ESRVRFAULT
- A fault occurred when the kernel tried to access the buffers provided.
Classification:
Safety: | |
---|---|
Cancellation point | No |
Signal handler | Yes |
Thread | Yes |
Page updated: