From: Zack Weinberg Date: Wed, 28 Aug 2019 12:30:28 +0000 (-0400) Subject: Use exclusively clock_gettime to implement gettimeofday. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d5f4d0ac6a14cc3385dc4180698f939ca0ee00f5;p=thirdparty%2Fglibc.git Use exclusively clock_gettime to implement gettimeofday. In 2.31 we changed most ports to implement gettimeofday using clock_gettime(CLOCK_REALTIME[_COARSE]), but we kept around a handful of Linux-specific implementations that went directly to the vDSO. Actual performance testing (on x86-64) indicates that there is no measurable difference between invoking the vDSO directly and calling clock_gettime (which then calls into the vDSO), so remove all of these for simplicity’s sake. --- diff --git a/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c b/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c deleted file mode 100644 index 0e3c7f76df3..00000000000 --- a/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright (C) 2018-2020 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 - . */ - -#define USE_IFUNC_GETTIMEOFDAY -#include diff --git a/sysdeps/unix/sysv/linux/gettimeofday.c b/sysdeps/unix/sysv/linux/gettimeofday.c deleted file mode 100644 index d5cdb224950..00000000000 --- a/sysdeps/unix/sysv/linux/gettimeofday.c +++ /dev/null @@ -1,58 +0,0 @@ -/* gettimeofday - set time. Linux version. - Copyright (C) 2020 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 - . */ - -/* Optimize the function call by setting the PLT directly to vDSO symbol. */ -#ifdef USE_IFUNC_GETTIMEOFDAY -# include -# include -# include -# include - -# ifdef SHARED -# include -# include - -static int -__gettimeofday_syscall (struct timeval *restrict tv, void *restrict tz) -{ - if (__glibc_unlikely (tz != 0)) - memset (tz, 0, sizeof *tz); - return INLINE_SYSCALL_CALL (gettimeofday, tv, tz); -} - -# undef INIT_ARCH -# define INIT_ARCH() \ - void *vdso_gettimeofday = dl_vdso_vsym (HAVE_GETTIMEOFDAY_VSYSCALL) -libc_ifunc (__gettimeofday, - vdso_gettimeofday ? VDSO_IFUNC_RET (vdso_gettimeofday) - : (void *) __gettimeofday_syscall) - -# else -int -__gettimeofday (struct timeval *restrict tv, void *restrict tz) -{ - if (__glibc_unlikely (tz != 0)) - memset (tz, 0, sizeof *tz); - - return INLINE_VSYSCALL (gettimeofday, 2, tv, tz); -} -# endif -weak_alias (__gettimeofday, gettimeofday) -#else /* USE_IFUNC_GETTIMEOFDAY */ -# include