我是靠谱客的博主 冷酷玫瑰,最近开发中收集的这篇文章主要介绍LDD3学习笔记(13):中断处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

#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);

这个函数,i386x86_64体系上有,返回一个非零值如果一个分配给定中断线的企图成功.

#include<asm/signal.h>

SA_INTERRUPT

SA_SHIRQ

SA_SAMPLE_RANDOM

request_irq的标志.SA_INTERRUPT请求安装一个快速处理者(相反是一个慢速的).

SA_SHIRQ安装一个共享的处理者,并且第3flag声称中断时戳可用来产生系统熵.

/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):中断处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部