首页 / LINUX / linux中断处理程序
linux中断处理程序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux中断处理程序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1008字,纯文字阅读大概需要2分钟。
内容图文
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"); return0; }
三、注销中断
free_irq函数
原型:void free_irq(unsigned int irq, void *dev_id)
参数:
irq:中断号
id:设备id
四、中断号查找
用SourceInsight查看linux内核源代码,打开s3c2410对应的irqs.h
查看mini2440手册和s3c2440芯片手册查到设备对应的硬件中断号,即EINTXX,在内核代码中中断号即为与之对应的IRQ_EINTXX
原文:http://www.cnblogs.com/51qianrushi/p/4294606.html
内容总结
以上是互联网集市为您收集整理的linux中断处理程序全部内容,希望文章能够帮你解决linux中断处理程序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。