如图所示,完整的中断系统由两部分组成:硬件电路和软件处理。
硬件处理的一般过程:
1.硬件电路产生IRQ信号。
2.可编程中断控制控制器(PIC)收集IRQn值,转换成相应的向量。
3.PIC将中断向量由INT发送到CPU,进入软件中断处理。
软件处理的一般过程:
1.初始化阶段向linux内核注册中断处理程序。
2.中断发生时,通过中断描述符表IDT获取中断服务例程(ISR)链表入口。
3.调用do_irq()程序,获取action的指针,并查询对应dev_id设备状态,找到处于中断的设备,然后调用注册的中断处理程序。
整个中断处理的流程,可简单表示为:
