Linux内核中的Regmap与IRQ管理深入解析
1. 引言
在Linux内核中,中断请求(IRQ)管理是一个至关重要的部分,它涉及到设备与系统之间的高效通信。Regmap不仅抽象了寄存器的访问,还在较低层次上对IRQ管理进行了抽象,如IRQ芯片处理,从而隐藏了一些繁琐的操作。本文将详细介绍Linux内核中的IRQ管理机制,包括相关数据结构、映射方法、中断处理方式以及新的API。
2. Linux内核IRQ管理快速回顾
2.1 中断控制器与虚拟IRQ
IRQs通过称为中断控制器的特殊设备暴露给其他设备。从软件角度看,中断控制器设备驱动程序使用虚拟IRQ概念(在Linux内核中称为IRQ域)来管理和暴露这些中断线。
2.2 关键数据结构
- struct irq_chip :这是IRQ控制器在Linux中的表示,实现了一组用于驱动中断控制器的方法,由核心IRQ代码直接调用。必要时,驱动程序应填充此结构,提供一组回调函数,用于管理IRQ芯片上的IRQ,如irq_startup、irq_shutdown等。对于不支持IRQ管理的芯片,可以使用内核提供的dummy_irq_chip。
- struct irq_domain :每个中断控制器都有一个域,类似于进程的地址空间。该结构存储硬件IRQ和Linux IRQ(虚拟IRQ,即virq)之间的映射,是硬件中断号的转换对象。它提供了指向固件节点的指针、将固件(设备树)描述的IRQ转换为中断控制器本地ID(硬件IRQ号,即hwirq)的方法以及从hwirq获取Li
超级会员免费看
订阅专栏 解锁全文
28

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



