This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[RFC v1 03/16] sysdeps/gettimeofday: Use clock_gettime64 syscall for gettimeofday
- From: Alistair Francis <alistair dot francis at wdc dot com>
- To: libc-alpha at sourceware dot org
- Cc: alistair dot francis at wdc dot com, alistair23 at gmail dot com
- Date: Fri, 21 Jun 2019 21:37:20 -0700
- Subject: [RFC v1 03/16] sysdeps/gettimeofday: Use clock_gettime64 syscall for gettimeofday
- Ironport-sdr: PCO5vFk2Hp8ueL7cWQ3A3gK1rhwRaVA6U1Xy5wUxqDNAwpD3CiWd4yHddI2AmDhR1CT7OByqhF reEindnFF/EZs2hqwr9xHpODbBqnzENI26DNP07LU0jXXjvO4xLOqVLnWejjBmD3X67dqtShfZ O2KuweyFrzfHIJSFrjHLsL8ejkDpLrxZfCPeKVnR9fKivMGHml2/ACS2EEq2/aectFDrIdzl5z GmdUGQ7kSW6LM/64RLhZj/ujwcL5UMWHG/G95yUuEbXUAgWEi7ZfDZQExBZrW/uuY5WVbofPy3 q6ci0AEKJknaOmhNbdEemU74
- Ironport-sdr: 3A6jF0Fdsdns4/FdsJShldCmWPuUeFDFG2Q0PLsQnspm0DIusyAc+6Pcu2fjq2Ai3SwfFY3KJn kRCzE0+9cWZCxUYUtrXP+ZwapsWHZFn7FpajcX4/xanAEElBfUltxmwCVvU6PaMFV+cwG2coyp FUtuvpO3ugB8XTZDSRU1jESnwKGuAFIAQYeSjXd+aqhDklaV5JTgWjhuBIIn1mIA430kSSDWmX MJzIEwrVU11tWd10ZeT1sYXcmZzCUSoq4MFtNgME/pvlIv4l75fojopmJIcmPR1E1EGbUvfYFK kd0=
- References: <cover.1561177967.git.alistair.francis@wdc.com>
Not all architectures support the obsolete gettimeofday so use the
newer clock_gettime64 syscall. This fixes RV32 build issues.
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
---
ChangeLog | 1 +
sysdeps/unix/sysv/linux/gettimeofday.c | 14 ++++++++++++++
2 files changed, 15 insertions(+)
diff --git a/ChangeLog b/ChangeLog
index a700783ef3..f1c7acb6ab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,7 @@
* sysdeps/unix/sysv/linux/nanosleep.c: Likewise.
* sysdeps/unix/sysv/linux/nanosleep_nocancel.c: Likewise.
* sysdeps/unix/sysv/linux/lowlevellock-futex.h: Use __NR_futex_time64 if we don't have __NR_futex.
+ * sysdeps/unix/sysv/linux/gettimeofday.c: Use clock_gettime64 syscall for gettimeofday.
2019-06-20 Dmitry V. Levin <ldv@altlinux.org>
Florian Weimer <fweimer@redhat.com>
diff --git a/sysdeps/unix/sysv/linux/gettimeofday.c b/sysdeps/unix/sysv/linux/gettimeofday.c
index a74f03825a..58be2fdcc5 100644
--- a/sysdeps/unix/sysv/linux/gettimeofday.c
+++ b/sysdeps/unix/sysv/linux/gettimeofday.c
@@ -32,7 +32,21 @@
int
__gettimeofday (struct timeval *tv, struct timezone *tz)
{
+#ifdef __NR_gettimeofday
return INLINE_VSYSCALL (gettimeofday, 2, tv, tz);
+#else
+ int ret;
+ struct timespec now;
+
+ ret = INLINE_VSYSCALL (clock_gettime64, 2, CLOCK_REALTIME,
+ &now);
+
+ /* Convert from timespec to timeval */
+ tv->tv_sec = now.tv_sec;
+ tv->tv_usec = now.tv_nsec / 1000;
+
+ return ret;
+#endif
}
libc_hidden_def (__gettimeofday)
weak_alias (__gettimeofday, gettimeofday)
--
2.22.0