unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (OSF1-V5.1-alpha)
Page:
Section:
Apropos / Subsearch:
optional field



msqid_ds(4)							  msqid_ds(4)



NAME

  msqid_ds - Defines a message queue

SYNOPSIS

  #include <&lt;sys/msg.h>&gt;

  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 indi-
  cates	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)