新手:Linux下中断处理的疑问
最近要写一个驱动,不过避免地要用到中断。看着网上的资料先做一个练习,发现2.4和2.6差异很大,而2.6的不同版本之前也有变化,如中断处理函数原来是三个参数,后来变为两个了,真是麻烦。
好,发完了牢骚,明确一下问题:
1. 原来中断处理函数最后一个参数是什么含义,为什么去掉了?
2. 有资料说对于共享的中断,如果不是自己处理的设备应该返回IRQ_NONE,否则返回IRQ_HANDLED,后续不再处理。但我把自己的中断代码挂到网卡驱动的中断上之后,不管返回哪一个,我的网卡收发数据还是通的,难道是网卡的驱动中断总是在前面执行并且之后返回了IRQ_NONE?我用的环境是Fedora8.0,在虚拟机中安装的,由于host是双网卡的,guest里面也是两个brigded双网卡。
3. 编译时总是有一个Warning:
.../my_test/myirqtest.c:34: 警告:‘deprecated_irq_flag’ 已过时(于 include/linux/interrupt.h:64 声明)
我看了一下interrupt.h的代码,它是用一个inline函数生成SA_SHIRQ的,应该是这个导致的(可能是GCC的自有机制吧,反正没看明白)。不知道这样是不是隐含着什么问题?
PS: 对于系统编程而言,Linux的Manual Pages已经很仔细了,但对于驱动开发而言,在Manual Pages中是找不到request_irq等函数的,而由于各版本差异比较大,网上找也很是费劲。不知道大家平时是如何解决这一问题的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
自己踢一下。这里居然还有字数限制。
再踢一下。
主要是想确认下大家如何解决开发驱动需要的资料问题。内核接口不稳定,而且还找不到相关的资料,如pci_alloc_consistent函数google了很久也没有一个具体的解释。
现在在对着别的人代码及LDD3看,但这本书中关于PCI的部分讲的也很含糊,许多函数都没有提到,而给的示例只是没多大用的。