背景
之前在触摸驱动(比如汇顶等)的代码里,会看到INIT_WORK等相关字眼,只知道是和工作队列相关,没有深入研究学习。
最近在看蓝牙HCI相关代码中,又看到了INIT_WORK等,觉得工作队列(workqueue)需要好好看看,并记录下

工作队列通常用于将耗时工作滞后处理,比如中断处理的下半部耗时操作,等, 中断相关的处理机制可见:《Kernel之中断处理底半部机制》。

最新的 workqueue 实现叫做 CMWQ(Concurrency Managed Workqueue),也就是用更加智能的算法来实现“并行和节省”。

Kernel: v5.4.18

几个概念
很容易混淆的几个概念:

work :工作。
workqueue :工作的集合。workqueue 和 work 是一对多的关系。

........

作者: Shell