Kernel system_freezable_wq,会在suspend的时候freeze的workqueue

这个workqueue比较实用,在suspend的时候会freeze,这样就会避免当suspend的时候,一些设备被关闭(或者clock被gate,或者power被gate),但是workqueue中还有work在运行从而导致一些问题。

跟了一下代码,这个system_freezable_wq主要就是在create workqueue的时候加上了一个FREEZABLE的flag,然后当suspend发生的时候,在没有开始真正suspend device之前,有一个suspend_prepare会调用suspend_freeze_processes,这样一路调用下来,最终会调用到freeze_workqueues_begin,在这里会将workqueue的maxactive设成0,这样workqueue里面的work就无法执行到了。

所以这个system_freezable_wq还是一个较实用的WQ。

posted @ 2012-04-05 11:25  super119  阅读(1768)  评论(0编辑  收藏  举报