Linux中断下半部——工作队列
2018-01-25 17:00
316 查看
1 参考书籍
《Linux设备驱动开发详解》 宋宝华 机械工业出版社
《嵌入式Linux驱动开发教程》 华清远见嵌入式学院 电子工业出版社
2 工作队列
下面的代码用于定义一个工作队列和一个底半部执行函数
通过INIT_WORK()可以初始化这个工作队列并将工作队列与处理函数绑定
用于调度工作队列执行的函数为schedule_work()
工作队列使用模版
《Linux设备驱动开发详解》 宋宝华 机械工业出版社
《嵌入式Linux驱动开发教程》 华清远见嵌入式学院 电子工业出版社
2 工作队列
下面的代码用于定义一个工作队列和一个底半部执行函数
struct work_struct my_wq; /*定义一个工作队列*/ void my_wq_func(struct work_struct *work); /*定义一个处理函数*/
通过INIT_WORK()可以初始化这个工作队列并将工作队列与处理函数绑定
INIT_WORK(&my_wq,my_wq_func);
用于调度工作队列执行的函数为schedule_work()
schedule_work(&my_wq);
工作队列使用模版
/*混杂设备驱动模型*/ /*使用工作队列改写按键中断*/ #include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h> #include <linux/init.h> #include <linux/delay.h> #include <linux/poll.h> #include <linux/irq.h> #include <asm/irq.h> #include <asm/io.h> #include <linux/interrupt.h> #include <asm/uaccess.h> #include <mach/hardware.h> #include <linux/platform_device.h> #include <linux/cdev.h> #include <linux/miscdevice.h> #define GPNCON 0x7F008830 #define DEVICE_NAME "my_buttons" #define MISC_DYNAMIC_MINOR 200 /*次设备号*/ struct work_struct my_wq; /*定义一个工作队列*/ void my_wq_func(struct work_struct *work); /*中断处理,下半部函数*/ void my_wq_func(struct work_struct *work) { ... } /*中断处理顶半部函数*/ static irqreturn_t buttons_interrupt(int irq, void *dev_id) { ... schedule_work(&my_wq); ... return IRQ_HANDLED; } /*模块加载函数*/ static int __init dev_init() { ... ... /*申请中断*/ err=request_irq(IRQ_EINT(0),buttons_interrupt,IRQF_TRIGGER_FALLING,"mykey",0); /*初始化工作队列*/ INIT_WORK(&my_wq,my_wq_func); ... return 0; } /*设备驱动模块卸载函数*/ static void __exit dev_exit(void) { ... /*释放中断*/ ... }
相关文章推荐
- Linux2.6内核--中断下半部实现方法 工作队列
- 【Linux开发】linux设备驱动归纳总结(六):3.中断的上半部和下半部——工作队列
- linux驱动开发之输入子系统编程(一)使用工作队列实现中断下半部
- Linux2.6内核--中断下半部实现方法 工作队列
- 《Linux设备驱动开发详解》-- Linux中断处理底半部机制(tasklet、工作队列和软中断)
- linux 触摸屏驱动中断下半部实现-工作队列
- Linux内核中断底半部处理--工作队列
- Linux 驱动之中断下半部之工作队列
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】中断服务下半部之工作队列详解
- 10. 中断下半部---工作队列
- 中断下半部-工作队列
- linux设备驱动归纳总结(六):3.中断下半部之工作队列
- Linux中断/task/工作队列的应用
- Linux2.6中断下半部分的三种实现机制---工作队列
- linux设备驱动归纳总结(六):3.中断下半部之工作队列
- linux设备驱动归纳总结(六):3.中断的上半部和下半部——工作队列
- Linux2.6中断下半部分的三种实现机制---工作队列 .
- Linux驱动开发-中断分层机制_工作队列 笔记 7
- [linux内核]linux中断下半部分——工作队列
- Linux2.6中断下半部分的三种实现机制---软中断/tasklet/工作队列