电源管理内核.docx

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android电源管理内核模块总体框架2初始化与接口模块4early suspend/late resume模块8Early suspend/late resume概述8Early suspend/late resume流程9流程1 :创建earlysuspend的核心工作队列线程suspend_work_queue10流程2 :系统启动完成后,相关的驱动程序通过register_early_suspend()函数注册了early suspend/lateresume特性10流程 3:用户空间,通过调用set_screen_state函数来触发suspend的流程13流程 4:先valid_state()一下,这给了平台相关的代码一个机会确认该平台是否支持所请求的电源状态13流程 5:调用request_suspend_state()函数13流程 6:early_suspend()完成最主要工作13Wakelock模块14Suspend 及平台相关驱动模块14参考资料17Android电源管理内核模块总体框架Android电源管理内核模块,主要是由以下几个基本模块组成,详细分析如下:电源管理内核模块总体组成电源管理内核模块总体组成图电源管理内核模块从功能角度出发,各模块关系示意图如下:电源管理内核模块各模块关系示意图1简单说明:内核空间提供3个sys接口,即加锁,解锁,休眠唤醒,当所有的锁解开的时候,会执行标准linux的suspend.ealry_suspend: 设备:触摸屏,按键,gpu,电子罗盘,摄像头,led,wifi等linux suspend设备:usb cpu 总线等。电源管理内核模块各模块关系示意图2初始化与接口模块主要涉及文件:66/lxr-0709/source/kernel/common/kernel/power/main.c?v=android-4.0.4/kernel/power/main.c;66/lxr-0709/source/kernel/common/kernel/power/userwakelock.c?v=android-4.0.4/kernel/power/userwakelock.c在kernel/power/main.c中,定义了一组sysfs的属性文件,其中一个定义是:power_attr(state);//line215把这个宏展开后:kernel/power/main.h line65----73static struct kobj_attribute state_attr = { \?.attr ={ \?.name = state, \?.mode = 0644, \?}, \?.show =state_show, \.store =state_store, \?}源码位置:kernel/power/main.c在此文件中,定义了一组sysfs的属性文件,并且main.c的入口:static int __init pm_init(void)?{?......?power_kobj =kobject_create_and_add(power, NULL);?......?}?core_initcall(pm_init);?函数执行后,会在生成/sys/power目录,该目录下会建立一系列属性文件,其中一个就是/sys/power/state文件.从core_initcall(pm_init))可以知道:函数在初始化时被执行关于此函数可见[1],同样,我们从main.c中可以看到,/sys/power目录下应该还有的属性文件有:如果内核:#ifdef CONFIG_PM_SLEEPpower_attr(pm_async);//line 70则有:/sys/power/pm_async功能:cat/sys/power/pm_async用于判断当前设备的suspend、resume操作是否是同步操作echo/sys/power/pm_async用于控制是否异步的执行设备的suspend、resume操作#ifdef CONFIG_USER_WAKELOCKpower_attr(wake_lock);power_attr(wake_unlock);#endif则有:/sys/power/wake_lock,sys/power/unwake_lock文件注意其对应的SHOW与STORE功能实现函数在://66/lxr-0709/source/kernel/common/kernel/power/userwakelock.c?v=android-4.0.4kernel/power/userwakelock.c功能:cat/sys/power/wake_lock查看系统的wake loc

文档评论(0)

70后老哥 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档