提交 513694b5 编写于 作者: L Linus Torvalds
...@@ -1080,8 +1080,19 @@ static void run_hrtimer_pending(struct hrtimer_cpu_base *cpu_base) ...@@ -1080,8 +1080,19 @@ static void run_hrtimer_pending(struct hrtimer_cpu_base *cpu_base)
* If the timer was rearmed on another CPU, reprogram * If the timer was rearmed on another CPU, reprogram
* the event device. * the event device.
*/ */
if (timer->base->first == &timer->node) struct hrtimer_clock_base *base = timer->base;
hrtimer_reprogram(timer, timer->base);
if (base->first == &timer->node &&
hrtimer_reprogram(timer, base)) {
/*
* Timer is expired. Thus move it from tree to
* pending list again.
*/
__remove_hrtimer(timer, base,
HRTIMER_STATE_PENDING, 0);
list_add_tail(&timer->cb_entry,
&base->cpu_base->cb_pending);
}
} }
} }
spin_unlock_irq(&cpu_base->lock); spin_unlock_irq(&cpu_base->lock);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册