字符设备驱动----中断程序
2015-11-17 23:55
281 查看
Linux内核将所有的中断统一编号,使用一个irq_desc结构数组来描述这些中断:每个数组项对应一个中断。
2. 在 vector_irq 里面,最终会调用中断处理的总入口函数asm_do_IRQ.
3. asm_do_IRQ 根据中断号调用 irq_desc 数组项中的handle_irq.
4. handle_irq 会使用chip成员中的函数来设置硬件。
5. handle_irq 逐个调用用户在 action 链表中注册的处理函数。
可见,中断体系结构的初始化就是构造这些数据结构,比如irq_desc数组项中的handle_irq, chip等成员。
用户注册中断时就是构造action 链表。
用户卸载中断时就是从action链表中去除不需要的项。
一. 中断的处理流程如下:
1. 发生中断时,CPU执行异常向量 vector_irq 的代码。2. 在 vector_irq 里面,最终会调用中断处理的总入口函数asm_do_IRQ.
3. asm_do_IRQ 根据中断号调用 irq_desc 数组项中的handle_irq.
4. handle_irq 会使用chip成员中的函数来设置硬件。
5. handle_irq 逐个调用用户在 action 链表中注册的处理函数。
可见,中断体系结构的初始化就是构造这些数据结构,比如irq_desc数组项中的handle_irq, chip等成员。
用户注册中断时就是构造action 链表。
用户卸载中断时就是从action链表中去除不需要的项。
二. 用户注册与卸载中断
//注册 int request_irq(unsigned int irq, irq_hander_t handler, unsigned long irqflags, const char* devname, void * dev_id); //卸载 void free_irq(unisgned int irq, void* dev_id)
相关文章推荐
- Android5.0以上版本ActiveAndroid报ClassNotFoundException错误
- uboot - 主Makefile分析【1】
- 使用Hanlp加载大字典
- 在androidStudio打开eclipse工程,且保留其目录结构
- git快速入门之一:创建本地仓库并同步到远程
- Google MapReduce/GFS/BigTable三大技术的论文中译版
- 用到蛋疼的sort
- Eclipse中编译和运行时使用的JDK和JRE级别问题(关于"Bad version number in .class file"的异常解决)
- Objective-c:设计模式
- Linux下使用LVM
- 相机
- HBase数据迁移(1)-使用HBase的API中的Put方法
- this.AcceptButton = button1的用法:
- 树状数组
- 3032-杨辉三角
- jmail + c#实现邮件的接收
- ELK学习8_ELK数据流传输过程_问题总结1
- 从相册选取图片
- laravel学习笔记二
- 南大软院大神养成计划-第二天