mq_send - Places a message in the message queue (P1003.1b)
int mq_send ( mqd_t mqdes, const char *msg_ptr, size_t
msg_len, unsigned int msg_prio);
Realtime Library (librt.so, librt.a)
Specifies a message queue descriptor. Specifies a pointer
to a buffer containing the message to be sent. Indicates
the number of bytes of the message to be sent. Indicates
the priority of the message being sent.
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
The mq_send function returns an error if the specified
queue is full and the O_NONBLOCK option is set for that
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.
The mq_send function fails under the following conditions:
The O_NONBLOCK option is set in the message queue description
associated with mqdes, and the specified message
queue is full. The mqdes argument is not a valid message
queue descriptor open for writing. An internal virtual
memory error occurred. A signal interrupted the call to
mq_send. The value of msg_prio is outside the valid
range. The specified message length, msg_len, exceeds the
message size attribute of the message queue. Note that a
zero-length message is valid.
Functions: mq_receive(3), mq_setattr(3)
Guide to Realtime Programming
[ Back ]