我已经编写了一个带有 IRQ 处理程序的并行端口驱动程序的设备驱动程序。
现在,首先我必须访问 IRQ7,因为我的并行端口在其上提供中断(我在/proc/interrupts 上看到过)。
现在,我面临的问题是每当我尝试请求 irq7 时,request_irq() 函数就会失败。
另外,我的猫/proc/interrupt 看起来像::
CPU0 CPU1
0: 98 0 IO-APIC 边沿定时器
1:11764 2178 IO-APIC-edge i8042
3:2 0 IO-APIC-边缘
4:2 0 IO-APIC-边缘
7:8 0 IO-APIC-边缘 parport0
8:1 0 IO-APIC-edge rtc0
9:0 0 IO-APIC-fasteoi acpi
我不知道 parport0 是什么。 根据我的想法,由于这个 parport0,我的 request_irq 失败了。
我读过: `parport' 代码提供 Linux 下的并行端口支持。这包括在多个设备驱动程序之间共享一个端口的能力。您可以将参数传递给 parport 代码以覆盖其对硬件的自动检测。如果您想使用 IRQ,这尤其有用,因为通常无法成功自动探测这些 IRQ。默认情况下,即使可以探测 IRQ,也不会使用它们。这是因为很多人的并行端口和声卡或网卡使用相同的 IRQ。
那么,我如何在 irq7 上注册我的中断处理程序,以便我可以管理来自并行端口的中断?
最佳答案
您的系统上已经安装了并行端口驱动程序。这就是内核无法为您的驱动程序分配 irq 的原因。首先,卸载当前并行驱动程序,然后重试。
关于linux - IRQ7 上的并行端口 IRQ 处理程序注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16605324/