hrtimer: splitout peek ahead functionality
Thomas Gleixner [Mon, 5 Jan 2009 10:28:19 +0000 (11:28 +0100)]
Impact: cleanup

Provide a peek ahead function that assumes irqs disabled, allows for micro
optimizations.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

kernel/hrtimer.c

index eb2bfef..8f7001c 100644 (file)
@@ -1243,6 +1243,22 @@ void hrtimer_interrupt(struct clock_event_device *dev)
        }
 }
 
+/*
+ * local version of hrtimer_peek_ahead_timers() called with interrupts
+ * disabled.
+ */
+static void __hrtimer_peek_ahead_timers(void)
+{
+       struct tick_device *td;
+
+       if (!hrtimer_hres_active())
+               return;
+
+       td = &__get_cpu_var(tick_cpu_device);
+       if (td && td->evtdev)
+               hrtimer_interrupt(td->evtdev);
+}
+
 /**
  * hrtimer_peek_ahead_timers -- run soft-expired timers now
  *
@@ -1254,16 +1270,10 @@ void hrtimer_interrupt(struct clock_event_device *dev)
  */
 void hrtimer_peek_ahead_timers(void)
 {
-       struct tick_device *td;
        unsigned long flags;
 
-       if (!hrtimer_hres_active())
-               return;
-
        local_irq_save(flags);
-       td = &__get_cpu_var(tick_cpu_device);
-       if (td && td->evtdev)
-               hrtimer_interrupt(td->evtdev);
+       __hrtimer_peek_ahead_timers();
        local_irq_restore(flags);
 }