summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.com>2015-04-17 14:28:03 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2015-06-01 22:25:02 -0300
commit1395ef210722633a1f10a5e6acb29da13933d0c6 (patch)
treeb94140cbf65b13b5d9964f1c3eab638e8090c192
parent44c924997806580c2e90d350275e270a3d365186 (diff)
downloadglibc-1395ef210722633a1f10a5e6acb29da13933d0c6.tar.gz
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.
-rw-r--r--ChangeLog12
-rw-r--r--sysdeps/unix/sysv/linux/i386/sysdep.h4
-rw-r--r--sysdeps/unix/sysv/linux/timespec_get.c1
-rw-r--r--sysdeps/unix/sysv/linux/x86/clock_gettime.c34
-rw-r--r--sysdeps/unix/sysv/linux/x86/timespec_get.c29
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/sysdep.h4
6 files changed, 21 insertions, 63 deletions
diff --git a/ChangeLog b/ChangeLog
index f750412d58..95b69d0591 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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]
diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h
index 7f6fcf3288..d76aca50d6 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 0e5f513f3d..b42a44ff12 100644
--- a/sysdeps/unix/sysv/linux/timespec_get.c
+++ b/sysdeps/unix/sysv/linux/timespec_get.c
@@ -17,6 +17,7 @@
#include <time.h>
#include <sysdep.h>
+#include <errno.h>
#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 98ffb01b8d..0000000000
--- 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
- <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>
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 b21efcea82..0000000000
--- 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
- <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>
diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep.h b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
index cc6609347e..bea3192466 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