NAME
mq_notify —
notify process that a
message is available (REALTIME)
LIBRARY
POSIX Real-time Library (librt, -lrt)
SYNOPSIS
#include <mqueue.h>
int
mq_notify(
mqd_t
mqdes,
const struct
sigevent *notification);
DESCRIPTION
If the argument
notification is not
NULL
, this function will register the calling process
to be notified of message arrival at an empty message queue associated with
the specified message queue descriptor,
mqdes. The
notification specified by the
notification argument will
be sent to the process when the message queue transitions from empty to
non-empty. At any time, only one process may be registered for notification by
a message queue. If the calling process or any other process has already
registered for notification of message arrival at the specified message queue,
subsequent attempts to register for that message queue fails.
If
notification is
NULL
and the
process is currently registered for notification by the specified message
queue, the existing registration will be removed.
When the notification is sent to the registered process, its registration will
be removed. The message queue will then be available for registration.
If a process has registered for notification of message arrival at a message
queue and some thread is blocked in
mq_receive() waiting to
receive a message when a message arrives at the queue, the arriving message
will satisfy the appropriate
mq_receive(). The resulting
behavior is as if the message queue remains empty, and no notification will be
sent.
RETURN VALUES
The
mq_notify() function returns the value 0 if
successful; otherwise the value -1 is returned and the global variable
errno is set to indicate the error.
ERRORS
The
mq_notify() function fails if:
-
-
- [
EBADF
]
- The mqdes argument is not a valid
message queue descriptor.
-
-
- [
EBUSY
]
- A process is already registered for notification by the
message queue.
SEE ALSO
mq(3),
sigevent(3)
STANDARDS
This function conforms to the
IEEE Std 1003.1-2001
(“POSIX.1”) standard.
HISTORY
This function first appeared in
NetBSD 5.0.
COPYRIGHT
Portions of this text are reprinted and reproduced in electronic form from IEEE
Std 1003.1, 2003 Edition, Standard for Information Technology -- Portable
Operating System Interface (POSIX), The Open Group Base Specifications Issue
6, Copyright (C) 2001-2003 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.