Advertisement

android 休眠唤醒机制第3次分析 — suspend

阅读量:

先前我们探讨了休眠的第一阶段——浅度休眠。接下来我们将深入探讨深度休眠的过程。当系统进入深度休眠时,它将首先冻结所有可被冻结的任务进程;随后将依次断开所有设备的电源供应;值得注意的是,在断电操作与设备注册登记的顺序相反而确保各设备之间的电源依赖关系得到妥善维护;直到最终进入省电模式并等待用户或RTC(如实时 clock)激活;在恢复过程中将按照设备注册登记的顺序逐步重启各设备电源并恢复正常运行状态;与此同时相关进程也将被解冻以便完成浅度余机唤醒流程

1、深度休眠入口

从 wake_lock 相关章节可知,在 driver 层次中存在四种实现深度休眠入口的方式:分别是 expire_timer、 wake_lock 以及 wake_lock_timeout 和 wake_unlock 四种类型。这些入口函数会基于特定条件调用 suspend_work 中的 pm_suspend() 函数以执行深度休眠流程。代码具体位于 linux/kernel/power/suspend.c 文件中:

复制代码
 // 进入深度休眠流程

    
 int enter_state(suspend_state_t state)
    
 {
    
 	int error;
    
 	// 判断平台是否支持该状态
    
 	if (!valid_state(state))

全部评论 (0)

还没有任何评论哟~