mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
vdso/gettimeofday: Add a helper to test if a clock is namespaced
Currently this logic is duplicate multiple times.
Add a helper for it to make the code more readable.
[ bp: Add a missing clocksource.h include, see
https://lore.kernel.org/r/20260311113435-f72f81d8-33a6-4a0f-bd80-4997aad068cc@linutronix.de ]
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Link: https://patch.msgid.link/20260227-vdso-cleanups-v1-3-c848b4bc4850@linutronix.de
This commit is contained in:
parent
ed78b7b2c5
commit
a657bebd7f
|
|
@ -6,6 +6,12 @@
|
|||
|
||||
#include <asm/barrier.h>
|
||||
#include <vdso/datapage.h>
|
||||
#include <vdso/clocksource.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)
|
||||
{
|
||||
|
|
@ -31,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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user