From 2328b06c9e7f7bd09c7bca5bc374137d2a62e942 Mon Sep 17 00:00:00 2001 From: Lukasz Majewski Date: Thu, 16 Jan 2020 23:14:27 +0100 Subject: [PATCH] y2038: linux: Provide __settimeofday64 implementation This patch provides new __settimeofday64 explicit 64 bit function for setting 64 bit time in the kernel (by internally calling __clock_settime64). Moreover, a 32 bit version - __settimeofday has been refactored to internally use __settimeofday64. The __settimeofday is now supposed to be used on systems still supporting 32 bit time (__TIMESIZE != 64) - hence the necessary conversion of struct timeval to 64 bit struct __timespec64. Internally the settimeofday uses __settimeofday64. This patch is necessary for having architectures with __WORDSIZE == 32 Y2038 safe. Build tests: ./src/scripts/build-many-glibcs.py glibcs Run-time tests: - Run specific tests on ARM/x86 32bit systems (qemu): https://github.com/lmajewski/meta-y2038 and run tests: https://github.com/lmajewski/y2038-tests/commits/master Above tests were performed with Y2038 redirection applied as well as without to test proper usage of both __settimeofday64 and __settimeofday. --- include/time.h | 9 +++++++++ time/settimeofday.c | 19 +++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/include/time.h b/include/time.h index b40214c0069..b76ffea225f 100644 --- a/include/time.h +++ b/include/time.h @@ -8,6 +8,7 @@ # include