timekeeping: Add the new CLOCK_MONOTONIC_ACTIVE clock
The planned change to unify the behaviour of the MONOTONIC and BOOTTIME clocks vs. suspend removes the ability to retrieve the active non-suspended time of a system. Provide a new CLOCK_MONOTONIC_ACTIVE clock which returns the active non-suspended time of the system via clock_gettime(). This preserves the old behaviour of CLOCK_MONOTONIC before the BOOTTIME/MONOTONIC unification. This new clock also allows applications to detect programmatically that the MONOTONIC and BOOTTIME clocks are identical. 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> Link: http://lkml.kernel.org/r/20180301165149.965235774@linutronix.de Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
committed by
Ingo Molnar
parent
78b98e3c5a
commit
72199320d4
@@ -263,6 +263,13 @@ static int posix_get_tai(clockid_t which_clock, struct timespec64 *tp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int posix_get_monotonic_active(clockid_t which_clock,
|
||||
struct timespec64 *tp)
|
||||
{
|
||||
ktime_get_active_ts64(tp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int posix_get_hrtimer_res(clockid_t which_clock, struct timespec64 *tp)
|
||||
{
|
||||
tp->tv_sec = 0;
|
||||
@@ -1330,6 +1337,11 @@ static const struct k_clock clock_boottime = {
|
||||
.timer_arm = common_hrtimer_arm,
|
||||
};
|
||||
|
||||
static const struct k_clock clock_monotonic_active = {
|
||||
.clock_getres = posix_get_hrtimer_res,
|
||||
.clock_get = posix_get_monotonic_active,
|
||||
};
|
||||
|
||||
static const struct k_clock * const posix_clocks[] = {
|
||||
[CLOCK_REALTIME] = &clock_realtime,
|
||||
[CLOCK_MONOTONIC] = &clock_monotonic,
|
||||
@@ -1342,6 +1354,7 @@ static const struct k_clock * const posix_clocks[] = {
|
||||
[CLOCK_REALTIME_ALARM] = &alarm_clock,
|
||||
[CLOCK_BOOTTIME_ALARM] = &alarm_clock,
|
||||
[CLOCK_TAI] = &clock_tai,
|
||||
[CLOCK_MONOTONIC_ACTIVE] = &clock_monotonic_active,
|
||||
};
|
||||
|
||||
static const struct k_clock *clockid_to_kclock(const clockid_t id)
|
||||
|
||||
Reference in New Issue
Block a user