在linux system enter suspend 的时候线程冻结

来源:互联网 发布:php开发入门教程 编辑:程序博客网 时间:2024/06/06 07:18


Linux suspend/resume kernel space thread freeze.

 

linux system suspend的时候,需要将用户进程和部分内核线程置于一种可控的暂停状态。

标记系统freeze状态的有三个全局变量:pm_freezing,system_freezing_cnt,pm_nosig_freezing, 

全部为0的时候表示系统未冻结,system_freezing_cnt>0表示系统进入冻结,

pm_freezing=true表示冻结用户进程,pm_nosig_freezing=true表示冻结内核线程和workqueue

它们会在freeze_processesfreeze_kernel_threads中置位,在thaw_processesthaw_kernel_threads中清零。

 

用户进程都会进入冻结我们不用去管他,如果是kernel space线程可以调用 try_to_freeze()

kernel_thread_xxx_loop()

{

     ............

    while(1)

    {

        try_to_freezen();

        ............

    }

}

0 0
原创粉丝点击