workqueue
v3.14.25
每个CPU上有两个work_pool,每个work_pool上有一个worker:work_thread。work_thread从相应work_pool->worklist上取出work_struct进行执行。
创建workqueue_struct时,会在每个CPU上都创建一个pool_workqueue,如果在同一个CPU上有多个pool_workqueue对应同一个workqueue_struct,则他们都会挂在一条链上。每个pool_workqueue上有几个链表用于存放一些work_struct.
暂时的理解时,如果定时已到或者flush,则从pool_workqueue上取出待执行的work_struct链表置于workk_pool->worklist上。而后唤醒pool_workqueue对应的work_pool对应的work_thread。相应的work_thread从pool_workqueue上取出work_struct进行执行。
浙公网安备 33010602011771号