深入理解中断处理:从获取 IRQ 到临界区保护
1. 获取合适的 IRQ
在为驱动程序注册处理程序之前,需要确定要使用的 IRQ(中断请求)。这高度依赖于硬件,包括外围设备类型和主机总线类型(如 ISA、PCI 或 SPARC 上的 SBUS)。
1.1 不同总线类型的处理方式
- ISA 总线 :虽然曾尝试为 ISA 设备部分添加即插即用功能,但 ISA 发明时即插即用还未成为问题,且没有真正的标准。
- PCI 总线 :提供了一种干净、标准化的方式来检索配置信息,无需进行复杂的探测和猜测。不过,处理 PCI 设备超出了本文范围,若要处理 PCI 设备,可从
linux/pci.h开始,Linux 源码中也有大量示例。
1.2 硬件配置信息获取
如果硬件允许直接检索配置信息,则无需自行探测。这些信息通常在硬件设备手册中,但没有通用的获取方法。对于不支持更优方式的设备,Linux 提供了中断检测功能。
1.3 中断探测函数
-
unsigned long probe_irq_on(void):启动探测序列。 -
int probe_irq_off(unsigned long unused):结束探测序列。
1.4 探测序列示例
int ir
超级会员免费看
订阅专栏 解锁全文
7

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



