resmgr_msgwrite()

Updated: April 19, 2023

Write a message to a client

Synopsis:

#include <sys/iofunc.h>
#include <sys/resmgr.h>

ssize_t resmgr_msgwrite( resmgr_context_t *ctp,
                         const 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 that contains the data you want to write.
size
The number of bytes that you want to write. This function doesn't let you write past the end of the sender's buffer; it returns the number of bytes actually written.
offset
An offset into the sender's buffer that indicates where you want to start writing 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_msgwrite() function is a cover for MsgWrite() and performs the exact same functionality.

Note: As a client may have overlapping send and reply buffers, you must complete all MsgRead*() operations from a particular send (i.e. particular rcvid) before initiating any MsgWrite*() operations to that client.

Returns:

The same values as MsgWrite(); the number of bytes written, or -1 if an error occurs (errno is set).

Errors:

EFAULT
A fault occurred in the sender's address space when a server tried to access the sender's return message buffer.
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:

QNX Neutrino

Safety:  
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes