tasklet机制和工作队列
|
首先需要说明的是workqueue_struct和cpu_workqueue_struct这两个数据结构,创建一个工作队列首先需要创建workqueue_struct,然后可以在每个CPU上创建一个cpu_workqueue_struct管理结构体。
Work_struct表示将要提交的处理的工作。 上面三个数据结构的关系如下图所示
介绍主要数据结构的目的并不是想要把工作队列具体的细节说明白,主要的目的是给大家一个总的架构的轮廓。具体的分析在下面展开。从上面的该模块主要数据结构的关系来看,主要需要分析如下几个问题: 1. Workqueque是怎样创建的,包括event/0内核进程的创建 2. Work_queue是如何提交到工作队列的 3. Event/0内核进程如何处理提交到队列上的工作
Workqueque的创建 首先申请了workqueue_struct结构体内存,cpu_workqueue_struct结构体的内存。然后在init_cpu_workqueue函数中对cpu_workqueue_struct结构体进行初始化。同时调用create_workqueue_thread函数创建处理工作队列的内核进程。 create_workqueue_thread中创建了如下的内核进程 p = kthread_create(worker_thread, cwq, fmt, wq->name, cpu); 最后调用start_workqueue_thread启动新创建的进程。
向工作队列中添加工作 (编辑:网站开发网_安阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


