linux 内核 --- 中断子系统

发布时间 2023-10-05 00:31:44作者: 流水灯

ARM芯片有硬件中断号,比如0~15是SGI中断

linux内核规定了软件中断号及软件中断号的功能;不直接使用ARM芯片的硬件中断号是因为linux内核是适配多架构操作系统,比如有些芯片硬件中断号20是GPIO中断,有些芯片是25;linux统一规定了某个中断号对应GPIO中断。这样就存在硬件中断号和软件中断号的映射(IRQ domain)

下面除非特别说明,否则出现的中断号都是软件中断号

 

相关API

request_irq() // 注册中断,第一个参数就是软件中断号

freee_irq() // 注销中断

 

代码分析

request_irq()

每个中断号都对应一个 struct irq_desc 实例,request_irq() 的目的就是填写对应中断号的 struct irq_desc,比如填写中断处理函数。

当触发中断时,就可以取出对应中断号的中断服务函数执行。