Information about a message
Synopsis:
#include <sys/neutrino.h>
struct _msg_info32 { /* _msg_info _server_info */
uint32_t nd; /* client server */
uint32_t srcnd; /* server n/a */
pid_t pid; /* client server */
int32_t tid; /* thread n/a */
int32_t chid; /* server server */
int32_t scoid; /* server server */
int32_t coid; /* client client */
ssize32_t msglen; /* msg n/a */
ssize32_t srcmsglen; /* thread n/a */
ssize32_t dstmsglen; /* thread n/a */
int16_t priority; /* thread n/a */
int16_t flags; /* n/a client */
uint32_t type_id; /* client server channel */
};
struct _msg_info64 { /* _msg_info _server_info */
uint32_t nd; /* client server */
uint32_t srcnd; /* server n/a */
pid_t pid; /* client server */
int32_t tid; /* thread n/a */
int32_t chid; /* server server */
int32_t scoid; /* server server */
int32_t coid; /* client client */
int16_t priority; /* thread n/a */
int16_t flags; /* n/a client */
ssize64_t msglen; /* msg n/a */
ssize64_t srcmsglen; /* thread n/a */
ssize64_t dstmsglen; /* thread n/a */
uint32_t type_id; /* client server channel */
uint32_t reserved;
};
#if __PTR_BITS__ <= 32
#define _msg_info _msg_info32
#else
#define _msg_info _msg_info64
#endif
#define _server_info32 _msg_info32
#define _server_info64 _msg_info64
#define _server_info _msg_info
Description:
The _msg_info structure contains information about a message.
The members include:
- nd
- The node descriptor of the client machine as viewed by the server.
See
Node descriptors,
below.
- srcnd
- The node descriptor of the server, as viewed by the client.
- pid
- The process ID of the sending thread.
- tid
- The thread ID of the sending thread.
- chid
- The channel ID that the message was received on.
- scoid
- The server connection ID.
This is a unique server-side client process identifier, corresponding to
a particular process ID on a particular node.
- coid
- The client connection ID.
- msglen
- The number of bytes received.
- srcmsglen
- The length of the source message, in bytes, as sent by MsgSend*().
This may be greater than the value in msglen.
- dstmsglen
- The length of the client's reply buffer, in bytes, as passed to MsgSend*().
- priority
- The priority of the sending thread.
- flags
- Flags that provide information about the sender and message:
- _NTO_MI_BITS_64 (QNX Neutrino 7.0 or later) — the sender is using a 64-bit architecture.
- _NTO_MI_BITS_DIFF (QNX Neutrino 7.0 or later) — the sender and receiver are using
different word-size architectures
(e.g, the sender is using a 32-bit architecture, and the receiver is using a 64-bit architecture).
- _NTO_MI_CHROOT (QNX Neutrino 7.0 or later) —
chroot()
has been applied to the client process.
- _NTO_MI_CONSTRAINED (QNX Neutrino 6.6 or later) — the message was
received from a resource-constrained client.
A thread that allocates resource on behalf of a constrained client should temporarily constrain itself too; see
Resource constraint thresholds
in the Processes chapter of the QNX Neutrino Programmer's Guide.
- _NTO_MI_ENDIAN_BIG — the sending machine is big endian.
- _NTO_MI_ENDIAN_DIFF — the sending machine has
a different endian-ness from the receiving machine.
- _NTO_MI_NET_CRED_DIRTY — used internally.
- _NTO_MI_SANDBOX (QNX Neutrino 7.0 or later) — the client process has been
constrained to a sandbox.
- _NTO_MI_UNBLOCK_REQ — the client has an unblock pending
(i.e., a timeout on the send occurred or a signal was delivered and
_NTO_CHF_UNBLOCK is set on the channel).
- type_id
- The type identifier of the process that sent the message.
Note:
The msglen and srcmsglen members are
valid only until the next call to MsgRead*() or MsgWrite*().
If msglen is less than srcmsglen and is also less than
the receive buffer size, the message is a network transaction that requires
more reading of data with MsgRead*().
Node descriptors
The nd (node descriptor) is a temporary numeric description
of a remote node; ND_LOCAL_NODE (or 0) is the descriptor for
the local node.
For more information, see the
Qnet Networking
chapter of the System Architecture guide.