_msg_info
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).
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.