summaryrefslogtreecommitdiffstats
path: root/man7/mq_overview.7
diff options
context:
space:
mode:
Diffstat (limited to 'man7/mq_overview.7')
-rw-r--r--man7/mq_overview.7389
1 files changed, 0 insertions, 389 deletions
diff --git a/man7/mq_overview.7 b/man7/mq_overview.7
deleted file mode 100644
index 223f238..0000000
--- a/man7/mq_overview.7
+++ /dev/null
@@ -1,389 +0,0 @@
-'\" t
-.\" Copyright (C) 2006 Michael Kerrisk <mtk.manpages@gmail.com>
-.\"
-.\" SPDX-License-Identifier: Linux-man-pages-copyleft
-.\"
-.TH mq_overview 7 2023-10-31 "Linux man-pages 6.7"
-.SH NAME
-mq_overview \- overview of POSIX message queues
-.SH DESCRIPTION
-POSIX message queues allow processes to exchange data in
-the form of messages.
-This API is distinct from that provided by System V message queues
-.RB ( msgget (2),
-.BR msgsnd (2),
-.BR msgrcv (2),
-etc.), but provides similar functionality.
-.P
-Message queues are created and opened using
-.BR mq_open (3);
-this function returns a
-.I message queue descriptor
-.RI ( mqd_t ),
-which is used to refer to the open message queue in later calls.
-Each message queue is identified by a name of the form
-.IR /somename ;
-that is, a null-terminated string of up to
-.B NAME_MAX
-(i.e., 255) characters consisting of an initial slash,
-followed by one or more characters, none of which are slashes.
-Two processes can operate on the same queue by passing the same name to
-.BR mq_open (3).
-.P
-Messages are transferred to and from a queue using
-.BR mq_send (3)
-and
-.BR mq_receive (3).
-When a process has finished using the queue, it closes it using
-.BR mq_close (3),
-and when the queue is no longer required, it can be deleted using
-.BR mq_unlink (3).
-Queue attributes can be retrieved and (in some cases) modified using
-.BR mq_getattr (3)
-and
-.BR mq_setattr (3).
-A process can request asynchronous notification
-of the arrival of a message on a previously empty queue using
-.BR mq_notify (3).
-.P
-A message queue descriptor is a reference to an
-.I "open message queue description"
-(see
-.BR open (2)).
-After a
-.BR fork (2),
-a child inherits copies of its parent's message queue descriptors,
-and these descriptors refer to the same open message queue descriptions
-as the corresponding message queue descriptors in the parent.
-Corresponding message queue descriptors in the two processes share the flags
-.RI ( mq_flags )
-that are associated with the open message queue description.
-.P
-Each message has an associated
-.IR priority ,
-and messages are always delivered to the receiving process
-highest priority first.
-Message priorities range from 0 (low) to
-.I sysconf(_SC_MQ_PRIO_MAX)\ \-\ 1
-(high).
-On Linux,
-.I sysconf(_SC_MQ_PRIO_MAX)
-returns 32768, but POSIX.1 requires only that
-an implementation support at least priorities in the range 0 to 31;
-some implementations provide only this range.
-.P
-The remainder of this section describes some specific details
-of the Linux implementation of POSIX message queues.
-.SS Library interfaces and system calls
-In most cases the
-.BR mq_* ()
-library interfaces listed above are implemented
-on top of underlying system calls of the same name.
-Deviations from this scheme are indicated in the following table:
-.RS
-.TS
-lB lB
-l l.
-Library interface System call
-mq_close(3) close(2)
-mq_getattr(3) mq_getsetattr(2)
-mq_notify(3) mq_notify(2)
-mq_open(3) mq_open(2)
-mq_receive(3) mq_timedreceive(2)
-mq_send(3) mq_timedsend(2)
-mq_setattr(3) mq_getsetattr(2)
-mq_timedreceive(3) mq_timedreceive(2)
-mq_timedsend(3) mq_timedsend(2)
-mq_unlink(3) mq_unlink(2)
-.TE
-.RE
-.SS Versions
-POSIX message queues have been supported since Linux 2.6.6.
-glibc support has been provided since glibc 2.3.4.
-.SS Kernel configuration
-Support for POSIX message queues is configurable via the
-.B CONFIG_POSIX_MQUEUE
-kernel configuration option.
-This option is enabled by default.
-.SS Persistence
-POSIX message queues have kernel persistence:
-if not removed by
-.BR mq_unlink (3),
-a message queue will exist until the system is shut down.
-.SS Linking
-Programs using the POSIX message queue API must be compiled with
-.I cc \-lrt
-to link against the real-time library,
-.IR librt .
-.SS /proc interfaces
-The following interfaces can be used to limit the amount of
-kernel memory consumed by POSIX message queues and to set
-the default attributes for new message queues:
-.TP
-.IR /proc/sys/fs/mqueue/msg_default " (since Linux 3.5)"
-This file defines the value used for a new queue's
-.I mq_maxmsg
-setting when the queue is created with a call to
-.BR mq_open (3)
-where
-.I attr
-is specified as NULL.
-The default value for this file is 10.
-The minimum and maximum are as for
-.IR /proc/sys/fs/mqueue/msg_max .
-A new queue's default
-.I mq_maxmsg
-value will be the smaller of
-.I msg_default
-and
-.IR msg_max .
-Before Linux 2.6.28, the default
-.I mq_maxmsg
-was 10;
-from Linux 2.6.28 to Linux 3.4, the default was the value defined for the
-.I msg_max
-limit.
-.TP
-.I /proc/sys/fs/mqueue/msg_max
-This file can be used to view and change the ceiling value for the
-maximum number of messages in a queue.
-This value acts as a ceiling on the
-.I attr\->mq_maxmsg
-argument given to
-.BR mq_open (3).
-The default value for
-.I msg_max
-is 10.
-The minimum value is 1 (10 before Linux 2.6.28).
-The upper limit is
-.BR HARD_MSGMAX .
-The
-.I msg_max
-limit is ignored for privileged processes
-.RB ( CAP_SYS_RESOURCE ),
-but the
-.B HARD_MSGMAX
-ceiling is nevertheless imposed.
-.IP
-The definition of
-.B HARD_MSGMAX
-has changed across kernel versions:
-.RS
-.IP \[bu] 3
-Up to Linux 2.6.32:
-.I 131072\~/\~sizeof(void\~*)
-.IP \[bu]
-Linux 2.6.33 to Linux 3.4:
-.I (32768\~*\~sizeof(void\~*) / 4)
-.IP \[bu]
-Since Linux 3.5:
-.\" commit 5b5c4d1a1440e94994c73dddbad7be0676cd8b9a
-65,536
-.RE
-.TP
-.IR /proc/sys/fs/mqueue/msgsize_default " (since Linux 3.5)"
-This file defines the value used for a new queue's
-.I mq_msgsize
-setting when the queue is created with a call to
-.BR mq_open (3)
-where
-.I attr
-is specified as NULL.
-The default value for this file is 8192 (bytes).
-The minimum and maximum are as for
-.IR /proc/sys/fs/mqueue/msgsize_max .
-If
-.I msgsize_default
-exceeds
-.IR msgsize_max ,
-a new queue's default
-.I mq_msgsize
-value is capped to the
-.I msgsize_max
-limit.
-Before Linux 2.6.28, the default
-.I mq_msgsize
-was 8192;
-from Linux 2.6.28 to Linux 3.4, the default was the value defined for the
-.I msgsize_max
-limit.
-.TP
-.I /proc/sys/fs/mqueue/msgsize_max
-This file can be used to view and change the ceiling on the
-maximum message size.
-This value acts as a ceiling on the
-.I attr\->mq_msgsize
-argument given to
-.BR mq_open (3).
-The default value for
-.I msgsize_max
-is 8192 bytes.
-The minimum value is 128 (8192 before Linux 2.6.28).
-The upper limit for
-.I msgsize_max
-has varied across kernel versions:
-.RS
-.IP \[bu] 3
-Before Linux 2.6.28, the upper limit is
-.BR INT_MAX .
-.IP \[bu]
-From Linux 2.6.28 to Linux 3.4, the limit is 1,048,576.
-.IP \[bu]
-Since Linux 3.5, the limit is 16,777,216
-.RB ( HARD_MSGSIZEMAX ).
-.RE
-.IP
-The
-.I msgsize_max
-limit is ignored for privileged process
-.RB ( CAP_SYS_RESOURCE ),
-but, since Linux 3.5, the
-.B HARD_MSGSIZEMAX
-ceiling is enforced for privileged processes.
-.TP
-.I /proc/sys/fs/mqueue/queues_max
-This file can be used to view and change the system-wide limit on the
-number of message queues that can be created.
-The default value for
-.I queues_max
-is 256.
-No ceiling is imposed on the
-.I queues_max
-limit; privileged processes
-.RB ( CAP_SYS_RESOURCE )
-can exceed the limit (but see BUGS).
-.SS Resource limit
-The
-.B RLIMIT_MSGQUEUE
-resource limit, which places a limit on the amount of space
-that can be consumed by all of the message queues
-belonging to a process's real user ID, is described in
-.BR getrlimit (2).
-.SS Mounting the message queue filesystem
-On Linux, message queues are created in a virtual filesystem.
-(Other implementations may also provide such a feature,
-but the details are likely to differ.)
-This filesystem can be mounted (by the superuser) using the following
-commands:
-.P
-.in +4n
-.EX
-.RB "#" " mkdir /dev/mqueue"
-.RB "#" " mount \-t mqueue none /dev/mqueue"
-.EE
-.in
-.P
-The sticky bit is automatically enabled on the mount directory.
-.P
-After the filesystem has been mounted, the message queues on the system
-can be viewed and manipulated using the commands usually used for files
-(e.g.,
-.BR ls (1)
-and
-.BR rm (1)).
-.P
-The contents of each file in the directory consist of a single line
-containing information about the queue:
-.P
-.in +4n
-.EX
-.RB "$" " cat /dev/mqueue/mymq"
-QSIZE:129 NOTIFY:2 SIGNO:0 NOTIFY_PID:8260
-.EE
-.in
-.P
-These fields are as follows:
-.TP
-.B QSIZE
-Number of bytes of data in all messages in the queue (but see BUGS).
-.TP
-.B NOTIFY_PID
-If this is nonzero, then the process with this PID has used
-.BR mq_notify (3)
-to register for asynchronous message notification,
-and the remaining fields describe how notification occurs.
-.TP
-.B NOTIFY
-Notification method:
-0 is
-.BR SIGEV_SIGNAL ;
-1 is
-.BR SIGEV_NONE ;
-and
-2 is
-.BR SIGEV_THREAD .
-.TP
-.B SIGNO
-Signal number to be used for
-.BR SIGEV_SIGNAL .
-.SS Linux implementation of message queue descriptors
-On Linux, a message queue descriptor is actually a file descriptor.
-(POSIX does not require such an implementation.)
-This means that a message queue descriptor can be monitored using
-.BR select (2),
-.BR poll (2),
-or
-.BR epoll (7).
-This is not portable.
-.P
-The close-on-exec flag (see
-.BR open (2))
-is automatically set on the file descriptor returned by
-.BR mq_open (2).
-.SS IPC namespaces
-For a discussion of the interaction of POSIX message queue objects and
-IPC namespaces, see
-.BR ipc_namespaces (7).
-.SH NOTES
-System V message queues
-.RB ( msgget (2),
-.BR msgsnd (2),
-.BR msgrcv (2),
-etc.) are an older API for exchanging messages between processes.
-POSIX message queues provide a better designed interface than
-System V message queues;
-on the other hand POSIX message queues are less widely available
-(especially on older systems) than System V message queues.
-.P
-Linux does not currently (Linux 2.6.26) support the use of access control
-lists (ACLs) for POSIX message queues.
-.SH BUGS
-Since Linux 3.5 to Linux 3.14, the kernel imposed a ceiling of 1024
-.RB ( HARD_QUEUESMAX )
-on the value to which the
-.I queues_max
-limit could be raised,
-and the ceiling was enforced even for privileged processes.
-This ceiling value was removed in Linux 3.14,
-and patches to stable Linux 3.5.x to Linux 3.13.x also removed the ceiling.
-.P
-As originally implemented (and documented),
-the QSIZE field displayed the total number of (user-supplied)
-bytes in all messages in the message queue.
-Some changes in Linux 3.5
-.\" commit d6629859b36d
-inadvertently changed the behavior,
-so that this field also included a count of kernel overhead bytes
-used to store the messages in the queue.
-This behavioral regression was rectified in Linux 4.2
-.\" commit de54b9ac253787c366bbfb28d901a31954eb3511
-(and earlier stable kernel series),
-so that the count once more included just the bytes of user data
-in messages in the queue.
-.SH EXAMPLES
-An example of the use of various message queue functions is shown in
-.BR mq_notify (3).
-.SH SEE ALSO
-.BR getrlimit (2),
-.BR mq_getsetattr (2),
-.BR poll (2),
-.BR select (2),
-.BR mq_close (3),
-.BR mq_getattr (3),
-.BR mq_notify (3),
-.BR mq_open (3),
-.BR mq_receive (3),
-.BR mq_send (3),
-.BR mq_unlink (3),
-.BR epoll (7),
-.BR namespaces (7)