aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2011-05-20 17:14:04 -0400
committerThomas Gleixner <tglx@linutronix.de>2011-05-23 07:59:54 -0400
commit68fa61c026057a39d6ccb850aa8785043afbee02 (patch)
treeaa8a96849d4bd9b1e46c602d398cda0e72d4115c
parentab8177bc53e8ae3a3ba6d200ce2c2dae263f7ee5 (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.h2
-rw-r--r--kernel/hrtimer.c12
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
155enum hrtimer_base_type { 155enum 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,