_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.
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_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_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_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.

To: Use this function:
Compare two nd objects ND_NODE_CMP()
Convert a nd to text netmgr_ndtostr()
Convert text to a nd netmgr_strtond()

Classification:

QNX Neutrino