hrtimers: Reorder clock bases
authorThomas Gleixner <tglx@linutronix.de>
Fri, 20 May 2011 21:14:04 +0000 (23:14 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Mon, 23 May 2011 11:59:54 +0000 (13:59 +0200)
The ordering of the clock bases is historical due to the
CLOCK_REALTIME and CLOCK_MONOTONIC constants. Now the hrtimer bases
have their own enumeration due to the gap between CLOCK_MONOTONIC and
CLOCK_BOOTTIME. So we can be more clever as most timers end up on the
CLOCK_MONOTONIC base due to the virtue of POSIX declaring that
relative CLOCK_REALTIME timers are not affected by time changes. In
desktop environments this is slowly changing as applications switch to
absolute timers, but I've observed empty CLOCK_REALTIME bases often
enough. There is no performance penalty or overhead when
CLOCK_REALTIME timers are active, but in case they are not we don't
skip over a full cache line.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Peter Zijlstra <peterz@infradead.org>
include/linux/hrtimer.h
kernel/hrtimer.c

index 771c958..51932e5 100644 (file)
@@ -153,8 +153,8 @@ struct hrtimer_clock_base {
 };
 
 enum  hrtimer_base_type {
-       HRTIMER_BASE_REALTIME,
        HRTIMER_BASE_MONOTONIC,
+       HRTIMER_BASE_REALTIME,
        HRTIMER_BASE_BOOTTIME,
        HRTIMER_MAX_CLOCK_BASES,
 };
index 1b08f6d..c541ee5 100644 (file)
@@ -63,18 +63,18 @@ DEFINE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases) =
 
        .clock_base =
        {
-               {
-                       .index = HRTIMER_BASE_REALTIME,
-                       .clockid = CLOCK_REALTIME,
-                       .get_time = &ktime_get_real,
-                       .resolution = KTIME_LOW_RES,
-               },
                {
                        .index = HRTIMER_BASE_MONOTONIC,
                        .clockid = CLOCK_MONOTONIC,
                        .get_time = &ktime_get,
                        .resolution = KTIME_LOW_RES,
                },
+               {
+                       .index = HRTIMER_BASE_REALTIME,
+                       .clockid = CLOCK_REALTIME,
+                       .get_time = &ktime_get_real,
+                       .resolution = KTIME_LOW_RES,
+               },
                {
                        .index = HRTIMER_BASE_BOOTTIME,
                        .clockid = CLOCK_BOOTTIME,