2024年3月27日发(作者:)

Android电源管理系统调研报告-(1)

2011-02-17 09:18

转载自 carvencao

最终编辑 carvencao

如今手持设备中出现的一对不可调和的矛盾就是越来越大的能量消耗与电

池容量瓶颈之间的矛盾,就算没有这个瓶颈,相对更持久的续航能力也是众向所

归。Android系统一般应用于高端智能设备,能源消耗尤其突出,因此对Android

的电源管理系统的调研有很必要。

Android系统是基于标准Linux内核之上的,在Linux内核在原有的power

manager系统之上增加了相应了文件,为Android系统的power manager提供底

层服务支持。因此,调研工作在两个层面展开:Linux内核层、Android系统层。

Linux内核层:

针对Android系统而增添的power manager文件有如下五个:

/Linux-2.6.29/kernel/power/

|-consoleearlysuspend.c

|-earlysuspend.c

|-fbearlysuspend.c

|-userwakelock.c

|-wakelock.c

这五个文件配合Linux层的power manager柜架和与功耗相关的设备驱动,

向Android层提供了power manager的底层支持。与功耗相关的设备主要包括

LCD屏和键盘及其它设备的LED灯。因些,在这类设备的驱动中应该增加相应的

power manager功能。

在该调研报告中,仅简单地罗出列出各文件中定义的功能函数以及向上提供

的接口,其具体的功能调用及整个power manager柜架地实现在后期的调研报告

中阐述。

1)、consoleearlysuspend.c

功能函数:

static void console_early_suspend(struct early_suspend *h);

static void console_late_resume(struct early_suspend *h);

static int __init console_early_suspend_init(void);

static void __exit console_early_suspend_exit(void);

数据结构:

static struct early_suspend console_early_suspend_desc = {

};

.level = EARLY_SUSPEND_LEVEL_STOP_DRAWING,

.suspend = console_early_suspend,

.resume = console_late_resume,

2、earlysuspend.c

功能函数:

void register_early_suspend(struct early_suspend *handler);

void unregister_early_suspend(struct early_suspend *handler);

static void early_suspend(struct work_struct *work);

static void late_resume(struct work_struct *work);

void request_suspend_state(suspend_state_t new_state);

suspend_state_t get_suspend_state(void);