- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TOC \o 1-3 \h \z \u HYPERLINK \l _Toc344450399 Android电源管理内核模块总体框架 PAGEREF _Toc344450399 \h 2
HYPERLINK \l _Toc344450400 初始化与接口模块 PAGEREF _Toc344450400 \h 4
HYPERLINK \l _Toc344450401 early suspend/late resume模块 PAGEREF _Toc344450401 \h 8
HYPERLINK \l _Toc344450402 Early suspend/late resume概述 PAGEREF _Toc344450402 \h 8
HYPERLINK \l _Toc344450403 Early suspend/late resume流程 PAGEREF _Toc344450403 \h 9
HYPERLINK \l _Toc344450404 流程1 :创建earlysuspend的核心工作队列线程suspend_work_queue PAGEREF _Toc344450404 \h 10
HYPERLINK \l _Toc344450405 流程2 :系统启动完成后,相关的驱动程序通过register_early_suspend()函数注册了early suspend/lateresume特性 PAGEREF _Toc344450405 \h 10
HYPERLINK \l _Toc344450406 流程 3:用户空间,通过调用set_screen_state函数来触发suspend的流程 PAGEREF _Toc344450406 \h 13
HYPERLINK \l _Toc344450407 流程 4:先valid_state()一下,这给了平台相关的代码一个机会确认该平台是否支持所请求的电源状态 PAGEREF _Toc344450407 \h 13
HYPERLINK \l _Toc344450408 流程 5:调用request_suspend_state()函数 PAGEREF _Toc344450408 \h 13
HYPERLINK \l _Toc344450409 流程 6:early_suspend()完成最主要工作 PAGEREF _Toc344450409 \h 13
HYPERLINK \l _Toc344450410 Wakelock模块 PAGEREF _Toc344450410 \h 14
HYPERLINK \l _Toc344450411 Suspend 及平台相关驱动模块 PAGEREF _Toc344450411 \h 14
HYPERLINK \l _Toc344450412 参考资料 PAGEREF _Toc344450412 \h 17
Android电源管理内核模块总体框架
Android电源管理内核模块,主要是由以下几个基本模块组成,详细分析如下:
电源管理内核模块总体组成
电源管理内核模块总体组成图电源管理内核模块从功能角度出发,各模块关系示意图如下:
电源管理内核模块各模块关系示意图1
简单说明:
内核空间提供3个sys接口,即加锁,解锁,休眠唤醒,当所有的锁解开的时候,会执行标准linux的suspend.
ealry_suspend: 设备:触摸屏,按键,gpu,电子罗盘,摄像头,led,wifi等
linux suspend设备:usb cpu 总线等。
电源管理内核模块各模块关系示意图2
初始化与接口模块
主要涉及文件:
HYPERLINK 66/lxr-0709/source/kernel/common/kernel/power/main.c?v=android-4.0.4 /kernel/power/main.c;
HYPERLINK 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----73
static struct
原创力文档


文档评论(0)