mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-07-20 01:33:37 -04:00
Revert commits92af4dcb4e
("tracing: Unify the "boot" and "mono" tracing clocks")127bfa5f43
("hrtimer: Unify MONOTONIC and BOOTTIME clock behavior")7250a4047a
("posix-timers: Unify MONOTONIC and BOOTTIME clock behavior")d6c7270e91
("timekeeping: Remove boot time specific code")f2d6fdbfd2
("Input: Evdev - unify MONOTONIC and BOOTTIME clock behavior")d6ed449afd
("timekeeping: Make the MONOTONIC clock behave like the BOOTTIME clock")72199320d4
("timekeeping: Add the new CLOCK_MONOTONIC_ACTIVE clock") As stated in the pull request for the unification of CLOCK_MONOTONIC and CLOCK_BOOTTIME, it was clear that we might have to revert the change. As reported by several folks systemd and other applications rely on the documented behaviour of CLOCK_MONOTONIC on Linux and break with the above changes. After resume daemons time out and other timeout related issues are observed. Rafael compiled this list: * systemd kills daemons on resume, after >WatchdogSec seconds of suspending (Genki Sky). [Verified that that's because systemd uses CLOCK_MONOTONIC and expects it to not include the suspend time.] * systemd-journald misbehaves after resume: systemd-journald[7266]: File /var/log/journal/016627c3c4784cd4812d4b7e96a34226/system.journal corrupted or uncleanly shut down, renaming and replacing. (Mike Galbraith). * NetworkManager reports "networking disabled" and networking is broken after resume 50% of the time (Pavel). [May be because of systemd.] * MATE desktop dims the display and starts the screensaver right after system resume (Pavel). * Full system hang during resume (me). [May be due to systemd or NM or both.] That happens on debian and open suse systems. It's sad, that these problems were neither catched in -next nor by those folks who expressed interest in this change. Reported-by: Rafael J. Wysocki <rjw@rjwysocki.net> Reported-by: Genki Sky <sky@genki.is>, Reported-by: Pavel Machek <pavel@ucw.cz> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com> Cc: John Stultz <john.stultz@linaro.org> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Kevin Easton <kevin@guarana.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Mark Salyzyn <salyzyn@android.com> Cc: Michael Kerrisk <mtk.manpages@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Petr Mladek <pmladek@suse.com> Cc: Prarit Bhargava <prarit@redhat.com> Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Cc: Steven Rostedt <rostedt@goodmis.org>
86 lines
2.1 KiB
C
86 lines
2.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
|
#ifndef _UAPI_LINUX_TIME_H
|
|
#define _UAPI_LINUX_TIME_H
|
|
|
|
#include <linux/types.h>
|
|
|
|
|
|
#ifndef _STRUCT_TIMESPEC
|
|
#define _STRUCT_TIMESPEC
|
|
struct timespec {
|
|
__kernel_time_t tv_sec; /* seconds */
|
|
long tv_nsec; /* nanoseconds */
|
|
};
|
|
#endif
|
|
|
|
struct timeval {
|
|
__kernel_time_t tv_sec; /* seconds */
|
|
__kernel_suseconds_t tv_usec; /* microseconds */
|
|
};
|
|
|
|
struct timezone {
|
|
int tz_minuteswest; /* minutes west of Greenwich */
|
|
int tz_dsttime; /* type of dst correction */
|
|
};
|
|
|
|
|
|
/*
|
|
* Names of the interval timers, and structure
|
|
* defining a timer setting:
|
|
*/
|
|
#define ITIMER_REAL 0
|
|
#define ITIMER_VIRTUAL 1
|
|
#define ITIMER_PROF 2
|
|
|
|
struct itimerspec {
|
|
struct timespec it_interval; /* timer period */
|
|
struct timespec it_value; /* timer expiration */
|
|
};
|
|
|
|
struct itimerval {
|
|
struct timeval it_interval; /* timer interval */
|
|
struct timeval it_value; /* current value */
|
|
};
|
|
|
|
/*
|
|
* legacy timeval structure, only embedded in structures that
|
|
* traditionally used 'timeval' to pass time intervals (not absolute
|
|
* times). Do not add new users. If user space fails to compile
|
|
* here, this is probably because it is not y2038 safe and needs to
|
|
* be changed to use another interface.
|
|
*/
|
|
struct __kernel_old_timeval {
|
|
__kernel_long_t tv_sec;
|
|
__kernel_long_t tv_usec;
|
|
};
|
|
|
|
/*
|
|
* The IDs of the various system clocks (for POSIX.1b interval timers):
|
|
*/
|
|
#define CLOCK_REALTIME 0
|
|
#define CLOCK_MONOTONIC 1
|
|
#define CLOCK_PROCESS_CPUTIME_ID 2
|
|
#define CLOCK_THREAD_CPUTIME_ID 3
|
|
#define CLOCK_MONOTONIC_RAW 4
|
|
#define CLOCK_REALTIME_COARSE 5
|
|
#define CLOCK_MONOTONIC_COARSE 6
|
|
#define CLOCK_BOOTTIME 7
|
|
#define CLOCK_REALTIME_ALARM 8
|
|
#define CLOCK_BOOTTIME_ALARM 9
|
|
/*
|
|
* The driver implementing this got removed. The clock ID is kept as a
|
|
* place holder. Do not reuse!
|
|
*/
|
|
#define CLOCK_SGI_CYCLE 10
|
|
#define CLOCK_TAI 11
|
|
|
|
#define MAX_CLOCKS 16
|
|
#define CLOCKS_MASK (CLOCK_REALTIME | CLOCK_MONOTONIC)
|
|
#define CLOCKS_MONO CLOCK_MONOTONIC
|
|
|
|
/*
|
|
* The various flags for setting POSIX.1b interval timers:
|
|
*/
|
|
#define TIMER_ABSTIME 0x01
|
|
|
|
#endif /* _UAPI_LINUX_TIME_H */
|