image.png
- 每个中断处理函数都会注册在 irq_desc 的基数树中,我们可以通过一个抽象的中断信号找到对应的irqaction。
- 每次系统启动就会将中断分发到各个cpu的中断向量表中,通过中断向量表的值再主找到到irq_desc中对应的irqaction
- 处理中断的四层
- 第一个层次是外部设备给中断控制器发送物理中断信号。
- 第二个层次是中断控制器将物理中断信号转换成为中断向量 interrupt vector,发给各个 CPU。
- 第三个层次是每个 CPU 都会有一个中断向量表,根据 interrupt vector 调用一个 IRQ 处理函数。注意这里的 IRQ 处理函数还不是咱们上面指定的 irq_handler_t,到这一层还是 CPU 硬件的要求。第四个层次是在 IRQ 处理函数中,将 interrupt vector 转化为抽象中断层的中断信号 irq,调用中断信号 irq 对应的中断描述结构里面的 irq_handler_t。
网友评论