linux中断流程以及下半部机制

来源:互联网 发布:linux显示系统时间 编辑:程序博客网 时间:2024/05/18 02:03

    本文将介绍中断处理流程以及下半部机制(软中断、tasklet、工作队列)。其中会有参考《深入Linux设备驱动程序内核机制》中的图片。

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:

0 0
原创粉丝点击