]> git.baikalelectronics.ru Git - kernel.git/commitdiff
lib/vdso: Move VCLOCK_TIMENS to vdso_clock_modes
authorThomas Gleixner <tglx@linutronix.de>
Fri, 7 Feb 2020 12:39:01 +0000 (13:39 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Mon, 17 Feb 2020 19:12:17 +0000 (20:12 +0100)
Move the time namespace indicator clock mode to the other ones for
consistency sake.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Link: https://lkml.kernel.org/r/20200207124403.656097274@linutronix.de
include/linux/clocksource.h
include/vdso/datapage.h
kernel/time/namespace.c
lib/vdso/gettimeofday.c

index 7fefe0b21a14feae134a0073d7ffba75591449bc..02e3282719bd24c67c43aaa6b6e266fc71cb765b 100644 (file)
@@ -34,6 +34,9 @@ enum vdso_clock_mode {
        VDSO_ARCH_CLOCKMODES,
 #endif
        VDSO_CLOCKMODE_MAX,
+
+       /* Indicator for time namespace VDSO */
+       VDSO_CLOCKMODE_TIMENS = INT_MAX
 };
 
 /**
index c5f347cc5e55e75f86dc32506816c75c00e66a2e..30c4cb0428d12ed533739024b04941553bd4dc94 100644 (file)
@@ -21,8 +21,6 @@
 #define CS_RAW         1
 #define CS_BASES       (CS_RAW + 1)
 
-#define VCLOCK_TIMENS  UINT_MAX
-
 /**
  * struct vdso_timestamp - basetime per clock_id
  * @sec:       seconds
index 12858507d75a6de5c4e0fc8159ea12b641a6fdab..e6ba064ce7730adfb480caa29755db022a660e7e 100644 (file)
@@ -8,6 +8,7 @@
 #include <linux/user_namespace.h>
 #include <linux/sched/signal.h>
 #include <linux/sched/task.h>
+#include <linux/clocksource.h>
 #include <linux/seq_file.h>
 #include <linux/proc_ns.h>
 #include <linux/export.h>
@@ -172,8 +173,8 @@ static struct timens_offset offset_from_ts(struct timespec64 off)
  * for vdso_data->clock_mode is a non-issue. The task is spin waiting for the
  * update to finish and for 'seq' to become even anyway.
  *
- * Timens page has vdso_data->clock_mode set to VCLOCK_TIMENS which enforces
- * the time namespace handling path.
+ * Timens page has vdso_data->clock_mode set to VDSO_CLOCKMODE_TIMENS which
+ * enforces the time namespace handling path.
  */
 static void timens_setup_vdso_data(struct vdso_data *vdata,
                                   struct time_namespace *ns)
@@ -183,7 +184,7 @@ static void timens_setup_vdso_data(struct vdso_data *vdata,
        struct timens_offset boottime = offset_from_ts(ns->offsets.boottime);
 
        vdata->seq                      = 1;
-       vdata->clock_mode               = VCLOCK_TIMENS;
+       vdata->clock_mode               = VDSO_CLOCKMODE_TIMENS;
        offset[CLOCK_MONOTONIC]         = monotonic;
        offset[CLOCK_MONOTONIC_RAW]     = monotonic;
        offset[CLOCK_MONOTONIC_COARSE]  = monotonic;
index 00f8d1f1405b96111e9574caf6a525e591a3a8ae..a76ac8d17c5f0f187b69e82b74cf06b364d59181 100644 (file)
@@ -116,10 +116,10 @@ static __always_inline int do_hres(const struct vdso_data *vd, clockid_t clk,
 
        do {
                /*
-                * Open coded to handle VCLOCK_TIMENS. Time namespace
+                * Open coded to handle VDSO_CLOCKMODE_TIMENS. Time namespace
                 * enabled tasks have a special VVAR page installed which
                 * has vd->seq set to 1 and vd->clock_mode set to
-                * VCLOCK_TIMENS. For non time namespace affected tasks
+                * VDSO_CLOCKMODE_TIMENS. For non time namespace affected tasks
                 * this does not affect performance because if vd->seq is
                 * odd, i.e. a concurrent update is in progress the extra
                 * check for vd->clock_mode is just a few extra
@@ -128,7 +128,7 @@ static __always_inline int do_hres(const struct vdso_data *vd, clockid_t clk,
                 */
                while (unlikely((seq = READ_ONCE(vd->seq)) & 1)) {
                        if (IS_ENABLED(CONFIG_TIME_NS) &&
-                           vd->clock_mode == VCLOCK_TIMENS)
+                           vd->clock_mode == VDSO_CLOCKMODE_TIMENS)
                                return do_hres_timens(vd, clk, ts);
                        cpu_relax();
                }
@@ -200,12 +200,12 @@ static __always_inline int do_coarse(const struct vdso_data *vd, clockid_t clk,
 
        do {
                /*
-                * Open coded to handle VCLOCK_TIMENS. See comment in
+                * Open coded to handle VDSO_CLOCK_TIMENS. See comment in
                 * do_hres().
                 */
                while ((seq = READ_ONCE(vd->seq)) & 1) {
                        if (IS_ENABLED(CONFIG_TIME_NS) &&
-                           vd->clock_mode == VCLOCK_TIMENS)
+                           vd->clock_mode == VDSO_CLOCKMODE_TIMENS)
                                return do_coarse_timens(vd, clk, ts);
                        cpu_relax();
                }
@@ -292,7 +292,7 @@ __cvdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz)
 
        if (unlikely(tz != NULL)) {
                if (IS_ENABLED(CONFIG_TIME_NS) &&
-                   vd->clock_mode == VCLOCK_TIMENS)
+                   vd->clock_mode == VDSO_CLOCKMODE_TIMENS)
                        vd = __arch_get_timens_vdso_data();
 
                tz->tz_minuteswest = vd[CS_HRES_COARSE].tz_minuteswest;
@@ -308,7 +308,8 @@ static __maybe_unused __kernel_old_time_t __cvdso_time(__kernel_old_time_t *time
        const struct vdso_data *vd = __arch_get_vdso_data();
        __kernel_old_time_t t;
 
-       if (IS_ENABLED(CONFIG_TIME_NS) && vd->clock_mode == VCLOCK_TIMENS)
+       if (IS_ENABLED(CONFIG_TIME_NS) &&
+           vd->clock_mode == VDSO_CLOCKMODE_TIMENS)
                vd = __arch_get_timens_vdso_data();
 
        t = READ_ONCE(vd[CS_HRES_COARSE].basetime[CLOCK_REALTIME].sec);
@@ -332,7 +333,8 @@ int __cvdso_clock_getres_common(clockid_t clock, struct __kernel_timespec *res)
        if (unlikely((u32) clock >= MAX_CLOCKS))
                return -1;
 
-       if (IS_ENABLED(CONFIG_TIME_NS) && vd->clock_mode == VCLOCK_TIMENS)
+       if (IS_ENABLED(CONFIG_TIME_NS) &&
+           vd->clock_mode == VDSO_CLOCKMODE_TIMENS)
                vd = __arch_get_timens_vdso_data();
 
        /*