linux中断流程以及下半部机制
2014-04-27 17:00
281 查看
本文将介绍中断处理流程以及下半部机制(软中断、tasklet、工作队列)。其中会有参考《深入Linux设备驱动程序内核机制》中的图片。
http://blog.csdn.net/dog250/article/details/6118419
http://blog.csdn.net/zzhere2007/article/details/9290909
在此简单总结下工作队列,“新内核中的所有工作队列被排队到一个global_cwq的每cpu的队列中,你仍然可以调用create_workqueue创建很多的具体的工作队列,但是这样创建的工作队列除了其参数中的flag起作用外,对排队其中的具体动作没有任何约束性,所有的工作都排队到了一个每cpu队列中,然后原则上按照排队的顺序进行执行,期间受到排队workqueue的flag进行微调。”
使用int queue_work(struct workqueue_struct *wq, struct work_struct *work):
1. 将work_struct添加到练笔1中,其中work_struct->func就是待处理的函数。
2. weak_up_process(worker->task),唤醒链表2中的线程task,task(worker_thread)会处理链表1中待处理的work_struct。
使用工作队列workqueue:
1. 中断处理流程
2. 软中断
3. tasklet
4. 工作队列
关于工作队列,推荐两篇文章:http://blog.csdn.net/dog250/article/details/6118419
http://blog.csdn.net/zzhere2007/article/details/9290909
在此简单总结下工作队列,“新内核中的所有工作队列被排队到一个global_cwq的每cpu的队列中,你仍然可以调用create_workqueue创建很多的具体的工作队列,但是这样创建的工作队列除了其参数中的flag起作用外,对排队其中的具体动作没有任何约束性,所有的工作都排队到了一个每cpu队列中,然后原则上按照排队的顺序进行执行,期间受到排队workqueue的flag进行微调。”
使用int queue_work(struct workqueue_struct *wq, struct work_struct *work):
1. 将work_struct添加到练笔1中,其中work_struct->func就是待处理的函数。
2. weak_up_process(worker->task),唤醒链表2中的线程task,task(worker_thread)会处理链表1中待处理的work_struct。
使用工作队列workqueue:
相关文章推荐
- linux中断下半部实现机制之软中断的实现
- linux中断下半部实现机制之tasklet
- Linux 2.6中断下半部机制分析
- Linux 2.6中断下半部机制分析
- linux顶半部和底半部中断机制
- linux中断--中断下半部机制的使用&中断编程
- linux中断底半部机制
- Linux 2.6中断下半部机制分析
- 《Linux设备驱动开发详解》-- Linux中断处理底半部机制(tasklet、工作队列和软中断)
- linux中断下半部机制
- linux中断--中断下半部机制的使用 & 中断编程
- linux中断底半部机制
- Linux 2.6中断下半部机制分析
- Linux 中断之下半部机制
- Linux中断处理“下半部”机制
- 把握linux内核设计思想(三):下半部机制之软中断
- 把握linux内核设计思想(三):下半部机制之软中断
- Linux 中断底半部机制
- Linux设备驱动程序之中断(下半部机制)
- Linux 2.6中断下半部机制分析