y2038: add 64-bit time_t syscalls to all 32-bit architectures

This adds 21 new system calls on each ABI that has 32-bit time_t
today. All of these have the exact same semantics as their existing
counterparts, and the new ones all have macro names that end in 'time64'
for clarification.

This gets us to the point of being able to safely use a C library
that has 64-bit time_t in user space. There are still a couple of
loose ends to tie up in various areas of the code, but this is the
big one, and should be entirely uncontroversial at this point.

In particular, there are four system calls (getitimer, setitimer,
waitid, and getrusage) that don't have a 64-bit counterpart yet,
but these can all be safely implemented in the C library by wrapping
around the existing system calls because the 32-bit time_t they
pass only counts elapsed time, not time since the epoch. They
will be dealt with later.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
Arnd Bergmann
2019-01-10 12:45:11 +01:00
parent d33c577ccc
commit 48166e6ea4
19 changed files with 374 additions and 2 deletions

View File

@@ -409,3 +409,23 @@
400 i386 msgsnd sys_msgsnd __ia32_compat_sys_msgsnd
401 i386 msgrcv sys_msgrcv __ia32_compat_sys_msgrcv
402 i386 msgctl sys_msgctl __ia32_compat_sys_msgctl
403 i386 clock_gettime64 sys_clock_gettime __ia32_sys_clock_gettime
404 i386 clock_settime64 sys_clock_settime __ia32_sys_clock_settime
405 i386 clock_adjtime64 sys_clock_adjtime __ia32_sys_clock_adjtime
406 i386 clock_getres_time64 sys_clock_getres __ia32_sys_clock_getres
407 i386 clock_nanosleep_time64 sys_clock_nanosleep __ia32_sys_clock_nanosleep
408 i386 timer_gettime64 sys_timer_gettime __ia32_sys_timer_gettime
409 i386 timer_settime64 sys_timer_settime __ia32_sys_timer_settime
410 i386 timerfd_gettime64 sys_timerfd_gettime __ia32_sys_timerfd_gettime
411 i386 timerfd_settime64 sys_timerfd_settime __ia32_sys_timerfd_settime
412 i386 utimensat_time64 sys_utimensat __ia32_sys_utimensat
413 i386 pselect6_time64 sys_pselect6 __ia32_compat_sys_pselect6_time64
414 i386 ppoll_time64 sys_ppoll __ia32_compat_sys_ppoll_time64
416 i386 io_pgetevents_time64 sys_io_pgetevents __ia32_sys_io_pgetevents
417 i386 recvmmsg_time64 sys_recvmmsg __ia32_compat_sys_recvmmsg_time64
418 i386 mq_timedsend_time64 sys_mq_timedsend __ia32_sys_mq_timedsend
419 i386 mq_timedreceive_time64 sys_mq_timedreceive __ia32_sys_mq_timedreceive
420 i386 semtimedop_time64 sys_semtimedop __ia32_sys_semtimedop
421 i386 rt_sigtimedwait_time64 sys_rt_sigtimedwait __ia32_compat_sys_rt_sigtimedwait_time64
422 i386 futex_time64 sys_futex __ia32_sys_futex
423 i386 sched_rr_get_interval_time64 sys_sched_rr_get_interval __ia32_sys_sched_rr_get_interval