]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/uclibc/lib/contrib/uclibc/librt/mq_receive.c
Inital import
[l4.git] / l4 / pkg / uclibc / lib / contrib / uclibc / librt / mq_receive.c
1 /*
2  * mq_receive.c - functions for receiving from message queue.
3  */
4
5 #include <errno.h>
6 #include <stddef.h>
7 #include <sys/syscall.h>
8 #include <mqueue.h>
9
10 #ifdef __NR_mq_timedreceive
11 #define __NR___syscall_mq_timedreceive __NR_mq_timedreceive
12 static _syscall5(int, __syscall_mq_timedreceive, int, mqdes,
13                  char *, msg_ptr, size_t, msg_len, unsigned int *,
14                  msg_prio, const void *, abs_timeout)
15 # if defined __USE_XOPEN2K && defined __UCLIBC_HAS_ADVANCED_REALTIME__
16 /*
17  * Receive the oldest from highest priority messages.
18  * Stop waiting if abs_timeout expires.
19  */
20 ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len,
21                         unsigned int *msg_prio,
22                         const struct timespec *abs_timeout)
23 {
24         return __syscall_mq_timedreceive(mqdes, msg_ptr, msg_len, msg_prio,
25                                          abs_timeout);
26 }
27 # endif
28
29 /* Receive the oldest from highest priority messages */
30 ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len,
31                    unsigned int *msg_prio)
32 {
33         return __syscall_mq_timedreceive(mqdes, msg_ptr, msg_len, msg_prio, NULL);
34 }
35 #elif defined __UCLIBC_HAS_STUBS__
36 # if defined __USE_XOPEN2K && defined __UCLIBC_HAS_ADVANCED_REALTIME__
37 ssize_t mq_timedreceive(mqd_t mqdes attribute_unused, char *msg_ptr attribute_unused,
38                         size_t msg_len attribute_unused, unsigned int *msg_prio attribute_unused,
39                         const struct timespec *abs_timeout attribute_unused)
40 {
41         __set_errno(ENOSYS);
42         return -1;
43 }
44 # endif
45 ssize_t mq_receive(mqd_t mqdes attribute_unused, char *msg_ptr attribute_unused,
46                    size_t msg_len attribute_unused, unsigned int *msg_prio attribute_unused)
47 {
48         __set_errno(ENOSYS);
49         return -1;
50 }
51 #endif