linux - IRQ7 上的并行端口 IRQ 处理程序注册

标签 linux linux-kernel linux-device-driver embedded-linux archlinux

我已经编写了一个带有 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/

相关文章:

linux - 为什么MMIO空间作为单个PTE映射到/dev/mem所以没有struct page?

regex - Perl 获取唯一和排序元素的计数器

linux - 让应用程序签署文档,但不要让它看到 key

linux - Linux 中的设备驱动程序开发

linux - 如果安装在不同的分区上,/和/mnt/upgrade 之间的区别

c - Linux内核为模块生成compile-commands.json

linux-device-driver - I2C 设备 id 表的 driver_data 成员的使用

java - 如何获取环境变量的值?

c - Linux 文件中的魔数(Magic Number)。 C语言编程

linux-kernel - 通过 mmap 提供多个内核缓冲区