一、内核的中断处理框架
1)内核处理一个外部设备中断的流程
a. 比如当外设0触发一个中断电信号时,中断控制器PIC先通过与相连的一条IRQ line收到这个信号,如果它没有被屏蔽,那么PIC应该在INT引脚上产生一个中断信号告诉CPU,当CPU接收到该信号后就开始跳转到中断向量表的通用外部设备中断处理函数入口去执行。
b. 由于所有的外部设备中断都是在这个通用中断处理函数中处理的,因此需要一个软件中断号irq让通用中断处理函数来区分中断来自哪个设备。在这个通用中断处理函数中首先从PIC得到这个irq,然后通过调用do_IRQ(unsigned int irq, struct pt_regs *regs)函数去执行这个外设0驱动中通过request_irq()所注册的ISR回调。
/*
1)这里需要注意,处理器在接收到PIC发来的中断信号时,处理器的硬件逻辑会自动屏蔽掉处理器
响应外部中断的能力,因此如果内核实现的中断处理框架不主动打开中断的话,整个中断处理流程是在
关闭硬中断的情况下进行的。因为各个外设的中断处理函数一定是由驱动程序实现的,