这个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。