Linux系统函数timer_interrupt怎么调用到了tick_handle_periodic
时间: 2024-02-07 07:04:04 浏览: 29
在Linux内核中,`timer_interrupt`函数是定时器中断处理程序,它会在每个时钟中断发生时被调用。在处理时钟中断时,它会检查系统中所有的定时器,看哪些定时器已经到期,然后执行相应的操作。其中,如果发现定时器是周期性的,就会调用`tick_handle_periodic`函数来处理这个定时器周期性到期的情况。
`tick_handle_periodic`函数是Linux内核中用于处理周期性时钟中断的函数。它会根据定时器的设置,更新当前时间,并执行定时器到期时需要执行的回调函数。当`timer_interrupt`函数检测到周期性定时器已经到期时,就会调用`tick_handle_periodic`函数来处理这个定时器的到期事件。
相关问题
timer_interrupt怎么最终调用到了tick_handle_periodic
在操作系统中,timer_interrupt是一个硬件中断处理程序,当计时器到达指定时间时,会触发该中断。在中断处理程序中,会调用处理定时器中断的函数tick_handle_periodic来执行一些周期性的操作,比如更新系统时间、调度进程等。
具体来说,在Linux内核中,timer_interrupt会调用do_timer函数来处理定时器中断。do_timer函数会检查是否有需要唤醒的进程,如果有,则会调用wake_up_process来唤醒这些进程;然后会更新系统时间,并调用tick_handle_periodic来执行周期性操作;最后,会检查是否需要进行进程调度,如果需要,则会调用schedule函数来进行调度。
linux内核timer_interrupt()函数在哪
`timer_interrupt()`函数是Linux内核中用于处理定时器中断的函数,它位于文件`kernel/time/timer.c`中。
具体来说,该函数的定义在`kernel/time/timer.c`文件中,其函数原型为:
```c
irqreturn_t timer_interrupt(int irq, void *dev_id);
```
在该函数中,会根据系统时钟中断的频率来更新内核中的计时器(jiffies),同时检查是否有定时器到期并触发相应的定时器处理函数。
需要注意的是,`timer_interrupt()`函数是在中断上下文中运行的,因此需要遵循中断上下文的相关规则。