#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined XPG3 && !defined XPG4
// should test for not an array type.
type mqd_t

type {struct sigevent}
element {struct sigevent} int sigev_notify
element {struct sigevent} int sigev_signo
element {struct sigevent} {union sigval} sigev_value
element {struct sigevent} {void(*} sigev_notify_function )(union sigval)
element {struct sigevent} {pthread_attr_t*} sigev_notify_attributes

type {struct mq_attr}
element {struct mq_attr} long mq_flags
element {struct mq_attr} long mq_maxmsg
element {struct mq_attr} long mq_msgsize
element {struct mq_attr} long mq_curmsgs

function int mq_close (mqd_t)
function int mq_getattr (mqd_t, struct mq_attr*)
function int mq_notify (mqd_t, const struct sigevent*)
function mqd_t mq_open (const char*, int, ...)
function ssize_t mq_receive (mqd_t, char*, size_t, unsigned int*)
function int mq_send (mqd_t, const char*, size_t, unsigned int)
function int mq_setattr (mqd_t, const struct mq_attr*, struct mq_attr*)
function int mq_unlink (const char*)
#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
optional-function ssize_t mq_timedreceive (mqd_t, char*, size_t, unsigned int*, const struct timespec*)
optional-function int mq_timedsend (mqd_t, const char*, size_t, unsigned int, const struct timespec*)
#endif

#if defined XOPEN2K8 || defined POSIX2008
type pthread_attr_t
type size_t
type ssize_t
type {struct timespec}
#endif

allow-header fcntl.h
allow-header signal.h
allow-header sys/types.h
allow-header time.h

allow mq_*
allow MQ_*
allow *_t
#endif