加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

基于Android的Linux内核的电源管理:总结

发布时间:2021-11-25 20:17:09 所属栏目:教程 来源:互联网
导读:1. 电源管理的状态 Android的Linux内核为系统提供了4种电源状态,内核的源代码为其中的3种定义了名字和对应的宏定义,名字定义在kernel/power/suspend.c中: const char *const pm_states[PM_SUSPEND_MAX] = { #ifdef CONFIG_EARLYSUSPEND [PM_SUSPEND_ON] =
1.  电源管理的状态
 
Android的Linux内核为系统提供了4种电源状态,内核的源代码为其中的3种定义了名字和对应的宏定义,名字定义在kernel/power/suspend.c中:
 
const char *const pm_states[PM_SUSPEND_MAX] = {  
#ifdef CONFIG_EARLYSUSPEND   
    [PM_SUSPEND_ON]     = "on",  
#endif   
    [PM_SUSPEND_STANDBY]    = "standby",  
    [PM_SUSPEND_MEM]    = "mem",  
};  
对应的宏定义在:include/linux/suspend.h中:
 
typedef int __bitwise suspend_state_t;  
  
#define PM_SUSPEND_ON       ((__force suspend_state_t) 0)   
#define PM_SUSPEND_STANDBY  ((__force suspend_state_t) 1)   
#define PM_SUSPEND_MEM      ((__force suspend_state_t) 3)   
#define PM_SUSPEND_MAX      ((__force suspend_state_t) 4)  
很奇怪的是,第四种状态(disk)没有具体的定义,而是硬编码在代码中,不明白为什么会这样做,至少我现在看的版本是这样(2.6.35),这种就是所谓的suspend to disk或者叫hibernate。不过这不是重点,再说,目前也很少有Android的设备支持hibernate。
 
顾名思义:
 
PM_SUSPEND_ON -- 设备处于全电源状态,也就是正常工作状态;
 
PM_SUSPEND_STANDBY -- 设备处于省电状态,但还可以接收某些事件,具体的行为取决与具体的设备
 
很奇怪的是,第四种状态(disk)没有具体的定义,而是硬编码在代码中,不明白为什么会这样做,至少我现在看的版本是这样(2.6.35),这种就是所谓的suspend to disk或者叫hibernate。不过这不是重点,再说,目前也很少有Android的设备支持hibernate。
 
顾名思义:
 
PM_SUSPEND_ON -- 设备处于全电源状态,也就是正常工作状态;
 
PM_SUSPEND_STANDBY -- 设备处于省电状态,但还可以接收某些事件,具体的行为取决与具体的设备;
 
PM_SUSPEND_MEM -- suspend to memory,设备进入睡眠状态,但所有的数据还保存在内存中,只有某些外部中断才可以唤醒设备;
 
目前,大多数的Android设备都只支持其中的两种:PM_SUSPEND_ON 和 PM_SUSPEND_MEM,所以下面的讨论说道suspend的地方,均是指PM_SUSPEND_MEM。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读