内核中断
来源:互联网 发布:刀剑封魔录网络 编辑:程序博客网 时间:2024/05/17 06:34
#include <linux/interrupt.h>
int request_irq(unsigned int irq, irq_handler_t handler,
unsigned long irqflags, const char *devname, void *dev_id)
irq:
中断号 arch/arm/mach-s3c64xx/include/mach/irqs.h
handler:
中断处理函数 irqreturn_t handler(int irq, void *dev_id);
irqreturn_t:
See include/linux/irqreturn.h
irqflags:
See line 21-59 in include/linux/interrupt.h
使用IRQF_SHARED共享irq时, irqflags必须相同
如: request_irq(IRQ_EINT(0), handler1,
IRQF_TRIGGER_FALLING | IRQF_SHARED, "dev1", &dev1);
request_irq(IRQ_EINT(0), handler2,
IRQF_TRIGGER_FALLING | IRQF_SHARED, "dev2", &dev2);
devname:
设备名, cat /proc/interrupts
dev_id:
发生中断时将dev_id传递给handler函数,
irqflags含有IRQF_SHARED时dev_id不能为NULL, 并且要保证唯一
dev_id一般采用当前设备的结构体指针
void free_irq ( unsigned int irq, void * dev_id);
释放匹配irq和dev_id的中断, 如果irq有多个相同的dev_id, 将释放第一个
So, 共享中断的dev_id不是唯一时, 可能会释放到其它设备的中断
void disable_irq(unsigned int irq);
关闭irq号中断
void enable_irq(unsigned int irq);
开启irq号中断
void local_irq_save(unsigned long flags);
关闭当前CPU中断并保存当前状态到flags
void local_irq_restore(unsigned long flags);
恢复flags到当前CPU
void local_irq_disable(void);
关闭当前CPU中断
void local_irq_enable(void);
开启当前CPU中断
注: 没有关闭和开启所有CPU中断的函数(没必要)
- 内核中断
- 内核中断
- 内核中断
- linux中断--内核中断编程
- linux中断--内核中断编程
- linux 内核中断内幕
- Linux 内核中断内幕
- Linux 内核中断内幕
- 内核中断处理
- Linux 内核中断内幕
- 中断与内核定时器
- Linux 内核中断内幕
- Linux中断内核编程
- Linux 内核中断内幕
- linux内核中断实现
- 内核中断机制
- Linux 内核中断内幕
- Linux 内核中断内幕
- Apache Maven和Apache Ant,你该选谁
- 常用的排序算法的时间复杂度和空间复杂度 .
- VS2010 C#调用C++ DLL文件
- 数据结构与算法常见笔试题 .
- 难过了,不要告诉别人。自己知道就好:伤感
- 内核中断
- A升杯子和B升的杯子如何倒出C升的水?(某公司校园招聘笔试试题,某另外公司校园招聘笔试试题)
- Android应用的自动升级、更新模块的实现
- Java反射实体类属性(get ,set方法)
- softirq/tasklet/workqueue的区别
- 工作队列
- 深入理解浏览器兼容性模式
- linux vi编辑器的配置
- JDBC的query获取list集合