当您可以访问交叉引用 (x-ref) 源浏览器时,这很容易回答。
单击此处: http: //lxr.linux.no/#linux+v3.6.3/kernel/sched/core.c#L3214获取 Linux Kernel 的在线 x-ref 项目。(这个不会 x-ref 汇编代码。)
此链接转到 scheduler_tick
函数定义。单击函数名称,然后在右侧的新面板中选择“函数原型或声明”链接“用法...”之后。一段时间后,将列出所有提到此功能的代码:
include/linux/sched.h, line 309 << declaration
kernel/sched/core.c, line 3214 << definition
kernel/timer.c, line 1373 << calling
因此, timer.c: 1373 http://lxr.linux.no/#linux+v3.6.3/kernel/timer.c#L1373是update_process_times
函数的一部分:
1355 /*
1356 * Called from the timer interrupt handler to charge one tick to the current
1357 * process. user_tick is 1 if the tick is user time, 0 for system.
1358 */
1359 void update_process_times(int user_tick)
该函数只能从定时器中断处理程序中调用;它应该在每个滴答声中调用。
重复交叉引用搜索过程update_process_times
以获取列表:
References:
arch/alpha/kernel/smp.c, line 520
arch/arm/kernel/time.c, line 108
arch/cris/arch-v10/kernel/time.c, line 171
arch/cris/arch-v32/kernel/time.c, line 206
arch/h8300/kernel/time.c, line 40
arch/ia64/kernel/time.c, line 184
arch/m68k/kernel/time.c, line 38
arch/parisc/kernel/time.c, line 163
include/linux/sched.h, line 308
kernel/time/tick-sched.c, line 683
kernel/time/tick-sched.c, line 841
相关中断号
中断号取决于平台(有时甚至在引导时分配)。你没有说你对什么平台感兴趣。
2)在 Linux 中是否还有其他调用 scheduler_tick 的中断?如果有的话,它们是哪些?
有几种计时器实现,包括 hrtimers(高分辨率计时器,这可能与通常的系统计时器不同)。每个实现可能使用不同的中断。