概述
#include<linux/interrupt.h>
intrequest_irq(unsignedintirq,irqreturn_t(*handler)(),unsignedlongflags,constchar*dev_name,void
*dev_id);
voidfree_irq(unsignedintirq,void*dev_id);
调用这个注册和注销一个中断处理.
#include<linux/irq.h.h>
intcan_request_irq(unsignedintirq,unsignedlongflags);
这个函数,在i386和x86_64体系上有,返回一个非零值如果一个分配给定中断线的企图成功.
#include<asm/signal.h>
SA_INTERRUPT
SA_SHIRQ
SA_SAMPLE_RANDOM
给request_irq的标志.SA_INTERRUPT请求安装一个快速处理者(相反是一个慢速的).
SA_SHIRQ安装一个共享的处理者,并且第3个flag声称中断时戳可用来产生系统熵.
/proc/interrupts
/proc/stat
报告硬件中断和安装的处理者的文件系统节点.
unsignedlongprobe_irq_on(void);
intprobe_irq_off(unsignedlong);
驱动使用的函数,当它不得不探测来决定哪个中断线被设备在使用.probe_irq_on的结果必
须传回给probe_irq_off在中断产生之后.probe_irq_off的返回值是被探测的中断号.
IRQ_NONE
IRQ_HANDLED
IRQ_RETVAL(intx)
从一个中断处理返回的可能值,指示是否一个来自设备的真正的中断出现了.
voiddisable_irq(intirq);
voiddisable_irq_nosync(intirq);
voidenable_irq(intirq);
驱动可以使能和禁止中断报告.如果硬件试图在中断禁止时产生一个中断,这个中断永远丢
失了.一个使用一个共享处理者的驱动必须不使用这个函数.
voidlocal_irq_save(unsignedlongflags);
voidlocal_irq_restore(unsignedlongflags);
使用local_irq_save来禁止本地处理器的中断并且记住它们之前的状态.flags可以被传递给
local_irq_restore来恢复之前的中断状态.
voidlocal_irq_disable(void);
voidlocal_irq_enable(void);
在当前处理器熵无条件禁止和使能中断的函数.
最后
以上就是冷酷玫瑰为你收集整理的LDD3学习笔记(13):中断处理的全部内容,希望文章能够帮你解决LDD3学习笔记(13):中断处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复