diff options
author | Zack Weinberg <zackw@panix.com> | 2019-08-28 08:30:28 -0400 |
---|---|---|
committer | Zack Weinberg <zackw@panix.com> | 2020-01-06 15:37:00 -0500 |
commit | d5f4d0ac6a14cc3385dc4180698f939ca0ee00f5 (patch) | |
tree | 26a19409f53c6bd2d298c94f89dd8bbce1a63c82 | |
parent | 9ac2398ef958e164ecbb918547aa493818a22942 (diff) | |
download | glibc-d5f4d0ac6a14cc3385dc4180698f939ca0ee00f5.tar.gz glibc-d5f4d0ac6a14cc3385dc4180698f939ca0ee00f5.tar.xz glibc-d5f4d0ac6a14cc3385dc4180698f939ca0ee00f5.zip |
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.
-rw-r--r-- | sysdeps/unix/sysv/linux/aarch64/gettimeofday.c | 20 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/gettimeofday.c | 58 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/gettimeofday.c | 19 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/x86/gettimeofday.c | 20 |
4 files changed, 0 insertions, 117 deletions
diff --git a/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c b/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c deleted file mode 100644 index 0e3c7f76df..0000000000 --- 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 - <https://www.gnu.org/licenses/>. */ - -#define USE_IFUNC_GETTIMEOFDAY -#include <sysdeps/unix/sysv/linux/gettimeofday.c> diff --git a/sysdeps/unix/sysv/linux/gettimeofday.c b/sysdeps/unix/sysv/linux/gettimeofday.c deleted file mode 100644 index d5cdb22495..0000000000 --- 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 - <https://www.gnu.org/licenses/>. */ - -/* Optimize the function call by setting the PLT directly to vDSO symbol. */ -#ifdef USE_IFUNC_GETTIMEOFDAY -# include <time.h> -# include <string.h> -# include <sysdep.h> -# include <sysdep-vdso.h> - -# ifdef SHARED -# include <dl-vdso.h> -# include <libc-vdso.h> - -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 <time/gettimeofday.c> -#endif diff --git a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c deleted file mode 100644 index 183fb0ac70..0000000000 --- a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c +++ /dev/null @@ -1,19 +0,0 @@ -/* Copyright (C) 2005-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 - <https://www.gnu.org/licenses/>. */ - -#define USE_IFUNC_GETTIMEOFDAY -#include <sysdeps/unix/sysv/linux/gettimeofday.c> diff --git a/sysdeps/unix/sysv/linux/x86/gettimeofday.c b/sysdeps/unix/sysv/linux/x86/gettimeofday.c deleted file mode 100644 index 1b7aa880a2..0000000000 --- a/sysdeps/unix/sysv/linux/x86/gettimeofday.c +++ /dev/null @@ -1,20 +0,0 @@ -/* gettimeofday - get the time. Linux/x86 version. - Copyright (C) 2015-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 - <https://www.gnu.org/licenses/>. */ - -#define USE_IFUNC_GETTIMEOFDAY -#include <sysdeps/unix/sysv/linux/gettimeofday.c> |