Linux suspend流程

 1.各种suspend状态及其对应关系和执行动作:

suspend各状态宏 宏值 pm_labels
/sys/power/state
mem_sleep_labels
/sys/power/mem_sleep
各状态待机动作
PM_SUSPEND_ON 0      
PM_SUSPEND_TO_IDLE 1 freeze s2idlbe 1.停止用户空间程序运行
2.所有外设备设置低功耗状态
PM_SUSPEND_STANDBY 2 standby shallow 3.disable非唤醒和被触发的中断
4.disable非引导CUP
5.执行sys级别待机
PM_SUSPEND_MEM 3 mem deep
6.memory供电模式调整
PM_SUSPEND_MAX         4 disk disk 7.保存系统快照写入磁盘
8.memory掉电

 2.suspend流程图(主要流程)

suspend过程主要分为5个阶段:suspend_freeze -> suspend_prepare -> suspend_suspend -> suspend_late -> suspend_noirq ,5各阶段顺序递进执行;后4个阶段主要是设备的待机过程,每个阶段都有对应的待机函数。

   a.suspend_freeze:主要在于冻结用户和内核进程;

   b.suspend_prepare:调用各设备prepare函数,为设备执行suspend函数进入supend函数做准备;

   c. suspend_suspend:调用各设备suspend函数使设备进入suspend状态;

   d.suspend_late:在suspend函数后执行,主要调用各设备suspend_late函数

   e.suspend_noirq:该阶段时会关所有非唤醒中断,然后调用各设备的suspend_noirq函数。

Linux suspend流程_第1张图片

 

你可能感兴趣的:(Linux,linux,kernel)