前面我们搞清楚了elx_irq的外围部分,了解清楚了kernel_enter/kernel_exit大致的作用。本节我们进入到硬中断处理部分。硬中断处理程序的位置见下图:
硬中断处理主要的工作就是判断中断发起源,应答中断控制器,根据中断源查询出并调用该中断源的设备级处理函数。
前面讲到一个硬件中断产生后,PE会发起el1_irq异常处理程序。实际上在硬件中断产生后到PE会发起调用之间,硬件系统的中断控制器还做了很多的工作,我们先中断控制器开始。
先抛开中断控制器繁琐的功能描述和Feather list,从最为基本功能开始去理解:
(1)CPU得知道是哪个中断源被触发了吧?
(2)多核系统得有一个决策把中断发给哪个CPU去处理吧
(3)中断源的优先级需要管理吧
(4)更高级一点,中断正在处理,又有中断产生,是抛弃还是Pending?