_msg_info

Updated: April 19, 2023

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.

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