Next: Kernel ipc_perm structure
Up: Internal and User Data
Previous: Kernel msg structure
Each of the three types of IPC objects has an internal data structure which is maintained
by the kernel. For message queues, this is the msqid_ds structure. The kernel creates,
stores, and maintains an instance of this structure for every message queue created on the
system. It is defined in linux/msg.h as follows:
/* one msqid structure for each queue on the system */
struct msqid_ds {
struct ipc_perm msg_perm;
struct msg *msg_first; /* first message on queue */
struct msg *msg_last; /* last message in queue */
time_t msg_stime; /* last msgsnd time */
time_t msg_rtime; /* last msgrcv time */
time_t msg_ctime; /* last change time */
struct wait_queue *wwait;
struct wait_queue *rwait;
ushort msg_cbytes;
ushort msg_qnum;
ushort msg_qbytes; /* max number of bytes on queue */
ushort msg_lspid; /* pid of last msgsnd */
ushort msg_lrpid; /* last receive pid */
};
While you will rarely have to concern yourself with most of the members of this structure, a brief
description of each is in order to complete our tour:
- msg_perm
-
An instance of the ipc_perm structure, which is defined
for us in linux/ipc.h. This holds the permission information for
the message queue, including the access permissions, and information
about the creator of the queue (uid, etc).
- msg_first
-
Link to the first message in the queue (the head of the list).
- msg_last
-
Link to the last message in the queue (the tail of the list).
- msg_stime
-
Timestamp (time_t) of the last message that was sent to the queue.
- msg_rtime
-
Timestamp of the last message retrieved from the queue.
- msg_ctime
-
Timestamp of the last ``change'' made to the queue (more on this later).
- wwait
-
and
- rwait
-
Pointers into the kernel's wait queue. They are
used when an operation on a message queue deems the process go into a sleep
state (i.e. queue is full and the process is waiting for an opening).
- msg_cbytes
-
Total number of bytes residing on the queue (sum of the sizes of all messages).
- msg_qnum
-
Number of messages currently in the queue.
- msg_qbytes
-
Maximum number of bytes on the queue.
- msg_lspid
-
The PID of the process who sent the last message.
- msg_lrpid
-
The PID of the process who retrieved the last message.
Next: Kernel ipc_perm structure
Up: Internal and User Data
Previous: Kernel msg structure
Converted on:
Fri Mar 29 14:43:04 EST 1996
|