/** * tick_program_event */ int tick_program_event(ktime_t expires, int force) { struct clock_event_device *dev = __this_cpu_read(tick_cpu_device.evtdev);
if (unlikely(expires.tv64 == KTIME_MAX)) { /* * We don't need the clock event device any more, stop it. */ clockevents_switch_state(dev, CLOCK_EVT_STATE_ONESHOT_STOPPED); return 0; }
if (unlikely(clockevent_state_oneshot_stopped(dev))) { /* * We need the clock event again, configure it in ONESHOT mode * before using it. */ clockevents_switch_state(dev, CLOCK_EVT_STATE_ONESHOT); }
return clockevents_program_event(dev, expires, force); }
下面这些函数会对timer重新编程:
hrtimer_force_reprogram
hrtimer_interrupt
__tick_broadcast_oneshot_control
tick_nohz_restart
tick_nohz_stop_sched_tick
tick_nohz_handler
最后
以上就是危机秋天最近收集整理的关于Linux 内核时钟之oneshot编程的全部内容,更多相关Linux内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复