Linux 核心--8.中断与中断处理( 三 )



中断发生时Linux首先读取系统可编程中断控制器中中断状态寄存器判断出中断源 , 将其转换成irq_action数组中偏移值 。例如中断控制器引脚6来自软盘控制器的中断将被转换成对应于中断处理过程数组中的第7个指针 。如果此中断没有对应的中断处理过程则Linux核心将记录这个错误 , 不然它将调用对应此中断源的所有irqaction数据结构中的中断处理例程 。

当Linux核心调用设备驱动的中断处理过程时此过程必须找出中断产生的原因以及相应的解决办法 。为了找到设备驱动的中断原因 , 设备驱动必须读取发生中断设备上的状态寄存器 。设备可能会报告一个错误或者通知请求的处理已经完成 。如软盘控制器可能将报告它已经完成软盘读取磁头对某个扇区的正确定位 。一旦确定了中断产生的原因 , 设备驱动还要完成更多的工作 。如果这样Linux核心将推迟这些操作 。以避免了CPU在中断模式下花费太多时间 。在设备驱动中断中我们将作详细讨论 。

推荐阅读