NAME
mq_getattr, mq_setattr - get/set message queue attributes
SYNOPSIS
#include <mqueue.h>
I mqd_t mq_getattr(mqd_t mqdes , struct mq_attr * attr );
I mqd_t mq_setattr(mqd_t mqdes , struct mq_attr * newattr ,
I struct mq_attr * oldattr );
DESCRIPTION
R mq_getattr ()
and
R mq_setattr ()
respectively retrieve and modify attributes of the message queue
referred to by the descriptor
R mqdes .
R mq_getattr ()
returns an
mq_attr
structure in the buffer pointed by
R attr .
This structure is defined as:
struct mq_attr {
long mq_flags; /* Flags: 0 or O_NONBLOCK */
long mq_maxmsg; /* Max. # of messages on queue */
long mq_msgsize; /* Max. message size (bytes) */
long mq_curmsgs; /* # of messages currently in queue */
};
The
mq_flags
field contains flags associated with the open message queue description.
This field is initialized when the queue is created by
mq_open(3).
The only flag that can appear in this field is
R O_NONBLOCK .
The
mq_maxmsg
and
mq_msgsize
fields are set when the message queue is created by
mq_open(3).
The
mq_maxmsg
field is an upper limit on the number of messages
that may be placed on the queue using
mq_send(3).
The
mq_msgsize
field is an upper limit on the size of messages
that may be placed on the queue.
Both of these fields must have a value greater than zero.
Two
/proc
files that place ceilings on the values for these fields are described in
mq_open(3).
The
mq_curmsgs
field returns the number of messages currently held in the queue.
R mq_setattr ()
sets message queue attributes using information supplied in the
mq_attr
structure pointed to by
R newattr .
The only attribute that can be modified is the setting of the
O_NONBLOCK
flag in
R mq_flags .
The other fields in
newattr
are ignored.
If the
oldattr
field is not NULL,
then the buffer that it points to is used to return an
mq_attr
structure that contains the same information that is returned by
R mq_getattr ().
RETURN VALUE
On success
R mq_getattr ()
and
R mq_setattr ()
return 0; on error, -1 is returned, with
errno
set to indicate the error.
ERRORS
EBADF
The descriptor specified in
mqdes
is invalid.
EINVAL
newattr->mq_flags
contained set bits other than
R O_NONBLOCK .
CONFORMING TO
POSIX.1-2001.
SEE ALSO