Add support for using time64 on big-endian machines.
[uclibc-ng.git] / librt / mq_timedreceive.c
blobf89b4c36b9af8f841b2ec81d4d16c4e28cacd7c8
1 /*
2 * Copyright (C) 2017 Waldemar Brodkorb <wbx@uclibc-ng.org>
3 * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
4 */
6 #include <sys/syscall.h>
7 #include <mqueue.h>
8 #include <unistd.h>
9 #include <cancel.h>
11 #if defined(__UCLIBC_USE_TIME64__) && defined(__NR_mq_timedreceive_time64)
12 #include "internal/time64_helpers.h"
14 int _NC(mq_timedreceive)(mqd_t mqdes, char *restrict msg_ptr, size_t msg_len, unsigned int *restrict msq_prio, const struct timespec *restrict abs_timeout)
16 return INLINE_SYSCALL(mq_timedreceive_time64, 5, mqdes, msg_ptr, msg_len, msq_prio, TO_TS64_P(abs_timeout));
18 #else
19 #define __NR___mq_timedreceive_nocancel __NR_mq_timedreceive
20 _syscall5(ssize_t, __NC(mq_timedreceive), mqd_t, mqdes, char *__restrict, msg_ptr, size_t, msg_len, unsigned int *__restrict, msq_prio, const struct timespec *__restrict, abs_timeout)
21 #endif
23 CANCELLABLE_SYSCALL(ssize_t, mq_timedreceive, (mqd_t mqdes, char *__restrict msg_ptr, size_t msq_len, unsigned int *__restrict msq_prio, const struct timespec *__restrict abs_timeout),
24 (mqdes, msg_ptr, msq_len, msq_prio, abs_timeout))
26 lt_libc_hidden(mq_timedreceive)