Regmap与IRQ管理深入解析
1. Linux内核IRQ管理概述
在Linux系统中,中断请求(IRQ)通过特殊设备——中断控制器暴露给其他设备。从软件角度看,中断控制器设备驱动利用虚拟IRQ概念(即Linux内核中的IRQ域)来管理和暴露这些中断线。中断管理基于以下几个关键结构:
- struct irq_chip :代表IRQ控制器,实现了一组用于驱动中断控制器的方法,由核心IRQ代码直接调用。必要时,驱动需填充该结构,提供一系列回调函数,如 irq_startup 、 irq_shutdown 等。对于不支持IRQ管理的简单IRQ芯片,可使用内核提供的 dummy_irq_chip 。
- struct irq_domain :每个中断控制器都有一个对应的域,类似于进程的地址空间。该结构存储硬件IRQ和Linux IRQ(虚拟IRQ,即virq)之间的映射关系,是硬件中断号的转换对象。它提供了指向固件节点的指针、将固件描述的IRQ转换为本地ID的方法,以及从硬件IRQ获取Linux IRQ视图的途径。
- struct irq_desc :是Linux内核对中断的视图,包含所有核心信息,并与Linux中断号一一对应。
- struct irq_action :用于描述IRQ处理程序。
- struct irq_data :嵌入在 struct irq_desc
超级会员免费看
订阅专栏 解锁全文
29

被折叠的 条评论
为什么被折叠?



