summaryrefslogtreecommitdiffstats
path: root/man-pages-posix-2017/man3p/mq_send.3p
diff options
context:
space:
mode:
Diffstat (limited to 'man-pages-posix-2017/man3p/mq_send.3p')
-rw-r--r--man-pages-posix-2017/man3p/mq_send.3p212
1 files changed, 212 insertions, 0 deletions
diff --git a/man-pages-posix-2017/man3p/mq_send.3p b/man-pages-posix-2017/man3p/mq_send.3p
new file mode 100644
index 0000000..f9a16da
--- /dev/null
+++ b/man-pages-posix-2017/man3p/mq_send.3p
@@ -0,0 +1,212 @@
+'\" et
+.TH MQ_SEND "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_send,
+mq_timedsend
+\(em send a message to a message queue (\fBREALTIME\fP)
+.SH SYNOPSIS
+.LP
+.nf
+#include <mqueue.h>
+.P
+int mq_send(mqd_t \fImqdes\fP, const char *\fImsg_ptr\fP, size_t \fImsg_len\fP,
+ unsigned \fImsg_prio\fP);
+.P
+#include <mqueue.h>
+#include <time.h>
+.P
+int mq_timedsend(mqd_t \fImqdes\fP, const char *\fImsg_ptr\fP, size_t \fImsg_len\fP,
+ unsigned \fImsg_prio\fP, const struct timespec *\fIabstime\fP);
+.fi
+.SH DESCRIPTION
+The
+\fImq_send\fR()
+function shall add the message pointed to by the argument
+.IR msg_ptr
+to the message queue specified by
+.IR mqdes .
+The
+.IR msg_len
+argument specifies the length of the message, in bytes, pointed to by
+.IR msg_ptr .
+The value of
+.IR msg_len
+shall be less than or equal to the
+.IR mq_msgsize
+attribute of the message queue, or
+\fImq_send\fR()
+shall fail.
+.P
+If the specified message queue is not full,
+\fImq_send\fR()
+shall behave as if the message is inserted into the message queue at
+the position indicated by the
+.IR msg_prio
+argument. A message with a larger numeric value of
+.IR msg_prio
+shall be inserted before messages with lower values of
+.IR msg_prio .
+A message shall be inserted after other messages in the queue, if any,
+with equal
+.IR msg_prio .
+The value of
+.IR msg_prio
+shall be less than
+{MQ_PRIO_MAX}.
+.P
+If the specified message queue is full and O_NONBLOCK
+is not set in the message queue description associated with
+.IR mqdes ,
+\fImq_send\fR()
+shall block until space becomes available to enqueue the message, or
+until
+\fImq_send\fR()
+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
+.IR mqdes ,
+the message shall not be queued and
+\fImq_send\fR()
+shall return an error.
+.P
+The
+\fImq_timedsend\fR()
+function shall add a message to the message queue specified by
+.IR mqdes
+in the manner defined for the
+\fImq_send\fR()
+function. However, if the specified message queue is full and
+O_NONBLOCK is not set in the message queue description associated with
+.IR mqdes ,
+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\fR().
+.P
+The timeout shall expire 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 there
+is sufficient room in the queue to add the message immediately. The
+validity of the
+.IR abstime
+parameter need not be checked when there is sufficient room in the
+queue.
+.SH "RETURN VALUE"
+Upon successful completion, the
+\fImq_send\fR()
+and
+\fImq_timedsend\fR()
+functions shall return a value of zero. Otherwise, no message shall be
+enqueued, the functions shall return \-1, and
+.IR errno
+shall be set to indicate the error.
+.SH ERRORS
+The
+\fImq_send\fR()
+and
+\fImq_timedsend\fR()
+functions shall fail if:
+.TP
+.BR EAGAIN
+The O_NONBLOCK flag is set in the message queue description associated
+with
+.IR mqdes ,
+and the specified message queue is full.
+.TP
+.BR EBADF
+The
+.IR mqdes
+argument is not a valid message queue descriptor open for writing.
+.TP
+.BR EINTR
+A signal interrupted the call to
+\fImq_send\fR()
+or
+\fImq_timedsend\fR().
+.TP
+.BR EINVAL
+The value of
+.IR msg_prio
+was outside the valid range.
+.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 EMSGSIZE
+The specified message length,
+.IR msg_len ,
+exceeds the message size attribute of the message queue.
+.TP
+.BR 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.
+.LP
+.IR "The following sections are informative."
+.SH EXAMPLES
+None.
+.SH "APPLICATION USAGE"
+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
+None.
+.SH "FUTURE DIRECTIONS"
+None.
+.SH "SEE ALSO"
+.IR "\fImq_open\fR\^(\|)",
+.IR "\fImq_receive\fR\^(\|)",
+.IR "\fImq_setattr\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 .