首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IRQ7上的并口IRQ处理器配准

IRQ7上的并口IRQ处理器配准
EN

Stack Overflow用户
提问于 2013-05-17 09:06:50
回答 2查看 805关注 0票数 0

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

现在,首先我必须访问IRQ7,因为我的并行口给出了中断(我在/proc/interrupts上见过)。

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

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

CPU0 CPU1

0: 98 0 IO-APIC边缘定时器

1: 11764 2178个IO-APIC边缘i8042

3: 20 IO-APIC-edge

4: 20 IO-APIC-edge

7: 8 0 IO-APIC边缘parport0

8: 10 IO-APIC边缘rtc0

9: 0 IO-APIC-fasteoi acpi

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

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

那么,我如何在irq7上注册我的中断处理程序,以便管理来自并行口的中断呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-17 09:33:53

您的系统上已经安装了一个并行端口驱动程序。这就是为什么内核不能为您的驱动程序分配irq。首先,卸载当前的并行驱动程序,然后重试。

票数 0
EN

Stack Overflow用户

发布于 2013-05-17 17:51:25

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16605324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档