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>
[BZ #18116]

View File

@ -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

View File

@ -17,6 +17,7 @@
#include <time.h>
#include <sysdep.h>
#include <errno.h>
#ifdef HAVE_CLOCK_GETTIME_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
# 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