Linux驱动 2026年8月2日 3 分钟

中断子系统9-GIC驱动程序对中断的处理流程1

1.在中断数量较少,且Linux内核版本较老的版本中对内核的管理方法 没有多余的中断控制器,直接就是一一对应,通过硬件中…

1.在中断数量较少,且Linux内核版本较老的版本中对内核的管理方法

没有多余的中断控制器,直接就是一一对应,通过硬件中断号找到虚拟中断号,然后再通过虚拟中断号找到对应的处理函数

如果存在子中断控制器也是进行一一对应来处理

通过一一对应来解决虚拟中断号到硬件中断号的对应关系

主要解决两个事情1.通过硬件中断发生时根据硬件中断号来找到虚拟中断号,再通过虚拟中断号去调用相关的中断处理程序2.通过虚拟中断号找到硬件中断,对硬件中断进行相关的设置

在老版本的Linux中,编写驱动程序的时候需要先找到irqs.h这个头文件去找到对应的虚拟中断号,就是说在老版的系统中,虚拟中断号和硬件中断是写死的。

现在的做法:硬件中断号与虚拟中断号进行解耦,虚拟中断号(申请中断时得到的中断号)看可以认为是一个下标。

在申请中断的时候,先在中断描述符数组中查询一个空位置,找到一个空位置之后,该位置的下标就是该硬件中断对应的虚拟中断号,与此同时该虚拟中断号会存储在该中断控制器对应的irq_domain数组中,该数组记录了虚拟中断与硬件中断号之间的对应关系,只有在使用的时候该对应关系才会进行填充,不再是和以前那样子直接在一开始就写死。

使用该过程如下

内核在解析设备树时候就会将硬件中断与虚拟中断进行映射

每个中断控制器里面有两个关键函数,一个用来记录硬件中断号与虚拟中断号的对应方式,另一个用来解析设备树,得到硬件中断号和中断类型

上一篇 中断子系统8-异常向量表的安装与调用完整版

异常向量表的安装与调用 1. 回顾中断的发生、处理过程 2. 异常向量表的安装 2.1 复制向量表 2.2 向量表在哪 ...

下一篇 中断子系统9-GIC驱动对中断的处理流程2

中断控制器从最开始的静态全部映射,到现在的在设备树里面用多少就映射多少 GIC驱动中的关键结构体 下面就是关键结构体分析