Information about a message


#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;


The _msg_info structure contains information about a message. The members include:

The node descriptor of the client machine as viewed by the server. See "Node descriptors," below.
The node descriptor of the server, as viewed by the client.
The process ID of the sending thread.
The thread ID of the sending thread.
The channel ID that the message was received on.
The server connection ID. This is a unique server-side client process identifier, corresponding to a particular process ID on a particular node.
The client connection ID.
The number of bytes received.
The length of the source message, in bytes, as sent by MsgSend*(). This may be greater than the value in msglen.
The length of the client's reply buffer, in bytes, as passed to MsgSend*().
The priority of the sending thread.
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()


QNX Neutrino