Read a message from a client
Synopsis:
#include <sys/iofunc.h>
#include <sys/resmgr.h>
ssize_t resmgr_msgread( resmgr_context_t * ctp,
void * msg,
size_t size,
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.
- msg
- A pointer to a buffer where the function can store the data.
- size
- The number of bytes that you want to read.
These functions don't let you read past the end of the thread's message;
they return the number of bytes actually read.
- 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:
The
resmgr_msgread() function is a convenience function that you can use in a
resource manager instead of MsgRead().
However, for efficiency, you should use resmgr_msgget() instead.
You'll use resmgr_msgread() when you handle combine messages, where the
offset of the rest of the message that's 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
MsgRead():
the number of bytes read, or -1 if an error occurs
(errno is set).
Errors:
- EDEADLK
- A deadlock occurred.
You can avoid a deadlock by setting the _NTO_CHF_MSG_PAUSING flag when you create
a channel; for more information, see
ChannelCreate()
and
MsgPause().
- EFAULT
- A fault occurred in a server's address space when the kernel tried to access the server's message buffers.
- ESRCH
- The thread indicated by ctp->rcvid doesn't exist, is no longer
REPLY-blocked on the channel, or the connection was detached.
- ESRVRFAULT
- A fault occurred when the kernel tried to access the buffers provided.
- ETIMEDOUT
- A kernel timeout unblocked the call. See
TimerTimeout().
Classification:
QNX Neutrino
Safety: |
|
Cancellation point |
No |
Interrupt handler |
No |
Signal handler |
Yes |
Thread |
Yes |