timers: prepare for full preemption improve
PATCH 1/1 timers: prepare for full preemption improve
wake_up should do nothing on the nort, so we should use wakeup_timer_waiters, also fix a spell mistake.
Signed-off-by Zhao Hongjiang <[email protected]>
--- kernel/timer.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-)
kernel/timer.c +6 -2
@@ -76,7 +76,9 @@ struct tvec_root {struct tvec_base {spinlock_t lock;struct timer_list *running_timer; +#ifdef CONFIG_PREEMPT_RT_BASE wait_queue_head_t wait_for_running_timer; +#endif unsigned long timer_jiffies;unsigned long next_timer;struct tvec_root tv1;
@@ -974,7 +976,7 @@ static void wait_for_running_timer(struct timer_list *timer) base->running_timer != timer); } -# define wakeup_timer_waiters (b) wake_up(&(b)->wait_for_tunning_timer) +# define wakeup_timer_waiters (b) wake_up(&(b)->wait_for_running_timer)#else static inline void wait_for_running_timer (struct timer_list *timer) {
@@ -1231,7 +1233,7 @@ static inline void __run_timers(struct tvec_base *base)spin_lock_irq (&base->lock); } } -wake_up (&base->wait_for_running_timer); +wakeup_timer_waiters (base);spin_unlock_irq (&base->lock); }
@@ -1759,7 +1761,9 @@ static int __cpuinit init_timers_cpu(int cpu) }spin_lock_init (&base->lock); +#ifdef CONFIG_PREEMPT_RT_BASE init_waitqueue_head (&base->wait_for_running_timer); +#endif for (j =0 ; j <TVN_SIZE ; j++) {INIT_LIST_HEAD (base->tv5.vec + j);
-- 1.7.1
Sebastian Andrzej Siewior
AppliedQuoted 4 lines · * Zhao Hongjiang | 2013-04-17 17:44:16 [+0800]:
wake_upshould do nothing on the nort, so we should usewakeup_timer_waiters, also fix a spell mistake.Signed-off-by Zhao Hongjiang <[email protected]>
Applied. I added CONFIG_PREEMPT_RT_FULL instead of CONFIG_PREEMPT_RT_BASE because wakeup_timer_waiters() is defined under CONFIG_PREEMPT_RT_FULL.
Sebastian