这很简单,当你有机会获得交叉引用(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)是否有任何其他的中断,以及其称之为scheduler_tick在Linux呢?他们有哪些,如果有的话?
有几个定时器的实现,包括hrtimers(高分辨率定时器,这可能不同于通常的系统定时器)。每个实现可能使用不同的中断。
也许来自定时器中断?我不确定。 :) – Raj
是的,它是从计时器中断 - 但是,是唯一的来源?我看到它被多个函数调用,但不知道根是否只有定时器中断。 –