Android 源码分析 - 电源 - Kernel层

本文深入探讨了标准Linux系统的休眠和唤醒机制,从基础的电源管理方式到设备架构的变更。同时,详细阐述了Android系统如何在Linux的基础上实现电源管理,包括wake_lock和wake_unlock操作,并介绍了frame_buffer的early_sleep机制。这些内容对于理解操作系统中的电源优化至关重要。
摘要由CSDN通过智能技术生成

        与电源相关的驱动文件:

ll /sys/power

-rw-r--r-- root     root         4096 2014-06-05 13:27 pm_async

-rw-r--r-- root     root         4096 2014-06-05 13:27 pm_freeze_timeout

-rw-rw---- system   system       4096 2014-06-05 13:30 state

-r--r--r-- root     root         4096 2014-06-05 13:27 wait_for_fb_sleep

-r--r--r-- root     root         4096 2014-06-05 13:27 wait_for_fb_wake

-rw-rw---- radio    system       4096 2014-06-05 13:31 wake_lock

-rw-rw---- radio    system       4096 2014-06-05 13:27 wake_unlock

-rw-r--r-- system   system       4096 2014-06-05 13:27 wakeup_count

        文件作用说明:

文件

state

返回有效状态列表

改变电源状态

wake_lock

返回处于活动状态的锁

加锁,输入格式为:<name> [timeout],如果没有找到指定名称的锁,将创建一个

wake_lock

返回处于非活动状态的锁

解锁,输入格式为:<name>,解锁不会删除,而是放到非活动锁列表

wait_for_fb_sleep

阻塞直到frame_buffer开始进入early_sleep

wait_for_fb_wake

阻塞直到frame_buffer从early_sleep唤醒

        特别提一下frame_buffer的early_sleep实现机制。驱动层注册了frame_buffer的early_sleep回调,但是并没有实现frame_buffer的关闭,而是提供一个机制通知上层。上层等待wait_for_fb_sleep,然后关闭frame_buffer,之后通过wait_for_fb_wake通知驱动层休眠完成,同时等待被唤醒,唤醒后再重新打开frame_buffer。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fighting Horse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值