[PATCH 4/4] timekeeping: Introduce and use timekeeper_is_clock_valid()

Thomas Weißschuh (Schneider Electric) <[email protected]>
Newsgroups org.kernel.vger.linux-kernel
Message-ID <20260812-timekeeping-conditionals-v1-4-75ebe366677d@linutronix.de>
If CONFIG_POSIX_AUX_CLOCKS is disabled only the core timekeeper exists
which is always valid.

Introduce and use a helper function to avoid the runtime conditional
in this case.

Signed-off-by: Thomas Weißschuh (Schneider Electric) <[email protected]>
---
 kernel/time/timekeeping.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index 5cdf6795c5a6..8a8cb9f9f333 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -85,6 +85,11 @@ static inline bool timekeeper_is_core_tk(struct timekeeper *tk)
 	return !IS_ENABLED(CONFIG_POSIX_AUX_CLOCKS) || tk->id == TIMEKEEPER_CORE;
 }
 
+static inline bool timekeeper_is_clock_valid(const struct timekeeper *tk)
+{
+	return !IS_ENABLED(CONFIG_POSIX_AUX_CLOCKS) || tk->clock_valid;
+}
+
 /* flag for if timekeeping is suspended */
 int __read_mostly timekeeping_suspended;
 
@@ -1292,7 +1297,7 @@ void ktime_get_snapshot_id(clockid_t clock_id, struct system_time_snapshot *syst
 		seq = read_seqcount_begin(&tkd->seq);
 
 		/* Aux clocks can be invalid */
-		if (!tk->clock_valid)
+		if (!timekeeper_is_clock_valid(tk))
 			return;
 
 		now = tk_clock_read_snapshot(&tk->tkr_mono, &chs);
@@ -2993,7 +2998,7 @@ static int __do_adjtimex(struct tk_data *tkd, struct __kernel_timex *txc,
 
 	guard(raw_spinlock_irqsave)(&tkd->lock);
 
-	if (!tks->clock_valid)
+	if (!timekeeper_is_clock_valid(tks))
 		return -ENODEV;
 
 	if (txc->modes & ADJ_SETOFFSET) {
@@ -3108,7 +3113,7 @@ static void tk_aux_update_clocksource(void)
 		struct timekeeper *tks = &tkd->shadow_timekeeper;
 
 		guard(raw_spinlock_irqsave)(&tkd->lock);
-		if (!tks->clock_valid)
+		if (!timekeeper_is_clock_valid(tks))
 			continue;
 
 		timekeeping_forward_now(tks);
@@ -3127,7 +3132,7 @@ static void tk_aux_advance(void)
 		struct tk_data *aux_tkd = &timekeeper_data[id + TIMEKEEPER_AUX_FIRST];
 
 		guard(raw_spinlock)(&aux_tkd->lock);
-		if (aux_tkd->shadow_timekeeper.clock_valid)
+		if (timekeeper_is_clock_valid(&aux_tkd->shadow_timekeeper))
 			__timekeeping_advance(aux_tkd, TK_ADV_TICK);
 	}
 }
@@ -3155,7 +3160,7 @@ bool ktime_get_aux(clockid_t id, ktime_t *kt)
 	aux_tk = &aux_tkd->timekeeper;
 	do {
 		seq = read_seqcount_begin(&aux_tkd->seq);
-		if (!aux_tk->clock_valid)
+		if (!timekeeper_is_clock_valid(aux_tk))
 			return false;
 
 		base = ktime_add(aux_tk->tkr_mono.base, aux_tk->offs_aux);
@@ -3214,7 +3219,7 @@ static int aux_clock_set(const clockid_t id, const struct timespec64 *tnew)
 	aux_tks = &aux_tkd->shadow_timekeeper;
 
 	guard(raw_spinlock_irq)(&aux_tkd->lock);
-	if (!aux_tks->clock_valid)
+	if (!timekeeper_is_clock_valid(aux_tks))
 		return -ENODEV;
 
 	/* Forward the timekeeper base time */

-- 
2.55.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.