我正在做这样的研究,试图在 Linux 内核中找到实现中断处理的代码;特别是,我试图找到负责处理系统计时器的代码。
根据http://www.linux-tutorial.info/modules.php?name=MContent&pageid=86
内核处理中断的方式与处理异常的方式非常相似:所有通用 > 用途寄存器都被压入系统堆栈并调用一个公共中断处理程序。>保存当前中断优先级并加载新的优先级。这可以防止较低优先级的 >interrupts 在内核处理此 >interrupt 时中断内核。然后调用真正的中断处理程序。
我正在寻找将所有通用寄存器推送到堆栈上的代码,以及常见的中断处理代码。
至少将通用寄存器推入堆栈是独立于体系结构的,因此我正在寻找与 x86 体系结构相关的代码。目前我正在查看内核源代码的 3.0.4 版本,但任何版本都可能没问题。我已经开始查看 kernel/irq/handle.c,但我没有看到任何看起来像保存寄存器的东西;看起来它正在调用注册的中断处理程序。