diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2019-10-24 21:01:40 +0000 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2019-10-30 17:11:10 -0300 |
commit | f9a7554009cf38f390e74fcabc5b49f974f72382 (patch) | |
tree | b8e5b100ca6f2bc18ff0b134d48c9e26e83325ba /sysdeps/unix/sysv/linux/x86 | |
parent | 0d563783490bf5b2d7d52cab205760fdff5d5650 (diff) | |
download | glibc-f9a7554009cf38f390e74fcabc5b49f974f72382.zip glibc-f9a7554009cf38f390e74fcabc5b49f974f72382.tar.gz glibc-f9a7554009cf38f390e74fcabc5b49f974f72382.tar.bz2 |
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 <lukma@denx.de>
Diffstat (limited to 'sysdeps/unix/sysv/linux/x86')
-rw-r--r-- | sysdeps/unix/sysv/linux/x86/time.c | 34 |
1 files changed, 11 insertions, 23 deletions
diff --git a/sysdeps/unix/sysv/linux/x86/time.c b/sysdeps/unix/sysv/linux/x86/time.c index 2e47661..4a03c46 100644 --- a/sysdeps/unix/sysv/linux/x86/time.c +++ b/sysdeps/unix/sysv/linux/x86/time.c @@ -17,43 +17,31 @@ <https://www.gnu.org/licenses/>. */ #include <time.h> +#include <sysdep.h> -#ifdef SHARED - -#include <dl-vdso.h> -#include <errno.h> +#ifdef HAVE_TIME_VSYSCALL +# define HAVE_VSYSCALL +#endif #include <sysdep-vdso.h> 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 <dl-vdso.h> +# include <libc-vdso.h> #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 <sysdep.h> - time_t time (time_t *t) { - INTERNAL_SYSCALL_DECL (err); - return INTERNAL_SYSCALL (time, err, 1, t); + return time_vsyscall (t); } - #endif |