Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
y2038: linux: Provide __clock_settime64 implementation
This patch provides new __clock_settime64 explicit 64 bit function for setting the time. Moreover, a 32 bit version - __clock_settime has been refactored to internally use __clock_settime64. The __clock_settime is now supposed to be used on 32 bit systems - hence the necessary checks and conversion to 64 bit type. After this change it is intrinsically Y2038 safe. The new 64 bit syscall (clock_settime64) available from Linux 5.1+ has been used when applicable on 32 bit systems. The execution path on 64 bit systems has not been changed or affected in any way. Tests: - The code has been tested with x86_64/x86 (native compilation): make PARALLELMFLAGS="-j8" && make xcheck PARALLELMFLAGS="-j8" - 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 on kernels with and without 64 bit time support. No regressions were observed. * include/time.h (__clock_settime64): Add __clock_settime alias according to __TIMESIZE define * sysdeps/unix/sysv/linux/clock_settime.c (__clock_settime): Refactor this function to be used only on 32 bit machines as a wrapper on __clock_settime64. * sysdeps/unix/sysv/linux/clock_settime.c (__clock_settime64): Add * sysdeps/unix/sysv/linux/clock_settime.c (__clock_settime64): Use clock_settime64 kernel syscall (available from 5.1-rc1+ Linux) by 32 bit Y2038 safe systems
- Loading branch information