Merge branch 'timers-2038-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

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
  ...
This commit is contained in:
Linus Torvalds
2019-03-05 14:08:26 -08:00
107 changed files with 1656 additions and 1265 deletions

View File

@@ -4,19 +4,15 @@
#include <linux/types.h>
#ifndef __kernel_timespec
struct __kernel_timespec {
__kernel_time64_t tv_sec; /* seconds */
long long tv_nsec; /* nanoseconds */
};
#endif
#ifndef __kernel_itimerspec
struct __kernel_itimerspec {
struct __kernel_timespec it_interval; /* timer period */
struct __kernel_timespec it_value; /* timer expiration */
};
#endif
/*
* legacy timeval structure, only embedded in structures that

View File

@@ -92,6 +92,45 @@ struct timex {
int :32; int :32; int :32;
};
struct __kernel_timex_timeval {
__kernel_time64_t tv_sec;
long long tv_usec;
};
struct __kernel_timex {
unsigned int modes; /* mode selector */
int :32; /* pad */
long long offset; /* time offset (usec) */
long long freq; /* frequency offset (scaled ppm) */
long long maxerror;/* maximum error (usec) */
long long esterror;/* estimated error (usec) */
int status; /* clock command/status */
int :32; /* pad */
long long constant;/* pll time constant */
long long precision;/* clock precision (usec) (read only) */
long long tolerance;/* clock frequency tolerance (ppm)
* (read only)
*/
struct __kernel_timex_timeval time; /* (read only, except for ADJ_SETOFFSET) */
long long tick; /* (modified) usecs between clock ticks */
long long ppsfreq;/* pps frequency (scaled ppm) (ro) */
long long jitter; /* pps jitter (us) (ro) */
int shift; /* interval duration (s) (shift) (ro) */
int :32; /* pad */
long long stabil; /* pps stability (scaled ppm) (ro) */
long long jitcnt; /* jitter limit exceeded (ro) */
long long calcnt; /* calibration intervals (ro) */
long long errcnt; /* calibration errors (ro) */
long long stbcnt; /* stability limit exceeded (ro) */
int tai; /* TAI offset (ro) */
int :32; int :32; int :32; int :32;
int :32; int :32; int :32; int :32;
int :32; int :32; int :32;
};
/*
* Mode codes (timex.mode)
*/