summaryrefslogtreecommitdiffstats
path: root/upstream/archlinux/man3p/mq_receive.3p
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/archlinux/man3p/mq_receive.3p')
-rw-r--r--upstream/archlinux/man3p/mq_receive.3p203
1 files changed, 203 insertions, 0 deletions
diff --git a/upstream/archlinux/man3p/mq_receive.3p b/upstream/archlinux/man3p/mq_receive.3p
new file mode 100644
index 00000000..426f7233
--- /dev/null
+++ b/upstream/archlinux/man3p/mq_receive.3p
@@ -0,0 +1,203 @@
+'\" et
+.TH MQ_RECEIVE "3P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual"
+.\"
+.SH PROLOG
+This manual page is part of the POSIX Programmer's Manual.
+The Linux implementation of this interface may differ (consult
+the corresponding Linux manual page for details of Linux behavior),
+or the interface may not be implemented on Linux.
+.\"
+.SH NAME
+mq_receive,
+mq_timedreceive
+\(em receive a message from a message queue (\fBREALTIME\fP)
+.SH SYNOPSIS
+.LP
+.nf
+#include <mqueue.h>
+.P
+ssize_t mq_receive(mqd_t \fImqdes\fP, char *\fImsg_ptr\fP, size_t \fImsg_len\fP,
+ unsigned *\fImsg_prio\fP);
+.P
+#include <mqueue.h>
+#include <time.h>
+.P
+ssize_t mq_timedreceive(mqd_t \fImqdes\fP, char *restrict \fImsg_ptr\fP,
+ size_t \fImsg_len\fP, unsigned *restrict \fImsg_prio\fP,
+ const struct timespec *restrict \fIabstime\fP);
+.fi
+.SH DESCRIPTION
+The
+\fImq_receive\fR()
+function shall receive the oldest of the highest priority
+message(s) from the message queue specified by
+.IR mqdes .
+If the size of the buffer in bytes, specified by the
+.IR msg_len
+argument, is less than the
+.IR mq_msgsize
+attribute of the message queue, the function shall fail and return an
+error. Otherwise, the selected message shall be removed from the queue
+and copied to the buffer pointed to by the
+.IR msg_ptr
+argument.
+.P
+If the value of
+.IR msg_len
+is greater than
+{SSIZE_MAX},
+the result is implementation-defined.
+.P
+If the argument
+.IR msg_prio
+is not NULL, the priority of the selected message shall be stored in the
+location referenced by
+.IR msg_prio .
+.P
+If the specified message queue is empty and O_NONBLOCK
+is not set in the message queue description associated with
+.IR mqdes ,
+\fImq_receive\fR()
+shall block until a message is enqueued on the message queue or until
+\fImq_receive\fR()
+is interrupted by a signal. If more than one thread is waiting to
+receive a message when a message arrives at an empty queue and the
+Priority Scheduling option is supported, then the thread of highest
+priority that has been waiting the longest shall be selected to receive
+the message. Otherwise, it is unspecified which waiting thread receives
+the message. If the specified message queue is empty and O_NONBLOCK is
+set in the message queue description associated with
+.IR mqdes ,
+no message shall be removed from the queue, and
+\fImq_receive\fR()
+shall return an error.
+.P
+The
+\fImq_timedreceive\fR()
+function shall receive the oldest of the highest priority messages
+from the message queue specified by
+.IR mqdes
+as described for the
+\fImq_receive\fR()
+function. However, if O_NONBLOCK was not specified when the message
+queue was opened via the
+\fImq_open\fR()
+function, and no message exists on the queue to satisfy the receive,
+the wait for such a message shall be terminated when the specified
+timeout expires. If O_NONBLOCK is set, this function is equivalent to
+\fImq_receive\fR().
+.P
+The timeout expires when the absolute time specified by
+.IR abstime
+passes, as measured by the clock on which timeouts are based (that is,
+when the value of that clock equals or exceeds
+.IR abstime ),
+or if the absolute time specified by
+.IR abstime
+has already been passed at the time of the call.
+.P
+The timeout shall be based on the CLOCK_REALTIME clock.
+The resolution of the timeout shall be the resolution of the clock on
+which it is based. The
+.IR timespec
+argument is defined in the
+.IR <time.h>
+header.
+.P
+Under no circumstance shall the operation fail with a timeout if a
+message can be removed from the message queue immediately. The validity
+of the
+.IR abstime
+parameter need not be checked if a message can be removed from the
+message queue immediately.
+.SH "RETURN VALUE"
+Upon successful completion, the
+\fImq_receive\fR()
+and
+\fImq_timedreceive\fR()
+functions shall return the length of the selected message in bytes and
+the message shall be removed from the queue. Otherwise, no message
+shall be removed from the queue, the functions shall return a value of
+\-1, and set
+.IR errno
+to indicate the error.
+.SH ERRORS
+These functions shall fail if:
+.TP
+.BR EAGAIN
+O_NONBLOCK was set in the message description associated with
+.IR mqdes ,
+and the specified message queue is empty.
+.TP
+.BR EBADF
+The
+.IR mqdes
+argument is not a valid message queue descriptor open for reading.
+.TP
+.BR EMSGSIZE
+The specified message buffer size,
+.IR msg_len ,
+is less than the message size attribute of the message queue.
+.TP
+.BR EINTR
+The
+\fImq_receive\fR()
+or
+\fImq_timedreceive\fR()
+operation was interrupted by a signal.
+.TP
+.BR EINVAL
+The process or thread would have blocked, and the
+.IR abstime
+parameter specified a nanoseconds field value less than zero or greater
+than or equal to 1\|000 million.
+.TP
+.BR ETIMEDOUT
+The O_NONBLOCK flag was not set when the message queue was opened, but
+no message arrived on the queue before the specified timeout expired.
+.P
+These functions may fail if:
+.TP
+.BR EBADMSG
+The implementation has detected a data corruption problem with the
+message.
+.LP
+.IR "The following sections are informative."
+.SH EXAMPLES
+None.
+.SH "APPLICATION USAGE"
+None.
+.SH RATIONALE
+None.
+.SH "FUTURE DIRECTIONS"
+None.
+.SH "SEE ALSO"
+.IR "\fImq_open\fR\^(\|)",
+.IR "\fImq_send\fR\^(\|)",
+.IR "\fImsgctl\fR\^(\|)",
+.IR "\fImsgget\fR\^(\|)",
+.IR "\fImsgrcv\fR\^(\|)",
+.IR "\fImsgsnd\fR\^(\|)",
+.IR "\fItime\fR\^(\|)"
+.P
+The Base Definitions volume of POSIX.1\(hy2017,
+.IR "\fB<mqueue.h>\fP",
+.IR "\fB<time.h>\fP"
+.\"
+.SH COPYRIGHT
+Portions of this text are reprinted and reproduced in electronic form
+from IEEE Std 1003.1-2017, Standard for Information Technology
+-- Portable Operating System Interface (POSIX), The Open Group Base
+Specifications Issue 7, 2018 Edition,
+Copyright (C) 2018 by the Institute of
+Electrical and Electronics Engineers, Inc and The Open Group.
+In the event of any discrepancy between this version and the original IEEE and
+The Open Group Standard, the original IEEE and The Open Group Standard
+is the referee document. The original Standard can be obtained online at
+http://www.opengroup.org/unix/online.html .
+.PP
+Any typographical or formatting errors that appear
+in this page are most likely
+to have been introduced during the conversion of the source files to
+man page format. To report such errors, see
+https://www.kernel.org/doc/man-pages/reporting_bugs.html .