#ifndef ISO
// should test for not an array type.
type mqd_t

type {struct sigevent}

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}
type {struct sigevent}
#endif

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

allow *_t
#endif
