linux中断处理程序
Linux进行中断处理的4个步骤:
1、当中断产生,跳到统一入口IRQ_SVC
2、获取中断号
3、根据中断号找到irq_desc结构
4、从irq_desc结构中取出事先注册好的中断处理函数
Linux中断处理程序设计:
1、注册中断
2、实现中断处理函数
3、注销处理
一、注册中断
使用request_irq函数
原型:int request_irq(unsigned int irq,irq_handler_t handler,unsigned long flags, const char *devname, void *dev_id)
参数:
irq:中断号
handler:中断处理函数名
flags:中断选项,例:IRQF_TRIGGER_FALLING(在下降沿触发中断),其余选项对IRQF_TRIGGER_FALLING逆搜索即可得出
devname:产生中断的设备名
id:设备id,当中断选项为IRQF_SHARED共享中断时用到,即同一中断号会包含多个设备的irq_desc结构体,根据设备id加以区分
二、实现中断处理函数
中断处理函数有以下限制:
1、不能调用可能引起阻塞的函数
2、不能调用可能引起中断的函数
处理流程:
1、检查设备是否产生中断
2、清除中断产生标志
3、相应的硬件操作
其中,第一步针对共享中断,第二步通常内核会进行清除。
/*中断处理函数*/
irqreturn_t key_int(int irq, void *dev_id)
{
/*1、检测设备是否产生中断*/ /*2、清除中断产生标志*/ /*3、相应的硬件操作*/
printk("press key down\n"); return ;
}
三、注销中断
free_irq函数
原型:void free_irq(unsigned int irq, void *dev_id)
参数:
irq:中断号
id:设备id
四、中断号查找
用SourceInsight查看linux内核源代码,打开s3c2410对应的irqs.h

查看mini2440手册和s3c2440芯片手册查到设备对应的硬件中断号,即EINTXX,在内核代码中中断号即为与之对应的IRQ_EINTXX
linux中断处理程序的更多相关文章
- 13.linux中断处理程序
linux中断处理程序 一.中断处理流程 在linux内核代码中进入entry-armv.S目录: linux统一的入口:__irq svc. 进入了统一的入口之后,程序跳到irq_handler标号 ...
- linux内核--中断处理程序
一个设备的中断处理程序是它设备驱动程序的一部分--设备驱动程序是用于对设备进行管理的内核代码.中断处理程序与其他内核函数的真正区别在于,中断处理程序是被内核调用来响应中断的,而它们运行于我们称之为中断 ...
- Linux中断概述
中断和异常 1.1中断的由来及实质 Linux内核要管理计算机上的硬件设备,首先要和他们通信.而处理器的速度跟外围硬件设备的速度往往不在一个数量级上,因此,如果内核采取让处理器向硬件发出一个请求,然后 ...
- Linux中断驱动程序
1.中断概念 中断时一种电信号,由硬件设备产生,然后再由中断控制器向处理器发送相应的信号.处理器一经检测到该信号,便中断自己当前正在处理的工作,转而去处理中断.此后,处理器会通知操作系统已经产生中断. ...
- linux内核分析笔记----中断和中断处理程序【转】
转自:http://www.cnblogs.com/hanyan225/archive/2011/07/17/2108609.html 中断还是中断,我讲了很多次的中断了,今天还是要讲中断,为啥呢?因 ...
- Linux设备驱动 之 中断处理程序
注册中断处理程序 中断处理程序是管理硬件驱动程序的组成部分:如果设备使用中断,那么相应的驱动程序就注册一个中断处理程序: 驱动程序通过request_irq()函数注册,并且激活给定的中断线,以处理中 ...
- linux内核分析笔记----中断和中断处理程序
中断还是中断,我讲了很多次的中断了,今天还是要讲中断,为啥呢?因为在操作系统中,中断是必须要讲的.. 那么什么叫中断呢, 中断还是打断,这样一说你就不明白了.唉,中断还真是有点像打断.我们知道linu ...
- linux中断与异常
看了<深入理解linux内核>的中断与异常,简单总结了下,如果有错误,望指正! 一 什么是中断和异常 异常又叫同步中断,是当指令执行时由cpu控制单元产生的,之所以称之为异常,是因为只有在 ...
- Linux 中断详解 【转】
转自:http://blog.csdn.net/tiangwan2011/article/details/7891818 原文地址 http://www.yesky.com/20010813/1921 ...
随机推荐
- 在 iPad和 iPhone的浏览器上查看网页源代码
今天使用iPad 处理OA上的问题,有个窗口不能正常工作,想查看一下源码,发现iPad中的 Safari和chrome 没有内置查看源码功能.查了几个资料,遇到的又是没抄全的,下面是safari的设置 ...
- Cloudra公司CCP:DS——认证数据专家
原文:http://vision.cloudera.com/24195/. 译文: 每天我都能看到大数据怎样改变我们生活的文章.数据科学家们正在生物医药领域找寻新的方法治愈癌症.帮助银行与欺诈做斗争, ...
- Eclipse、MyEclipse使用git插件(egit)
在开发Java.JavaEE等相关程序时,我们会用到Eclipse或者MyEclipse,同时使用到git作为版本控制软件,所以我们需要在这些IDE上集成git插件,而egit正是Eclipse基金会 ...
- Android 带你玩转实现游戏2048 其实2048只是个普通的控件(转)
1.概述 博主本想踏入游戏开放行业,无奈水太深,不会游泳:于是乎,只能继续开发应用,但是原生Android也能开发游戏么,2048.像素鸟.别踩什么来着:今天给大家带来一篇2048的开发篇,别怕不分上 ...
- 2015 UESTC Winter Training #8【The 2011 Rocky Mountain Regional Contest】
2015 UESTC Winter Training #8 The 2011 Rocky Mountain Regional Contest Regionals 2011 >> North ...
- mui实现支付宝支付功能
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>H ...
- VS2010 快捷键--我的总结
启动VS,可在运行中输入“devenv”: [窗口快捷键] Ctrl+Alt+L 解决方案管理器 Ctrl+W,C: 类视图 Ctrl+W,O: 输出视图 Ctrl+W,T: 任务 ...
- C# 窗口传值的方法
方法一: A to B 设置FormB 为 带参数的构造函数 public Form2( object msg) { InitializeComponent(); } 方法二: A to B 定义一 ...
- 转载-- C/S 与 B/S 区别
C/S 与 B/S 区别 C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可 ...
- 营配数据质量核查,关于营销mis系统与配电gis系统里面的sql语句查询,做为积累使用,下次就不用重复写同样的语句了。
1.配电gis线路导出数据: select r.name 线路名称,r.run_status 运行状态,r.voltage_level 电压等级,r.manager_depart 管理部门,r.bel ...