Add support for using time64 on big-endian machines.
commit81ed334f67e0c56ff0a89ade0fc156c0ba23f190
authorDmitry Chestnykh <dm.chestnykh@gmail.com>
Sun, 25 Feb 2024 11:43:28 +0000 (25 14:43 +0300)
committerWaldemar Brodkorb <wbx@openadk.org>
Sun, 25 Feb 2024 18:27:48 +0000 (25 19:27 +0100)
tree09829cc5cd0d03a4f91887864f6a3c28213549af
parent086a5f165096af104b01bb6d5639bd769bd17620
Add support for using time64 on big-endian machines.

For BE architectures there is one significant difference
in comparison with time64 support for little-endian
architectures like ARMv7.
The difference is that we strictly need to pass two 64bit
values to system calls because Linux Kernel internally uses
`struct __kernel_timespec` and similar, which consists of two
64bit fields.
For this reason many files have been changed to convert
pointers to timespec-family structures (mixed of 64bit and 32bit values)
to the pointer of the similar but 64bit-only structures
for using as system calls args.
This is general prerequisite for any BE architecture.

Signed-off-by: Dmitry Chestnykh <dm.chestnykh@gmail.com>
24 files changed:
include/internal/time64_helpers.h [new file with mode: 0644]
libc/inet/socketcalls.c
libc/misc/sysvipc/sem.c
libc/signal/sigwait.c
libc/sysdeps/linux/common/__rt_sigtimedwait.c
libc/sysdeps/linux/common/__rt_sigwaitinfo.c
libc/sysdeps/linux/common/alarm.c
libc/sysdeps/linux/common/clock_getres.c
libc/sysdeps/linux/common/clock_gettime.c
libc/sysdeps/linux/common/clock_settime.c
libc/sysdeps/linux/common/ppoll.c
libc/sysdeps/linux/common/pselect.c
libc/sysdeps/linux/common/select.c
libc/sysdeps/linux/common/time.c
libc/sysdeps/linux/common/timerfd.c
libc/sysdeps/linux/common/utimensat.c
libpthread/nptl/pthread_mutex_timedlock.c
libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.h
libpthread/nptl/sysdeps/unix/sysv/linux/timer_settime.c
librt/clock_gettime.c
librt/clock_nanosleep.c
librt/mq_timedreceive.c
librt/mq_timedsend.c
librt/timer_settime.c