msqid_ds(4)msqid_ds(4)NAMEmsqid_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 mes‐
sage 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 sepa‐
rate, 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
The ipc_perm structure that defines permissions for message operations.
A pointer to the first message on the queue. A pointer to the last
message on the queue. The current number of bytes on the queue. The
number of messages currently on the queue. The maximum number of bytes
allowed on the queue. The process ID of the last process that called
msgsnd() for the queue. The process ID of the last process that called
msgrcv() for the queue. The time of the last msgsnd() operation. The
time of the last msgrcv() operation. 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 fol‐
lows:
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)msqid_ds(4)