linux中断处理
来源:互联网 发布:淘宝买论文发表 编辑:程序博客网 时间:2024/04/29 14:36
int request_irq(unsigned int irq, irq_handler_t handler,
unsigned long irqflags, const char *devname, void *dev_id)
irq是要申请的硬件中断号,中断号有其原理图决定;
handler是向系统注册的中断处理函数,是一个回调函数,中断发生时,系统调用这个函数,dev_id参数将被传递给它。
irqflags是中断处理的属性,若设置了IRQF_DISABLED (老版本中的SA_INTERRUPT,本版zhon已经不支持了),则表示中断处理程序是快速处理程序,快速处理程序被调用时屏蔽所有中断,慢速处理程序不屏蔽;若设置了IRQF_SHARED (老版本中的SA_SHIRQ),则表示多个设备共享中断,若设置了IRQF_SAMPLE_RANDOM(老版本中的SA_SAMPLE_RANDOM),表示对系统熵有贡献,对系统获取随机数有好处。(这几个flag是可以通过或的方式同时使用的)
devname设置中断名称,通常是设备驱动程序的名称 在cat /proc/interrupts中可以看到此名称。dev_id在中断共享时会用到,一般设置为这个设备的设备结构体或者NULL。
request_irq()返回0表示成功,返回-INVAL表示中断号无效或处理函数指针为NULL,返回-EBUSY表示中断已经被占用且不能共享。
错误时返回-EINVAL(22),表示参数无效
或者-ENOMEM(12)表示内存不足
中断信号线(IRQ):是对中断输入线和中断输出线的统称,中断输入线是指接收中断信号的引脚;中断输出线是指发送中断信号的引脚;
中断控制器: 位于ARM处理器核心和中断源之间,外部中断源将中断发送到中断控制器,中断控制器根据优先级进行判断,
中断的安装与释放:
安装:int request_irq(unsigned int irq, irq_handler_t handler,
unsigned long irqflags, const char *devname, void *dev_id)
当模块不再使用时,需要释放中断线
释放中断:free_irq();
- linux 中断和中断处理
- Linux中断子系统-中断处理
- Linux-中断和中断处理
- MIPS-LINUX-中断处理
- Linux中断处理
- linux 中断处理
- Linux中断处理过程
- linux中断处理浅析
- Linux中断处理过程
- Linux中断处理浅析
- linux中断处理浅析
- Linux中断处理浅析
- linux中断处理浅析
- MIPS-LINUX-中断处理
- zz: linux中断处理
- linux 信号中断处理
- linux中断处理详解
- Linux中断处理体系结构
- Xcode6使用storyboard在TabBarController上建立三个以上Item
- error C2248: 'CObject::operator =' : cannot access private member declared in class 'CObject'
- Exchange Server 2013系列四:小企业邮件系统部署
- 栈的基本用法(链式存储结构)
- Leetcode: Sqrt(x)
- linux中断处理
- setEnabled() vs setClickable()
- 一个优秀的 Node.js 开发者
- 构造方法的先后顺序
- 【leetcode】Add Two Numbers
- swift语言-可选类型
- [Uva11983][线段树][扫描线]Weird Advertisement[好题]
- 网络流题集
- Exchange Server 2013系列五:虚拟化部署