summaryrefslogtreecommitdiffstats
path: root/man3p/mq_send.3p
diff options
context:
space:
mode:
Diffstat (limited to 'man3p/mq_send.3p')
-rw-r--r--man3p/mq_send.3p166
1 files changed, 166 insertions, 0 deletions
diff --git a/man3p/mq_send.3p b/man3p/mq_send.3p
new file mode 100644
index 000000000..b8d1fba40
--- /dev/null
+++ b/man3p/mq_send.3p
@@ -0,0 +1,166 @@
+.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
+.TH "MQ_SEND" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
+.\" mq_send
+.SH NAME
+mq_send, mq_timedsend \- send a message to a message queue (\fBREALTIME\fP)
+.SH SYNOPSIS
+.LP
+\fB#include <mqueue.h>
+.br
+.sp
+int mq_send(mqd_t\fP \fImqdes\fP\fB, const 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
+int mq_timedsend(mqd_t\fP \fImqdes\fP\fB, const char *\fP\fImsg_ptr\fP\fB,
+size_t\fP \fImsg_len\fP\fB,
+.br
+\ \ \ \ \ \ unsigned\fP \fImsg_prio\fP\fB, const struct timespec
+*\fP\fIabs_timeout\fP\fB); \fP
+\fB
+.br
+\fP
+.SH DESCRIPTION
+.LP
+The \fImq_send\fP() function shall add the message pointed to by the
+argument \fImsg_ptr\fP to the message queue specified by
+\fImqdes\fP. The \fImsg_len\fP argument specifies the length of the
+message, in bytes, pointed to by \fImsg_ptr\fP. The value of
+\fImsg_len\fP shall be less than or equal to the \fImq_msgsize\fP
+attribute of the message queue, or \fImq_send\fP() shall
+fail.
+.LP
+If the specified message queue is not full, \fImq_send\fP() shall
+behave as if the message is inserted into the message queue
+at the position indicated by the \fImsg_prio\fP argument. A message
+with a larger numeric value of \fImsg_prio\fP shall be
+inserted before messages with lower values of \fImsg_prio\fP. A message
+shall be inserted after other messages in the queue, if
+any, with equal \fImsg_prio\fP. The value of \fImsg_prio\fP shall
+be less than {MQ_PRIO_MAX}.
+.LP
+If the specified message queue is full and O_NONBLOCK is not set in
+the message queue description associated with \fImqdes\fP,
+\fImq_send\fP() shall block until space becomes available to enqueue
+the message, or until \fImq_send\fP() is interrupted by a
+signal. If more than one thread is waiting to send when space becomes
+available in the message queue and the Priority Scheduling
+option is supported, then the thread of the highest priority that
+has been waiting the longest shall be unblocked to send its
+message. Otherwise, it is unspecified which waiting thread is unblocked.
+If the specified message queue is full and O_NONBLOCK is
+set in the message queue description associated with \fImqdes\fP,
+the message shall not be queued and \fImq_send\fP() shall
+return an error.
+.LP
+The \fImq_timedsend\fP() function shall add a message to the message
+queue specified by \fImqdes\fP in the manner defined for the
+\fImq_send\fP() function. However, if the specified message queue
+is full and O_NONBLOCK is not set in the message queue
+description associated with \fImqdes\fP, the wait for sufficient room
+in the queue shall be terminated when the specified timeout
+expires. If O_NONBLOCK is set in the message queue description, this
+function shall be equivalent to \fImq_send\fP().
+.LP
+The timeout shall expire 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 there
+is sufficient room in the queue to add the message
+immediately. The validity of the \fIabs_timeout\fP parameter need
+not be checked when there is sufficient room in the queue.
+.SH RETURN VALUE
+.LP
+Upon successful completion, the \fImq_send\fP() \ and \fImq_timedsend\fP()
+functions shall return a value of zero. Otherwise, no message shall
+be enqueued, the functions shall
+return -1, and \fIerrno\fP shall be set to indicate the error.
+.SH ERRORS
+.LP
+The \fImq_send\fP() \ and \fImq_timedsend\fP()
+functions shall fail if:
+.TP 7
+.B EAGAIN
+The O_NONBLOCK flag is set in the message queue description associated
+with \fImqdes\fP, and the specified message queue is
+full.
+.TP 7
+.B EBADF
+The \fImqdes\fP argument is not a valid message queue descriptor open
+for writing.
+.TP 7
+.B EINTR
+A signal interrupted the call to \fImq_send\fP() \ or \fImq_timedsend\fP().
+.TP 7
+.B EINVAL
+The value of \fImsg_prio\fP was outside the valid range.
+.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 EMSGSIZE
+The specified message length, \fImsg_len\fP, exceeds the message size
+attribute of the message queue.
+.TP 7
+.B ETIMEDOUT
+The O_NONBLOCK flag was not set when the message queue was opened,
+but the timeout expired before the message could be added to the
+queue.
+.sp
+.LP
+\fIThe following sections are informative.\fP
+.SH EXAMPLES
+.LP
+None.
+.SH APPLICATION USAGE
+.LP
+The value of the symbol {MQ_PRIO_MAX} limits the number of priority
+levels supported by the application. Message priorities
+range from 0 to {MQ_PRIO_MAX}-1.
+.SH RATIONALE
+.LP
+None.
+.SH FUTURE DIRECTIONS
+.LP
+None.
+.SH SEE ALSO
+.LP
+\fImq_open\fP() , \fImq_receive\fP() , \fImq_setattr\fP() , \fImq_timedreceive\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 .