From f9a7554009cf38f390e74fcabc5b49f974f72382 Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Thu, 24 Oct 2019 21:01:40 +0000 Subject: Change most internal uses of time to __clock_gettime. As for gettimeofday, time will be implemented based on clock_gettime on all platforms and internal code should use clock_gettime directly. In addition to removing a layer of indirection, this will allow us to remove the PLT-bypass gunk for gettimeofday. The changed code always assumes __clock_gettime (CLOCK_REALTIME) or __clock_gettime (CLOCK_REALTIME_COARSE) (for Linux case) cannot fail, using the same rationale for gettimeofday change. And internal helper was added (time_now). Checked on x86_64-linux-gnu, i686-linux-gnu, powerpc64le-linux-gnu, powerpc64-linux-gnu, and powerpc-linux-gnu. Reviewed-by: Lukasz Majewski --- sysdeps/unix/sysv/linux/x86/time.c | 34 +++++++++++----------------------- 1 file changed, 11 insertions(+), 23 deletions(-) (limited to 'sysdeps/unix/sysv/linux/x86') diff --git a/sysdeps/unix/sysv/linux/x86/time.c b/sysdeps/unix/sysv/linux/x86/time.c index 2e47661be3..4a03c46d21 100644 --- a/sysdeps/unix/sysv/linux/x86/time.c +++ b/sysdeps/unix/sysv/linux/x86/time.c @@ -17,43 +17,31 @@ . */ #include +#include -#ifdef SHARED - -#include -#include +#ifdef HAVE_TIME_VSYSCALL +# define HAVE_VSYSCALL +#endif #include static time_t -__time_syscall (time_t *t) +time_vsyscall (time_t *t) { - INTERNAL_SYSCALL_DECL (err); - return INTERNAL_SYSCALL (time, err, 1, t); + return INLINE_VSYSCALL (time, 1, t); } -# ifndef time_type -/* The i386 time.c includes this file with a defined time_type macro. - For x86_64 we have to define it to time as the internal symbol is the - ifunc'ed one. */ -# define time_type time -# endif +#ifdef SHARED +# include +# include #undef INIT_ARCH #define INIT_ARCH() /* If the vDSO is not available we fall back on the syscall. */ -libc_ifunc_hidden (time_type, time, - (get_vdso_symbol ("__vdso_time") ?: __time_syscall)) -libc_hidden_def (time) - +libc_ifunc (time, (get_vdso_symbol ("__vdso_time") ?: time_vsyscall)) #else - -# include - time_t time (time_t *t) { - INTERNAL_SYSCALL_DECL (err); - return INTERNAL_SYSCALL (time, err, 1, t); + return time_vsyscall (t); } - #endif -- cgit 1.4.1