Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux IRQ7上的并行端口IRQ处理程序注册_Linux_Linux Kernel_Linux Device Driver_Embedded Linux_Archlinux - Fatal编程技术网

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

Linux IRQ7上的并行端口IRQ处理程序注册,linux,linux-kernel,linux-device-driver,embedded-linux,archlinux,Linux,Linux Kernel,Linux Device Driver,Embedded Linux,Archlinux,我已经用IRQ处理器编写了一个并行端口驱动程序的设备驱动程序 现在,首先我必须访问IRQ7,因为我的并行端口在它上面提供中断(我在/proc/interrupts上看到过) 现在,我面临的问题是,每当我试图请求irq7时,我的request_irq()函数都会失败 另外,我的cat/proc/interrupt看起来像: CPU0 CPU1 0:98 0 IO APIC边缘计时器 1:117642178 IO APIC边缘i8042 3:20 IO顶点边缘 4:20 IO顶点边缘 7:80 IO

我已经用IRQ处理器编写了一个并行端口驱动程序的设备驱动程序

现在,首先我必须访问IRQ7,因为我的并行端口在它上面提供中断(我在/proc/interrupts上看到过)

现在,我面临的问题是,每当我试图请求irq7时,我的request_irq()函数都会失败

另外,我的cat/proc/interrupt看起来像:

CPU0 CPU1
0:98 0 IO APIC边缘计时器
1:117642178 IO APIC边缘i8042

3:20 IO顶点边缘
4:20 IO顶点边缘
7:80 IO APIC边缘参数0

8:10 IO APIC边缘rtc0

9:00 IO APIC fasteoi acpi

我不知道什么是parport0。 按照我的想法,由于这个参数,我的请求失败了

我读到: “parport”代码在Linux下提供并行端口支持。这包括在多个设备驱动程序之间共享一个端口的能力。您可以将参数传递给parport代码,以覆盖其对硬件的自动检测。如果您想使用IRQ,这尤其有用,因为通常这些IRQ无法成功自动探测。默认情况下,即使可以探测IRQ,也不会使用IRQ。这是因为有很多人使用相同的IRQ作为他们的并行端口和声卡或网卡


那么,如何在irq7上注册中断处理程序,以便从并行端口管理中断?

您的系统上已经安装了并行端口驱动程序。这就是内核无法为驱动程序分配irq的原因。首先,卸载当前并行驱动程序,然后再试一次。

如果您检查请求的返回代码,\u irq,这会有所帮助。它会告诉你失败的原因。正如rakib所指出的,parport0(默认驱动程序)很可能已经安装。您可以尝试注册一个共享的IRQ处理程序——这应该会起作用:大多数IRQ都是可共享的(SA_SHIRQ标志)。还请记住不要将空指针作为设备ID传递。

如何卸载??你能告诉我怎么走吗?它是默认的驱动程序吗?还有,他们告诉如果有更多的用户,那么他们总是共享irq7。那么怎么可能呢?使用rmmod命令卸载parport模块。比如:“rmmod parportmodulename”试试吧!为什么?rmmod失败了?或者其他原因?它会给我一个使用中的错误。这不是动态加载谢谢你的回复。我曾经用过SA_SHIRQ,并尝试过,但没有成功。