Pull year 2038 updates from Thomas Gleixner: "Another round of changes to make the kernel ready for 2038. After lots of preparatory work this is the first set of syscalls which are 2038 safe: 403 clock_gettime64 404 clock_settime64 405 clock_adjtime64 406 clock_getres_time64 407 clock_nanosleep_time64 408 timer_gettime64 409 timer_settime64 410 timerfd_gettime64 411 timerfd_settime64 412 utimensat_time64 413 pselect6_time64 414 ppoll_time64 416 io_pgetevents_time64 417 recvmmsg_time64 418 mq_timedsend_time64 419 mq_timedreceiv_time64 420 semtimedop_time64 421 rt_sigtimedwait_time64 422 futex_time64 423 sched_rr_get_interval_time64 The syscall numbers are identical all over the architectures" * 'timers-2038-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (36 commits) riscv: Use latest system call ABI checksyscalls: fix up mq_timedreceive and stat exceptions unicore32: Fix __ARCH_WANT_STAT64 definition asm-generic: Make time32 syscall numbers optional asm-generic: Drop getrlimit and setrlimit syscalls from default list 32-bit userspace ABI: introduce ARCH_32BIT_OFF_T config option compat ABI: use non-compat openat and open_by_handle_at variants y2038: add 64-bit time_t syscalls to all 32-bit architectures y2038: rename old time and utime syscalls y2038: remove struct definition redirects y2038: use time32 syscall names on 32-bit syscalls: remove obsolete __IGNORE_ macros y2038: syscalls: rename y2038 compat syscalls x86/x32: use time64 versions of sigtimedwait and recvmmsg timex: change syscalls to use struct __kernel_timex timex: use __kernel_timex internally sparc64: add custom adjtimex/clock_adjtime functions time: fix sys_timer_settime prototype time: Add struct __kernel_timex time: make adjtime compat handling available for 32 bit ...
Showing the changes to include/uapi/linux (2 of 107 files). Show all
Unified · Split
| @@ -4,19 +4,15 @@ · 3 unmodified lines | |||
| 4 | 4 | ||
| 5 | #include <linux/types.h> | 5 | #include <linux/types.h> |
| 6 | 6 | ||
| 7 | #ifndef __kernel_timespec | ||
| 8 | struct __kernel_timespec { | 7 | struct __kernel_timespec { |
| 9 | __kernel_time64_t tv_sec; /* seconds */ | 8 | __kernel_time64_t tv_sec; /* seconds */ |
| 10 | long long tv_nsec; /* nanoseconds */ | 9 | long long tv_nsec; /* nanoseconds */ |
| 11 | }; | 10 | }; |
| 12 | #endif | ||
| 13 | 11 | ||
| 14 | #ifndef __kernel_itimerspec | ||
| 15 | struct __kernel_itimerspec { | 12 | struct __kernel_itimerspec { |
| 16 | struct __kernel_timespec it_interval; /* timer period */ | 13 | struct __kernel_timespec it_interval; /* timer period */ |
| 17 | struct __kernel_timespec it_value; /* timer expiration */ | 14 | struct __kernel_timespec it_value; /* timer expiration */ |
| 18 | }; | 15 | }; |
| 19 | #endif | ||
| 20 | 16 | ||
| 21 | /* | 17 | /* |
| 22 | * legacy timeval structure, only embedded in structures that | 18 | * legacy timeval structure, only embedded in structures that |
| @@ -92,6 +92,45 @@ struct timex { · 91 unmodified lines | |||
| 92 | int :32; int :32; int :32; | 92 | int :32; int :32; int :32; |
| 93 | }; | 93 | }; |
| 94 | 94 | ||
| 95 | struct __kernel_timex_timeval { | ||
| 96 | __kernel_time64_t tv_sec; | ||
| 97 | long long tv_usec; | ||
| 98 | }; | ||
| 99 | |||
| 100 | struct __kernel_timex { | ||
| 101 | unsigned int modes; /* mode selector */ | ||
| 102 | int :32; /* pad */ | ||
| 103 | long long offset; /* time offset (usec) */ | ||
| 104 | long long freq; /* frequency offset (scaled ppm) */ | ||
| 105 | long long maxerror;/* maximum error (usec) */ | ||
| 106 | long long esterror;/* estimated error (usec) */ | ||
| 107 | int status; /* clock command/status */ | ||
| 108 | int :32; /* pad */ | ||
| 109 | long long constant;/* pll time constant */ | ||
| 110 | long long precision;/* clock precision (usec) (read only) */ | ||
| 111 | long long tolerance;/* clock frequency tolerance (ppm) | ||
| 112 | * (read only) | ||
| 113 | */ | ||
| 114 | struct __kernel_timex_timeval time; /* (read only, except for ADJ_SETOFFSET) */ | ||
| 115 | long long tick; /* (modified) usecs between clock ticks */ | ||
| 116 | |||
| 117 | long long ppsfreq;/* pps frequency (scaled ppm) (ro) */ | ||
| 118 | long long jitter; /* pps jitter (us) (ro) */ | ||
| 119 | int shift; /* interval duration (s) (shift) (ro) */ | ||
| 120 | int :32; /* pad */ | ||
| 121 | long long stabil; /* pps stability (scaled ppm) (ro) */ | ||
| 122 | long long jitcnt; /* jitter limit exceeded (ro) */ | ||
| 123 | long long calcnt; /* calibration intervals (ro) */ | ||
| 124 | long long errcnt; /* calibration errors (ro) */ | ||
| 125 | long long stbcnt; /* stability limit exceeded (ro) */ | ||
| 126 | |||
| 127 | int tai; /* TAI offset (ro) */ | ||
| 128 | |||
| 129 | int :32; int :32; int :32; int :32; | ||
| 130 | int :32; int :32; int :32; int :32; | ||
| 131 | int :32; int :32; int :32; | ||
| 132 | }; | ||
| 133 | |||
| 95 | /* | 134 | /* |
| 96 | * Mode codes (timex.mode) | 135 | * Mode codes (timex.mode) |
| 97 | */ | 136 | */ |