Information about a message
Synopsis:
#include <sys/neutrino.h>
struct _msg_info { /* _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 */
int32_t msglen; /* msg n/a */
int32_t srcmsglen; /* thread n/a */
int32_t dstmsglen; /* thread n/a */
int16_t priority; /* thread n/a */
int16_t flags; /* n/a client */
uint32_t reserved;
};
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.
This member is valid only if you set _NTO_CHF_SENDER_LEN in
the flags argument to
ChannelCreate()
for the channel that received the message.
- dstmsglen
- The length of the client's reply buffer, in bytes, as passed to
MsgSend*().
This member is valid only if you set _NTO_CHF_REPLY_LEN in
the flags argument to
ChannelCreate()
for the channel that received the message.
- priority
- The priority of the sending thread.
- flags
- Flags that provide information about the sender and message:
- _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_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).
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.