00001 #ifndef POSIX_MQ_H
00002 #define POSIX_MQ_H
00003
00004 #include <nucleus/queue.h>
00005 #include <posix/registry.h>
00006
00007 struct pse51_mq;
00008 typedef struct pse51_mq pse51_mq_t;
00009
00010 typedef struct pse51_msg {
00011 xnpholder_t link;
00012 size_t len;
00013 char data[0];
00014 } pse51_msg_t;
00015
00016 #define pse51_msg_get_prio(msg) (msg)->link.prio
00017 #define pse51_msg_set_prio(msg, prio) (msg)->link.prio = (prio)
00018
00019 pse51_msg_t *pse51_mq_timedsend_inner(pse51_mq_t **mqp, mqd_t fd, size_t len,
00020 const struct timespec *abs_timeoutp);
00021
00022 int pse51_mq_finish_send(mqd_t fd, pse51_mq_t *mq, pse51_msg_t *msg);
00023
00024 pse51_msg_t *pse51_mq_timedrcv_inner(pse51_mq_t **mqp, mqd_t fd, size_t len,
00025 const struct timespec *abs_timeoutp);
00026
00027 int pse51_mq_finish_rcv(mqd_t fd, pse51_mq_t *mq, pse51_msg_t *msg);
00028
00029 #ifdef CONFIG_XENO_OPT_PERVASIVE
00030
00031 void pse51_mq_uqds_cleanup(pse51_queues_t *q);
00032
00033 #endif
00034
00035 int pse51_mq_pkg_init(void);
00036
00037 void pse51_mq_pkg_cleanup(void);
00038
00039 #endif