每日阅读11之内核设计与实现——注册中断处理程序
来源:互联网 发布:游族网络怎么样 编辑:程序博客网 时间:2024/05/19 23:15
好久没有写博客了,已经有点迷失自我,忘了自己最重要的事情,罪过罪过。。。
中断处理程序是管理硬件的驱动程序的组成部分。
每一设备都有相关的驱动程序,如果设备使用中断的方式与CPU通信,那么驱动程序就会注册一个中断处理程序.(1个?)
驱动程序通过函数request_irq()注册一个中断处理程序,并激活相应的中断线(?什么东东,从下文看来像是多个中断处理程序共用的一个中断号)。。。定义在<linux/interupt.h>
request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
const char *name, void *dev)
其中第一个参数irq为要分配的中断号,对于某些设备,如传统PC上的系统时钟或键盘等设备是提前确定的。。而对于其它设备要么事动态探测获取,要么是编程动态确定。。
第二个参数handler是一个函数指针,typedef irqreturn_t (*irq_handler_t)(int, void *);接受二个参数,int和void *,并返回irqreturn_t类型参数。
第三个参数可以为0,也可以是一些标志的位掩码。
IRQF_DISABLED禁止所有其它中断,用于希望快速执行的轻量级中断。。。
IRQF_SAMPLE_RANDOM如果设置了这个标志,说明这个中断的中断间隔时间不是固定的,也就是说是个随机数,可为内核熵池做贡献,成为熵源
IRQF_SHARED表示可以在多个中断服务程序中共享中断线。。
第四个参数是描述中断设备的ASCII文本
第五个参数用于区别共享中断线的众多设备驱动程序的具体的那个。。作为一个标志。。
如后面的注销中断处理程序的函数原型是,extern void free_irq(unsigned int, void *dev);
request_irq函数可能会睡眠,因此不允许在中断上下文或任何不允许阻塞的代码中使用。。
这一块,OVER!!!
- 每日阅读11之内核设计与实现——注册中断处理程序
- 每日阅读12内核设计与实现——中断处理程序与中断上下文
- 每日月的8之linux内核设计与实现——中断与中断处理
- 每日阅读9之linux内核设计与实现——中断上半部与下半部
- Linux内核设计与实现——7 中断与中断处理(5)——注册中断处理程序
- 《linux内核设计与实现》阅读笔记 第五章 中断和中断处理程序
- 每日阅读6之linux内核设计与实现——抢占与上下文切换
- 《Linux内核设计与实现》学习笔记——中断、中断处理程序
- 《Linux内核设计与实现》之中断与中断处理程序
- 每日阅读5之linux内核设计与实现——linux内核调度之睡眠与唤醒
- 每日阅读1之内核设计与实现(第三版)4.5——linux调度实现之时间记账
- 每日阅读3之内核设计与实现(第三版)4.5——linux调度实现之进程选择
- 每日阅读4之linux内核设计与实现——linux调度实现之调度器入口
- 每日阅读7之linux内核设计与实现——实时调度与调度系统调用
- Linux内核设计与实现 阅读笔记:7、中断和中断处理
- Linux内核设计与实现之中断处理
- Linux内核设计与实现——7 中断与中断处理(1)
- Linux内核设计与实现——7 中断与中断处理(2)
- c++构造函数详解(转)
- signal(SIGPIPE, SIG_IGN)
- 矩形碰撞
- Camera Calibration Toolbox for Matlab
- 虚拟内存机制
- 每日阅读11之内核设计与实现——注册中断处理程序
- UVa 10066 - The Twin Towers
- 【程序34】练习函数调用
- ngx_http_discard_request_body 函数分析
- Fixed the issue: alias database /etc/mail/aliases.db out of date
- 【程序35】文本颜色设置
- ubuntu下面执行删除命令
- 爱情经典的话
- nginx的$request_time和$upstream_response_time监控