1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

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.
This commit is contained in:
Adhemerval Zanella
2015-04-17 14:28:03 -03:00
committed by Adhemerval Zanella
parent 44c9249978
commit 1395ef2107
6 changed files with 21 additions and 63 deletions

View File

@ -1,3 +1,15 @@
2015-06-01 Adhemerval Zanella <adhemerval.zanella@linaro.org>
* 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 <msebor@redhat.com> 2015-06-01 Martin Sebor <msebor@redhat.com>
[BZ #18116] [BZ #18116]

View File

@ -328,6 +328,10 @@ struct libc_do_syscall_args
} \ } \
(int) resultvar; }) (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 /* 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 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 normally. It will never touch errno. This returns just what the kernel

View File

@ -17,6 +17,7 @@
#include <time.h> #include <time.h>
#include <sysdep.h> #include <sysdep.h>
#include <errno.h>
#ifdef HAVE_CLOCK_GETTIME_VSYSCALL #ifdef HAVE_CLOCK_GETTIME_VSYSCALL
# define HAVE_VSYSCALL # define HAVE_VSYSCALL

View File

@ -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
<http://www.gnu.org/licenses/>. */
#include <libc-vdso.h>
#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 <sysdeps/unix/sysv/linux/clock_gettime.c>

View File

@ -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
<http://www.gnu.org/licenses/>. */
#include <libc-vdso.h>
#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 <sysdeps/unix/sysv/linux/timespec_get.c>

View File

@ -252,6 +252,10 @@
# undef INTERNAL_SYSCALL_ERRNO # undef INTERNAL_SYSCALL_ERRNO
# define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) # 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_ARGS_0()
# define LOAD_REGS_0 # define LOAD_REGS_0
# define ASM_ARGS_0 # define ASM_ARGS_0