From 1395ef210722633a1f10a5e6acb29da13933d0c6 Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Fri, 17 Apr 2015 14:28:03 -0300 Subject: [PATCH] x86: clock_gettime and timespec_get vDSO cleanup This patch removes the x86 specific timespec_get and clock_gettime implementation to use generic HAVE_CLOCK_GETTIME_VSYSCALL way. --- ChangeLog | 12 ++++++++++ sysdeps/unix/sysv/linux/i386/sysdep.h | 4 ++++ sysdeps/unix/sysv/linux/timespec_get.c | 1 + sysdeps/unix/sysv/linux/x86/clock_gettime.c | 34 ----------------------------- sysdeps/unix/sysv/linux/x86/timespec_get.c | 29 ------------------------ sysdeps/unix/sysv/linux/x86_64/sysdep.h | 4 ++++ 6 files changed, 21 insertions(+), 63 deletions(-) delete mode 100644 sysdeps/unix/sysv/linux/x86/clock_gettime.c delete mode 100644 sysdeps/unix/sysv/linux/x86/timespec_get.c diff --git a/ChangeLog b/ChangeLog index f750412..95b69d0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2015-06-01 Adhemerval Zanella + + * sysdeps/unix/sysv/linux/i386/sysdep.h (HAVE_CLOCK_GETTIME_VSYSCALL): + Define. + (HAVE_GETTIMEOFDAY_VSYSCALL): Likewise. + * sysdeps/unix/sysv/linux/x86_64/sysdep.h + (HAVE_CLOCK_GETTIME_VSYSCALL): Likewise. + (HAVE_GETTIMEOFDAY_VSYSCALL): Likewise. + * sysdeps/unix/sysv/linux/timespec_get.c: Include errno.h. + * sysdeps/unix/sysv/linux/x86/clock_gettime.c: Remove file. + * sysdeps/unix/sysv/linux/x86/timespec_get.c: Likewise. + 2015-06-01 Martin Sebor [BZ #18116] diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h index 7f6fcf3..d76aca5 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.h +++ b/sysdeps/unix/sysv/linux/i386/sysdep.h @@ -328,6 +328,10 @@ struct libc_do_syscall_args } \ (int) resultvar; }) +/* List of system calls which are supported as vsyscalls. */ +# define HAVE_CLOCK_GETTIME_VSYSCALL 1 +# define HAVE_GETTIMEOFDAY_VSYSCALL 1 + /* Define a macro which expands inline into the wrapper code for a system call. This use is for internal calls that do not need to handle errors normally. It will never touch errno. This returns just what the kernel diff --git a/sysdeps/unix/sysv/linux/timespec_get.c b/sysdeps/unix/sysv/linux/timespec_get.c index 0e5f513..b42a44f 100644 --- a/sysdeps/unix/sysv/linux/timespec_get.c +++ b/sysdeps/unix/sysv/linux/timespec_get.c @@ -17,6 +17,7 @@ #include #include +#include #ifdef HAVE_CLOCK_GETTIME_VSYSCALL # define HAVE_VSYSCALL diff --git a/sysdeps/unix/sysv/linux/x86/clock_gettime.c b/sysdeps/unix/sysv/linux/x86/clock_gettime.c deleted file mode 100644 index 98ffb01..0000000 --- a/sysdeps/unix/sysv/linux/x86/clock_gettime.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Get the current value of a clock. Linux/x86 version. - Copyright (C) 2015 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 - -#ifdef SHARED -# define SYSCALL_GETTIME(id, tp) \ - ({ long int (*f) (clockid_t, struct timespec *) = __vdso_clock_gettime; \ - long int v_ret; \ - PTR_DEMANGLE (f); \ - v_ret = (*f) (id, tp); \ - if (INTERNAL_SYSCALL_ERROR_P (v_ret, )) { \ - __set_errno (INTERNAL_SYSCALL_ERRNO (v_ret, )); \ - v_ret = -1; \ - } \ - v_ret; }) -#endif - -#include diff --git a/sysdeps/unix/sysv/linux/x86/timespec_get.c b/sysdeps/unix/sysv/linux/x86/timespec_get.c deleted file mode 100644 index b21efce..0000000 --- a/sysdeps/unix/sysv/linux/x86/timespec_get.c +++ /dev/null @@ -1,29 +0,0 @@ -/* timespec_get -- returns the calendar time based on a given time base. - Linux/x86 version. - Copyright (C) 2015 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 - -#ifdef SHARED -# define INTERNAL_GETTIME(id, tp) \ - ({ long int (*f) (clockid_t, struct timespec *) = __vdso_clock_gettime; \ - PTR_DEMANGLE (f); \ - (*f) (id, tp); }) -#endif - -#include diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep.h b/sysdeps/unix/sysv/linux/x86_64/sysdep.h index cc66093..bea3192 100644 --- a/sysdeps/unix/sysv/linux/x86_64/sysdep.h +++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.h @@ -252,6 +252,10 @@ # undef INTERNAL_SYSCALL_ERRNO # define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) +/* List of system calls which are supported as vsyscalls. */ +# define HAVE_CLOCK_GETTIME_VSYSCALL 1 +# define HAVE_GETTIMEOFDAY_VSYSCALL 1 + # define LOAD_ARGS_0() # define LOAD_REGS_0 # define ASM_ARGS_0 -- 2.7.4