 |
Index for Section 3 |
|
 |
Alphabetical listing for M |
|
 |
Bottom of page |
|
mq_send(3)
NAME
mq_send - Places a message in the message queue (P1003.1b)
SYNOPSIS
#include <mqueue.h>
int mq_send (
mqd_t mqdes,
const char *msg_ptr,
size_t msg_len,
unsigned int msg_prio);
LIBRARY
Realtime Library (librt.so, librt.a)
PARAMETERS
mqdes
Specifies a message queue descriptor.
*msg_ptr
Specifies a pointer to a buffer containing the message to be sent.
msg_len
Indicates the number of bytes of the message to be sent.
msg_prio
Indicates the priority of the message being sent.
DESCRIPTION
The mq_send function places a message in the message queue. This function
inserts the message in the queue at the position indicated by the msg_prio
argument. A message with a relatively large numeric value for the msg_prio
argument has a high priority, and it is therefore inserted before messages
with lower values for the msg_prio argument. This function inserts
messages with equal priority into the queue in first-in/first-out order.
Thus the function inserts a message with a given priority after already-
queued messages that have the same priority.
If the message queue is full, and the O_NONBLOCK option associated with it
is not set, the mq_send function blocks until sufficient space in the
message queue becomes available or until a signal interrupts the mq_send
function.
If two or more processes are waiting to send messages when space becomes
available in the queue, the highest-priority process that has been waiting
the longest sends the message first.
The mq_send function returns an error if the specified queue is full and
the O_NONBLOCK option is set for that queue.
RETURN VALUES
On successful completion, the mq_send function returns a value of 0 (zero).
Otherwise, no message is sent, -1 is returned, and errno is set to indicate
the error.
ERRORS
The mq_send function fails under the following conditions:
[EAGAIN]
The O_NONBLOCK option is set in the message queue description
associated with mqdes, and the specified message queue is full.
[EBADF]
The mqdes argument is not a valid message queue descriptor open for
writing.
[EFAULT]
An internal virtual memory error occurred.
[EINTR]
A signal interrupted the call to mq_send.
[EINVAL]
The value of msg_prio is outside the valid range.
[EMSGSIZE]
The specified message length, msg_len, exceeds the message size
attribute of the message queue. Note that a zero-length message is
valid.
SEE ALSO
Functions: mq_receive(3), mq_setattr(3)
Guide to Realtime Programming
 |
Index for Section 3 |
|
 |
Alphabetical listing for M |
|
 |
Top of page |
|