Linux Power Management源码分析(一)
2013-11-16 13:39
169 查看
Linux Power Management接口
PM subsystem是以sysfs为接口.接口的位置在 /sys/power/目录下.以Andorid手机为例:
![](https://img-blog.csdn.net/20131208121728609?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva3VuaXM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
/sys/power/state 控制系统电源状态,从这个文件里可以读出来系统支持的所有状态,如:
"standby"----->Power-On Suspend
"mem"--------->Suspend-to-RAM
"disk"---------->Suspend-to-disk
PM subsystem是以sysfs为接口.接口的位置在 /sys/power/目录下.以Andorid手机为例:
/sys/power/state 控制系统电源状态,从这个文件里可以读出来系统支持的所有状态,如:
"standby"----->Power-On Suspend
"mem"--------->Suspend-to-RAM
"disk"---------->Suspend-to-disk
kernel/include/linux/suspend.h #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)
kernel/kernel/power/suspend.c const char *const pm_states[PM_SUSPEND_MAX] = { [PM_SUSPEND_STANDBY] = "standby", [PM_SUSPEND_MEM] = "mem", };
kernel/kernel/power/main.c /** * state - control system power state. * * show() returns what states are supported, which is hard-coded to * 'standby' (Power-On Suspend), 'mem' (Suspend-to-RAM), and * 'disk' (Suspend-to-Disk). * * store() accepts one of those strings, translates it into the * proper enumerated value, and initiates a suspend transition. */ static ssize_t state_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { char *s = buf; #ifdef CONFIG_SUSPEND int i; for (i = 0; i < PM_SUSPEND_MAX; i++) { /*检查pm_states中包含的电源狀态是否可用,并调用 valid_state函数来检查, * valid_state函数会调用platform下注册的valid来检测state的有效性,platform_suspend_ops的实现一般在 *kernel/archn/arm/mach-omap2/pm.c */ if (pm_states[i] && valid_state(i)) s += sprintf(s,"%s ", pm_states[i]); } #ifdef CONFIG_HIBERNATION s += sprintf(s, "%s\n", "disk"); #else if (s != buf) /* convert the last space to a newline */ *(s-1) = '\n'; #endif return (s - buf); }
相关文章推荐
- 使用PHP简单网页抓取和内容分析
- 嵌入式Linux的文件系统及其存储机制分析
- 网站运营:平面与互动运营思想深度分析
- 三大常用个人邮箱 163 Gmail QQMail之用户体验分析
- 网站优化-搜索引擎访问分析
- java内存分析【精辟】
- 计算机主存与Cache映像方式分析~
- RTTI、虚函数和虚基类的实现方式、开销分析及使用指导
- JBPM节点分支之Group节点分析
- Android Tombstone/Crash的log分析和定位
- DWZ (JUI) 教程 navTabPageBreak 流程分析
- ISO14443、15693、18000体系分析
- /var/spool/clientmqueue文件分析
- Dshow--分析点播命令
- 分析问题
- NET程序的破解--静态分析(Xenocode Fox 2006 Evaluation)
- Android 微信SDK分享功能中的最全过程步骤分析
- Yii PHP 框架分析(二)
- 基于示波器的电源纹波测试分析
- 数据库连接池 c3p0 demo 代码和分析