The kernel stores each message in the queue within the framework of the msg structure. It is defined for us in linux/msg.h as follows:
/* one msg structure for each message */ struct msg { struct msg *msg_next; /* next message on queue */ long msg_type; char *msg_spot; /* message text address */ short msg_ts; /* message text size */ };
This is a pointer to the next message in the queue. They are stored as a singly linked list within kernel addressing space.
This is the message type, as assigned in the user structure msgbuf.
A pointer to the beginning of the message body.
The length of the message text, or body.