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 | 5 | #include <linux/types.h> |
| 6 | 6 | |
| 7 | −#ifndef __kernel_timespec | |
| 8 | 7 | struct __kernel_timespec { |
| 9 | 8 | __kernel_time64_t tv_sec; /* seconds */ |
| 10 | 9 | long long tv_nsec; /* nanoseconds */ |
| 11 | 10 | }; |
| 12 | −#endif | |
| 13 | 11 | |
| 14 | −#ifndef __kernel_itimerspec | |
| 15 | 12 | struct __kernel_itimerspec { |
| 16 | 13 | struct __kernel_timespec it_interval; /* timer period */ |
| 17 | 14 | struct __kernel_timespec it_value; /* timer expiration */ |
| 18 | 15 | }; |
| 19 | −#endif | |
| 20 | 16 | |
| 21 | 17 | /* |
| 22 | 18 | * legacy timeval structure, only embedded in structures that |
| @@ -92,6 +92,45 @@ struct timex { · 91 unmodified lines | ||
| 92 | 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 | 135 | * Mode codes (timex.mode) |
| 97 | 136 | */ |