Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ msqid_ds(4) — Tru64 UNIX 5.1b

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

msgctl(2)

msgget(2)

msgrcv(2)

msgsnd(2)

msqid_ds(4)  —  File Formats

NAME

msqid_ds − Defines a message queue

SYNOPSIS

#include <sys/msg.h>
struct msqid_ds(
        struct ipc_perm msg_perm,
        struct msg ∗msg_first,
        struct msg ∗msg_last,
        u_short msg_cbytes,
        u_short msg_qnum,
        u_short msg_qbytes,
        u_short msg_lspid,
        ushort msg_lrpid,
        time_t msg_stime,
        time_t msg_rtime,
        time_t msg_ctime );

DESCRIPTION

The msqid_ds structure defines a message queue associated with a message queue ID. There is one queue per message queue ID.  Collectively, the queues are stored as an array, with message queue IDs serving as an index into the array. 

A message queue is implemented as a linked list of messages, with msg_first amd msg_last pointing to the first and last messages on the queue. 

The IPC permissions for the message queue are implemented in a separate, but associated, ipc_perm structure. 

A message queue is created indirectly by the msgget() call.  If msgget() is called with a non-existent message queue ID, the kernel allocates a new msqid_ds structure, initializes it, and returns the message queue ID that is to be associated with the message queue. 

The following sections describe the fields in the msqid_ds structure and show the ipc_perm structure identified by the msg_perm field. 

FIELDS

msg_perm
The ipc_perm structure that defines permissions for message operations. 

msg_first
A pointer to the first message on the queue.

msg_last
A pointer to the last message on the queue.

msg_cbytes
The current number of bytes on the queue.

msg_qnum
The number of messages currently on the queue.

msg_qbytes
The maximum number of bytes allowed on the queue.

msg_lspid
The process ID of the last process that called msgsnd() for the queue. 

msg_lrpid
The process ID of the last process that called msgrcv() for the queue. 

msg_stime
The time of the last msgsnd() operation. 

msg_rtime
The time of the last msgrcv() operation. 

msg_ctime
The time of the last msgctl() operation that changed a member of the ipc_perm structure designated by the msg_perm field. 

THE IPC_PERM STRUCTURE

The msg_perm field identifies the associated ipc_perm structure that defines the permissions for operations on the message queue.  The ipc_perm structure (defined in the sys/ipc.h header file) is as follows:

struct ipc_perm {
      ushort    uid;      /∗ owner’s user id            ∗/
      ushort    gid;      /∗ owner’s group id           ∗/
      ushort    cuid;     /∗ creator’s user id          ∗/
      ushort    cgid;     /∗ creator’s group id         ∗/
      ushort    mode;     /∗ access modes               ∗/
      ushort    seq;      /∗ slot usage sequence number ∗/
      key_t     key;      /∗ key                        ∗/
};

The mode field of the ipc_perm structure is a 9-bit field that contains the permissions for message operations.  The first three bits identify owner permissions; the second three bits identify group permissions; and the last three bits identify other permissions.  In each group, the first bit indicates read permission; the second bit indicates write permission; and the third bit is not used. 

SEE ALSO

Functions: msgctl(2), msgget(2), msgrcv(2), msgsnd(2)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026