diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2011-05-20 17:14:04 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2011-05-23 07:59:54 -0400 |
commit | 68fa61c026057a39d6ccb850aa8785043afbee02 (patch) | |
tree | aa8a96849d4bd9b1e46c602d398cda0e72d4115c | |
parent | ab8177bc53e8ae3a3ba6d200ce2c2dae263f7ee5 (diff) |
hrtimers: Reorder clock bases
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>
-rw-r--r-- | include/linux/hrtimer.h | 2 | ||||
-rw-r--r-- | kernel/hrtimer.c | 12 |
2 files changed, 7 insertions, 7 deletions
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h index 771c95802edc..51932e5acf7c 100644 --- a/include/linux/hrtimer.h +++ b/include/linux/hrtimer.h | |||
@@ -153,8 +153,8 @@ struct hrtimer_clock_base { | |||
153 | }; | 153 | }; |
154 | 154 | ||
155 | enum hrtimer_base_type { | 155 | enum hrtimer_base_type { |
156 | HRTIMER_BASE_REALTIME, | ||
157 | HRTIMER_BASE_MONOTONIC, | 156 | HRTIMER_BASE_MONOTONIC, |
157 | HRTIMER_BASE_REALTIME, | ||
158 | HRTIMER_BASE_BOOTTIME, | 158 | HRTIMER_BASE_BOOTTIME, |
159 | HRTIMER_MAX_CLOCK_BASES, | 159 | HRTIMER_MAX_CLOCK_BASES, |
160 | }; | 160 | }; |
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c index 1b08f6d67f12..c541ee527ecb 100644 --- a/kernel/hrtimer.c +++ b/kernel/hrtimer.c | |||
@@ -64,18 +64,18 @@ DEFINE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases) = | |||
64 | .clock_base = | 64 | .clock_base = |
65 | { | 65 | { |
66 | { | 66 | { |
67 | .index = HRTIMER_BASE_REALTIME, | ||
68 | .clockid = CLOCK_REALTIME, | ||
69 | .get_time = &ktime_get_real, | ||
70 | .resolution = KTIME_LOW_RES, | ||
71 | }, | ||
72 | { | ||
73 | .index = HRTIMER_BASE_MONOTONIC, | 67 | .index = HRTIMER_BASE_MONOTONIC, |
74 | .clockid = CLOCK_MONOTONIC, | 68 | .clockid = CLOCK_MONOTONIC, |
75 | .get_time = &ktime_get, | 69 | .get_time = &ktime_get, |
76 | .resolution = KTIME_LOW_RES, | 70 | .resolution = KTIME_LOW_RES, |
77 | }, | 71 | }, |
78 | { | 72 | { |
73 | .index = HRTIMER_BASE_REALTIME, | ||
74 | .clockid = CLOCK_REALTIME, | ||
75 | .get_time = &ktime_get_real, | ||
76 | .resolution = KTIME_LOW_RES, | ||
77 | }, | ||
78 | { | ||
79 | .index = HRTIMER_BASE_BOOTTIME, | 79 | .index = HRTIMER_BASE_BOOTTIME, |
80 | .clockid = CLOCK_BOOTTIME, | 80 | .clockid = CLOCK_BOOTTIME, |
81 | .get_time = &ktime_get_boottime, | 81 | .get_time = &ktime_get_boottime, |