您的位置:首页 > 产品设计 > UI/UE

workqueue机制分析之wb_workfn函数

2016-01-16 11:48 495 查看
上面一篇文章说到: process_one_work中最重要的一件事情就是worker->current_func(work);

这里就具体到一项很具体的任务了,由于我要研究文件系统嘛,所以很自然就到具体的任务里:

void wb_workfn(struct work_struct *work)

首先,work变量只是个助推器,真正的主子在哪呢?

struct bdi_writeback *wb = container_of(to_delayed_work(work),

              struct bdi_writeback, dwok);

根据 bdi_writeback, 我们就能找到这一连串脏的inode了,然后写回里面的数据了[终于喘口气了,因为我们终于可以接触一些和文件系统相关的概念了]

[还有一个点是格外受启发的, 上面说到一个work_poll可以对应着多个kworker, 想想如果此时文件系统中脏页很多, 那么work就会很多, 这样的话,不同的work可能就由这个pool中的多个不同的线程去执行了]

后面的代码我们就比较熟悉了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: