LDD3学习笔记(13):中断处理

 #include <linux/interrupt.h>

int request_irq(unsigned int irq, irqreturn_t (*handler)( ), unsigned long flags, const char *dev_name, void 

*dev_id);

void free_irq(unsigned int irq, void *dev_id);

调用这个注册和注销一个中断处理.

#include <linux/irq.h.h>

int can_request_irq(unsigned int irq, unsigned long flags);

这个函数, 在 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 

报告硬件中断和安装的处理者的文件系统节点.

unsigned long probe_irq_on(void);

int probe_irq_off(unsigned long);

驱动使用的函数, 当它不得不探测来决定哪个中断线被设备在使用. probe_irq_on 的结果必

须传回给 probe_irq_off 在中断产生之后. probe_irq_off 的返回值是被探测的中断号.

IRQ_NONE

IRQ_HANDLED

IRQ_RETVAL(int x)

从一个中断处理返回的可能值, 指示是否一个来自设备的真正的中断出现了.

void disable_irq(int irq);

void disable_irq_nosync(int irq);

void enable_irq(int irq);

驱动可以使能和禁止中断报告. 如果硬件试图在中断禁止时产生一个中断, 这个中断永远丢

失了. 一个使用一个共享处理者的驱动必须不使用这个函数.

void local_irq_save(unsigned long flags);

void local_irq_restore(unsigned long flags);

使用 local_irq_save 来禁止本地处理器的中断并且记住它们之前的状态. flags 可以被传递给 

local_irq_restore 来恢复之前的中断状态.

void local_irq_disable(void);

void local_irq_enable(void);

在当前处理器熵无条件禁止和使能中断的函数.

时间: 2024-09-18 16:48:10

LDD3学习笔记(13):中断处理的相关文章

spring学习笔记(13)基于Schema配置AOP详解

基于Schema配置入门实例 除了基于@AspectJ注解的形式来实现AOP外,我们还可以在IOC容器中配置.先来看看一个常见的应用场景,在我们的web项目中,我们需要为service层配置事务,传统的做法是在每个业务逻辑方法重复下面配置中: Created with Raphaël 2.1.0程序开始1. 获取DAO层封装好的数据库查询API,如HIbernate中的SessionFactory/Session和mybatis中的xxxMapper2. 开启事务3. 根据入参查询数据库完成相应

API Demos 2.3 学习笔记 (13)-- Views-&amp;gt;Seek Bar

更多精彩内容,请点击阅读:<API Demos 2.3 学习笔记> SeekBar 是基于ProgressBar的扩展,可以理解为添加了滑动条的ProgressBar.用户可以左右移动滑动条或者左右移动轨迹球来设置当前的进度值.最好不要在SeekBar左边或者右边放置一个可以聚焦的控件. SeekBar 控件最经典的应用是在播放器中用于显示/改变播放进度的进度条.下面是一个简单的SeekBar 控件: <SeekBar android:id="@+id/seek" a

LDD3学习笔记(22):感想

 经过几天奋战终于将LDD3看完,应该是属于略看,看过之后的感想是:1.需要学习的东西还很多! 2.中文版的翻译真的不行. 3.内核真的不简单.

LDD3学习笔记(14):内核中的数据类型

 #include <linux/types.h> typedef u8; typedef u16; typedef u32; typedef u64; 保证是 8-位, 16-位, 32-位 和64-位 无符号整型值的类型. 对等的有符号类型也存在. 在用户空 间, 你可用 __u8, __u16, 等等来引用这些类型. #include <asm/page.h> PAGE_SIZE PAGE_SHIFT 给当前体系定义每页的字节数, 以及页偏移的位数( 对于 4 KB 页是 1

ExtJs学习笔记(13)_Card布局

这个布局其实最为麻烦,主要是用来实现类似"上一步","下一步"类似向导的界面 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/199

Symbian学习笔记(13)

如何在S60第三版中做一个自启动应用. 参考这篇文章:How to autostart an application on boot up in 3rd- Startup List Management API:http://wiki.forum.nokia.com/index.php/How_to_autostart_an_application_on_boot_up_in_3rd-_Startup_List_Management_API 第一步:写一个RSS文件,就用自己的那个UID作为文件

JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性_基础知识

接下来应该是BOM和HTML5了,但是鉴于ECMAScript5相对于ECMAScript3的新变化比较多,而且这些变化也非常的有意思,因此在这篇文章中再将我认为的有意思的变化(并非全部变化)集中整理一下,但这里只是列举,不具体展开. 一.语法变化 1.关键字和保留字 在ES3中,使用关键字做标识符会导致"Identifier Expected "错误,而使用保留字做标识符可能会也可能不会导致相同的错误,具体取决于特定的引擎.在ES5中,关键字和保留字虽然不能作为标识符 使用,但可以作

Android学习笔记(13):帧布局FrameLayout

帧布局FrameLayout,直接继承自ViewGroup,每个加入的组件在一层,组件按定义的顺序一层一层叠在一起,先定义的在下层. FrameLayout支持的XML属性如下: android:foreground setForeground(Drawable) 设置该帧布局容器的前景图像 android:foregroundGravity setForegroundGravity(int) 定义绘制前景图像的gravity属性  子组件依旧可以用android:layout_gravity控

LDD3学习笔记(15):PCI驱动

 #include <linux/pci.h> 包含 PCI 寄存器的符号名和几个供应商和设备 ID 值的头文件. struct pci_dev; 表示内核中一个 PCI 设备的结构. struct pci_driver; 代表一个 PCI 驱动的结构. 所有的 PCI 驱动必须定义这个. struct pci_device_id; 描述这个驱动支持的 PCI 设备类型的结构. int pci_register_driver(struct pci_driver *drv); int pci_m