diff options
Diffstat (limited to 'man-pages-posix-2017/man3p/mq_send.3p')
-rw-r--r-- | man-pages-posix-2017/man3p/mq_send.3p | 212 |
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 . |