Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ mq_send(3) — Tru64 UNIX 5.1b

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

mq_receive(3)

mq_setattr(3)

mq_send(3)  —  Subroutines

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

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026