summaryrefslogtreecommitdiffstats
path: root/man3p/mq_receive.3p
diff options
context:
space:
mode:
Diffstat (limited to 'man3p/mq_receive.3p')
-rw-r--r--man3p/mq_receive.3p176
1 files changed, 176 insertions, 0 deletions
diff --git a/man3p/mq_receive.3p b/man3p/mq_receive.3p
new file mode 100644
index 000000000..d60f88ae8
--- /dev/null
+++ b/man3p/mq_receive.3p
@@ -0,0 +1,176 @@
+.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
+.TH "MQ_RECEIVE" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
+.\" mq_receive
+.SH NAME
+mq_receive, mq_timedreceive \- receive a message from a message queue
+(\fBREALTIME\fP)
+.SH SYNOPSIS
+.LP
+\fB#include <mqueue.h>
+.br
+.sp
+ssize_t mq_receive(mqd_t\fP \fImqdes\fP\fB, char *\fP\fImsg_ptr\fP\fB,
+size_t\fP \fImsg_len\fP\fB,
+.br
+\ \ \ \ \ \ unsigned *\fP\fImsg_prio\fP\fB); \fP
+\fB
+.br
+.sp
+\fP
+.LP
+\fB
+.br
+#include <mqueue.h>
+.br
+#include <time.h>
+.br
+ssize_t mq_timedreceive(mqd_t\fP \fImqdes\fP\fB, char *restrict\fP
+\fImsg_ptr\fP\fB,
+.br
+\ \ \ \ \ \ size_t\fP \fImsg_len\fP\fB, unsigned *restrict\fP \fImsg_prio\fP\fB,
+.br
+\ \ \ \ \ \ const struct timespec *restrict\fP \fIabs_timeout\fP\fB);
+\fP
+\fB
+.br
+\fP
+.SH DESCRIPTION
+.LP
+The \fImq_receive\fP() function shall receive the oldest of the highest
+priority message(s) from the message queue specified by
+\fImqdes\fP. If the size of the buffer in bytes, specified by the
+\fImsg_len\fP argument, is less than the \fImq_msgsize\fP
+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 \fImsg_ptr\fP
+argument.
+.LP
+If the value of \fImsg_len\fP is greater than {SSIZE_MAX}, the result
+is implementation-defined.
+.LP
+If the argument \fImsg_prio\fP is not NULL, the priority of the selected
+message shall be stored in the location referenced by
+\fImsg_prio\fP.
+.LP
+If the specified message queue is empty and O_NONBLOCK is not set
+in the message queue description associated with \fImqdes\fP,
+\fImq_receive\fP() shall block until a message is enqueued on the
+message queue or until \fImq_receive\fP() 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
+\fImqdes\fP, no message shall be removed from the queue, and
+\fImq_receive\fP() shall return an error.
+.LP
+The \fImq_timedreceive\fP() function shall receive the oldest of the
+highest priority messages from the message queue specified by
+\fImqdes\fP as described for the \fImq_receive\fP() function. However,
+if O_NONBLOCK was not specified when the message queue was
+opened via the \fImq_open\fP() 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\fP().
+.LP
+The timeout expires when the absolute time specified by \fIabs_timeout\fP
+passes, as measured by the clock on which timeouts
+are based (that is, when the value of that clock equals or exceeds
+\fIabs_timeout\fP), or if the absolute time specified by
+\fIabs_timeout\fP has already been passed at the time of the call.
+.LP
+If the Timers option is supported, the timeout shall be based on the
+CLOCK_REALTIME clock; if the Timers option is not
+supported, the timeout shall be based on the system clock as returned
+by the \fItime\fP()
+function.
+.LP
+The resolution of the timeout shall be the resolution of the clock
+on which it is based. The \fItimespec\fP argument is defined in
+the \fI<time.h>\fP header.
+.LP
+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 \fIabs_timeout\fP parameter need not be checked
+if a message can be removed from the message queue
+immediately.
+.SH RETURN VALUE
+.LP
+Upon successful completion, the \fImq_receive\fP() \ and \fImq_timedreceive\fP()
+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 \fIerrno\fP to
+indicate the error.
+.SH ERRORS
+.LP
+The \fImq_receive\fP() \ and \fImq_timedreceive\fP()
+functions shall fail if:
+.TP 7
+.B EAGAIN
+O_NONBLOCK was set in the message description associated with \fImqdes\fP,
+and the specified message queue is empty.
+.TP 7
+.B EBADF
+The \fImqdes\fP argument is not a valid message queue descriptor open
+for reading.
+.TP 7
+.B EMSGSIZE
+The specified message buffer size, \fImsg_len\fP, is less than the
+message size attribute of the message queue.
+.TP 7
+.B EINTR
+The \fImq_receive\fP() \ or \fImq_timedreceive\fP()
+operation was interrupted by a signal.
+.TP 7
+.B EINVAL
+The process or thread would have blocked, and the \fIabs_timeout\fP
+parameter specified a nanoseconds field value less than zero
+or greater than or equal to 1000 million.
+.TP 7
+.B 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.
+.sp
+.LP
+The \fImq_receive\fP() \ and \fImq_timedreceive\fP()
+functions may fail if:
+.TP 7
+.B EBADMSG
+The implementation has detected a data corruption problem with the
+message.
+.sp
+.LP
+\fIThe following sections are informative.\fP
+.SH EXAMPLES
+.LP
+None.
+.SH APPLICATION USAGE
+.LP
+None.
+.SH RATIONALE
+.LP
+None.
+.SH FUTURE DIRECTIONS
+.LP
+None.
+.SH SEE ALSO
+.LP
+\fImq_open\fP() , \fImq_send\fP() , \fImq_timedsend\fP() , \fImsgctl\fP()
+, \fImsgget\fP() , \fImsgrcv\fP() , \fImsgsnd\fP() , \fItime\fP()
+, the Base Definitions volume of IEEE\ Std\ 1003.1-2001, \fI<mqueue.h>\fP,
+\fI<time.h>\fP
+.SH COPYRIGHT
+Portions of this text are reprinted and reproduced in electronic form
+from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
+-- Portable Operating System Interface (POSIX), The Open Group Base
+Specifications Issue 6, Copyright (C) 2001-2003 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 .