mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-21 22:47:51 -04:00
timekeeping: Add CLOCK_AUX support for ktime_get_snapshot_id()
Now that all users are converted it's possible to enable snapshotting of CLOCK_AUX time. The underlying clocksource is the same as for all other CLOCK variants. Signed-off-by: Thomas Gleixner <tglx@kernel.org> Tested-by: Arthur Kiyanovski <akiyano@amazon.com> Reviewed-by: David Woodhouse <dwmw@amazon.co.uk> Reviewed-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de> Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> Link: https://patch.msgid.link/20260529195557.380601005@kernel.org
This commit is contained in:
@@ -67,6 +67,7 @@ static inline bool tk_is_aux(const struct timekeeper *tk)
|
||||
{
|
||||
return tk->id >= TIMEKEEPER_AUX_FIRST && tk->id <= TIMEKEEPER_AUX_LAST;
|
||||
}
|
||||
static inline struct tk_data *aux_get_tk_data(clockid_t id);
|
||||
#else
|
||||
static inline bool tk_get_aux_ts64(unsigned int tkid, struct timespec64 *ts)
|
||||
{
|
||||
@@ -77,6 +78,10 @@ static inline bool tk_is_aux(const struct timekeeper *tk)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
static inline struct tk_data *aux_get_tk_data(clockid_t id)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline void tk_update_aux_offs(struct timekeeper *tk, ktime_t offs)
|
||||
@@ -1218,6 +1223,12 @@ void ktime_get_snapshot_id(clockid_t clock_id, struct system_time_snapshot *syst
|
||||
tkd = &tk_core;
|
||||
offs = &tk_core.timekeeper.offs_boot;
|
||||
break;
|
||||
case CLOCK_AUX ... CLOCK_AUX_LAST:
|
||||
tkd = aux_get_tk_data(clock_id);
|
||||
if (!tkd)
|
||||
return;
|
||||
offs = &tkd->timekeeper.offs_aux;
|
||||
break;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
return;
|
||||
@@ -1228,6 +1239,10 @@ void ktime_get_snapshot_id(clockid_t clock_id, struct system_time_snapshot *syst
|
||||
do {
|
||||
seq = read_seqcount_begin(&tkd->seq);
|
||||
|
||||
/* Aux clocks can be invalid */
|
||||
if (!tk->clock_valid)
|
||||
return;
|
||||
|
||||
now = tk_clock_read(&tk->tkr_mono);
|
||||
systime_snapshot->cs_id = tk->tkr_mono.clock->id;
|
||||
systime_snapshot->cs_was_changed_seq = tk->cs_was_changed_seq;
|
||||
|
||||
Reference in New Issue
Block a user