]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
vdso/vsyscall: Introduce a helper to fill clock configurations
authorThomas Weißschuh <thomas.weissschuh@linutronix.de>
Tue, 1 Jul 2025 08:57:56 +0000 (10:57 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 9 Jul 2025 09:52:34 +0000 (11:52 +0200)
The logic to configure a 'struct vdso_clock' from a
'struct tk_read_base' is copied two times.
Split it into a shared function to reduce the duplication,
especially as another user will be added for auxiliary clocks.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/all/20250701-vdso-auxclock-v1-2-df7d9f87b9b8@linutronix.de
kernel/time/vsyscall.c

index 32ef27c71b57aaa4ed898c0dbfdefcb73b8ff56a..d655df2597336f7305bfc74e2a87c651f314267b 100644 (file)
 
 #include "timekeeping_internal.h"
 
+static inline void fill_clock_configuration(struct vdso_clock *vc, const struct tk_read_base *base)
+{
+       vc->cycle_last  = base->cycle_last;
+#ifdef CONFIG_GENERIC_VDSO_OVERFLOW_PROTECT
+       vc->max_cycles  = base->clock->max_cycles;
+#endif
+       vc->mask        = base->mask;
+       vc->mult        = base->mult;
+       vc->shift       = base->shift;
+}
+
 static inline void update_vdso_time_data(struct vdso_time_data *vdata, struct timekeeper *tk)
 {
        struct vdso_clock *vc = vdata->clock_data;
        struct vdso_timestamp *vdso_ts;
        u64 nsec, sec;
 
-       vc[CS_HRES_COARSE].cycle_last   = tk->tkr_mono.cycle_last;
-#ifdef CONFIG_GENERIC_VDSO_OVERFLOW_PROTECT
-       vc[CS_HRES_COARSE].max_cycles   = tk->tkr_mono.clock->max_cycles;
-#endif
-       vc[CS_HRES_COARSE].mask         = tk->tkr_mono.mask;
-       vc[CS_HRES_COARSE].mult         = tk->tkr_mono.mult;
-       vc[CS_HRES_COARSE].shift        = tk->tkr_mono.shift;
-       vc[CS_RAW].cycle_last           = tk->tkr_raw.cycle_last;
-#ifdef CONFIG_GENERIC_VDSO_OVERFLOW_PROTECT
-       vc[CS_RAW].max_cycles           = tk->tkr_raw.clock->max_cycles;
-#endif
-       vc[CS_RAW].mask                 = tk->tkr_raw.mask;
-       vc[CS_RAW].mult                 = tk->tkr_raw.mult;
-       vc[CS_RAW].shift                = tk->tkr_raw.shift;
+       fill_clock_configuration(&vc[CS_HRES_COARSE],   &tk->tkr_mono);
+       fill_clock_configuration(&vc[CS_RAW],           &tk->tkr_raw);
 
        /* CLOCK_MONOTONIC */
        vdso_ts         = &vc[CS_HRES_COARSE].basetime[CLOCK_MONOTONIC];