From a5fdd305970adc9b245f97dd18ff813efea36484 Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Wed, 4 Nov 2015 10:32:58 -0200 Subject: posix: Consolidate Linux mq_timedreceive syscall This patch consolidates the mq_timedreceive Linux syscall generation on sysdeps/unix/sysv/linux/mq_timedreceive.c. It basically removes it from architecture auto-generation list. Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32, arch64-linux-gnu, arm-linux-gnueabihf, powerpc64le-linux-gnu, sparc64-linux-gnu, and sparcv9-linux-gnu. * rt/Makefile (CFLAGS-mq_timedreceive.c): New flag. * sysdeps/unix/sysv/linux/mq_timedreceive.c: New file. * sysdeps/unix/sysv/linux/syscalls.list (mq_timedreceive): Remove from auto-generation list. --- ChangeLog | 5 +++++ rt/Makefile | 1 + sysdeps/unix/sysv/linux/mq_timedreceive.c | 34 +++++++++++++++++++++++++++++++ sysdeps/unix/sysv/linux/syscalls.list | 1 - 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 sysdeps/unix/sysv/linux/mq_timedreceive.c diff --git a/ChangeLog b/ChangeLog index 3e846a0506..65784a9061 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2017-05-18 Adhemerval Zanella + * rt/Makefile (CFLAGS-mq_timedreceive.c): New flag. + * sysdeps/unix/sysv/linux/mq_timedreceive.c: New file. + * sysdeps/unix/sysv/linux/syscalls.list (mq_timedreceive): Remove + from auto-generation list. + * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Add open_by_handle_at. (CFLAGS-open_by_handle_at.c): New flag. diff --git a/rt/Makefile b/rt/Makefile index 52838391d7..0ffa12db4c 100644 --- a/rt/Makefile +++ b/rt/Makefile @@ -61,6 +61,7 @@ extra-libs-others := $(extra-libs) include ../Rules CFLAGS-aio_suspend.c = -fexceptions +CFLAGS-mq_timedreceive.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-clock_nanosleep.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-librt-cancellation.c = -fasynchronous-unwind-tables diff --git a/sysdeps/unix/sysv/linux/mq_timedreceive.c b/sysdeps/unix/sysv/linux/mq_timedreceive.c new file mode 100644 index 0000000000..6d1c145c24 --- /dev/null +++ b/sysdeps/unix/sysv/linux/mq_timedreceive.c @@ -0,0 +1,34 @@ +/* Receive a message from a message queue with a timeout. Linux version. + Copyright (C) 2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include + +/* Receive the oldest from highest priority messages in message queue + MQDES, stop waiting if ABS_TIMEOUT expires. */ +ssize_t +__mq_timedreceive (mqd_t mqdes, char *__restrict msg_ptr, size_t msg_len, + unsigned int *__restrict msg_prio, + const struct timespec *__restrict abs_timeout) +{ + return SYSCALL_CANCEL (mq_timedreceive, mqdes, msg_ptr, msg_len, msg_prio, + abs_timeout); +} +hidden_def (__mq_timedreceive) +weak_alias (__mq_timedreceive, mq_timedreceive) +hidden_weak (mq_timedreceive) diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index a8d1299939..63914bcc82 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -96,7 +96,6 @@ lremovexattr - lremovexattr i:ss lremovexattr fremovexattr - fremovexattr i:is fremovexattr mq_timedsend - mq_timedsend Ci:ipiip __mq_timedsend mq_timedsend -mq_timedreceive - mq_timedreceive Ci:ipipp __mq_timedreceive mq_timedreceive mq_setattr - mq_getsetattr i:ipp mq_setattr timerfd_create EXTRA timerfd_create i:ii timerfd_create -- cgit 1.4.1