Linux中断处理驱动程序编写

本章节我们一起来探讨一下Linux中的中断:

http://blog.csdn.net/gotosola/article/details/7422072


中断处理

http://www.cnblogs.com/tianshuai11/archive/2012/04/20/2477168.html




里边有自动探测中断号:

http://blog.csdn.net/en_wang/article/details/6726421


当目标设备有能力告知驱动它要使用的中断号时,自动探测中断号只是意味着探测设备,无需做额外的工作探测中断。

但不是每个设备都对程序员友好,对于他们还是需要一些探测工作。这个工作技术上非常简单: 驱动告知设备产生中断并且观察发生了什么。如果一切顺利,则只有一个中断信号线被激活。尽管探l测在理论上简单,但实现可能不简单。有 2 种方法来进行探测中断:调用内核定义的辅助函数DIY探测

内核帮助下的探测:

linux提供了一个底层设施来探测中断号。它只能在非共享中断的模式下工作,但是大多数硬件有能力工作在共享中断的模式下,并可提供更好的找到配置中断号的方法,内核提供的这一设施由两个函数组成,在头文件<linux/interrupt.h>中声明:

<linux/interrupt.h>

unsigned long probe_irq_on(void);

/*返回一个未分配中断的位掩码。驱动必须保留返回的位掩码,并在后边传递给probe_irq_off,在调用它之后,驱动程序应当至少安排它的设备产生一次中断*/

int probe_irq_off(unsigned long);

/*在请求设备产生一次中断后,驱动调用这个函数,并将probe_irq_on产生的位掩码作为参数传递给probe_irq_off,probe_irq_off返回在probe_on之后发生的中断号。如果没有中断发生,返回0,如果产生了多次中断,返回一个负值。*/

程序员应当注意在调用 probe_irq_on 之后启用设备上的中断, 并在调用 probe_irq_off 前禁用。此外还必须记住在 probe_irq_off 之后服务设备中待处理的中断。


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。