Index Index for
Section 4
Index Alphabetical
listing for M
Bottom of page Bottom of
page

msqid_ds(4)

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)

Index Index for
Section 4
Index Alphabetical
listing for M
Top of page Top of
page