[PATCH 3/4] vdso/gettimeofday: Add a helper to test if a clock is namespaced
From: Thomas Weißschuh
Date: Fri Feb 27 2026 - 01:45:16 EST
Currently this logic is duplicate multiple times.
Add a helper for it to make the code more readable.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@xxxxxxxxxxxxx>
---
include/vdso/helpers.h | 7 ++++++-
lib/vdso/gettimeofday.c | 9 +++------
2 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/include/vdso/helpers.h b/include/vdso/helpers.h
index 0064c30cc40c..3dd67ed85c2e 100644
--- a/include/vdso/helpers.h
+++ b/include/vdso/helpers.h
@@ -7,6 +7,11 @@
#include <asm/barrier.h>
#include <vdso/datapage.h>
+static __always_inline bool vdso_is_timens_clock(const struct vdso_clock *vc)
+{
+ return IS_ENABLED(CONFIG_TIME_NS) && vc->clock_mode == VDSO_CLOCKMODE_TIMENS;
+}
+
static __always_inline u32 vdso_read_begin(const struct vdso_clock *vc)
{
u32 seq;
@@ -32,7 +37,7 @@ static __always_inline u32 vdso_read_begin(const struct vdso_clock *vc)
static __always_inline bool vdso_read_begin_timens(const struct vdso_clock *vc, u32 *seq)
{
while (unlikely((*seq = READ_ONCE(vc->seq)) & 1)) {
- if (IS_ENABLED(CONFIG_TIME_NS) && vc->clock_mode == VDSO_CLOCKMODE_TIMENS)
+ if (vdso_is_timens_clock(vc))
return true;
cpu_relax();
}
diff --git a/lib/vdso/gettimeofday.c b/lib/vdso/gettimeofday.c
index e49369676928..2faed7851635 100644
--- a/lib/vdso/gettimeofday.c
+++ b/lib/vdso/gettimeofday.c
@@ -343,8 +343,7 @@ __cvdso_gettimeofday_data(const struct vdso_time_data *vd,
}
if (unlikely(tz != NULL)) {
- if (IS_ENABLED(CONFIG_TIME_NS) &&
- vc->clock_mode == VDSO_CLOCKMODE_TIMENS)
+ if (vdso_is_timens_clock(vc))
vd = __arch_get_vdso_u_timens_data(vd);
tz->tz_minuteswest = vd[CS_HRES_COARSE].tz_minuteswest;
@@ -367,8 +366,7 @@ __cvdso_time_data(const struct vdso_time_data *vd, __kernel_old_time_t *time)
const struct vdso_clock *vc = vd->clock_data;
__kernel_old_time_t t;
- if (IS_ENABLED(CONFIG_TIME_NS) &&
- vc->clock_mode == VDSO_CLOCKMODE_TIMENS) {
+ if (vdso_is_timens_clock(vc)) {
vd = __arch_get_vdso_u_timens_data(vd);
vc = vd->clock_data;
}
@@ -399,8 +397,7 @@ bool __cvdso_clock_getres_common(const struct vdso_time_data *vd, clockid_t cloc
if (!vdso_clockid_valid(clock))
return false;
- if (IS_ENABLED(CONFIG_TIME_NS) &&
- vc->clock_mode == VDSO_CLOCKMODE_TIMENS)
+ if (vdso_is_timens_clock(vc))
vd = __arch_get_vdso_u_timens_data(vd);
/*
--
2.53.0