android 睡眠和唤醒过程

本文探讨了Android系统睡眠的过程,从用户空间通过向/sys/power/state文件写入触发,涉及早期挂起工作队列、同步文件系统、冻结进程与线程、设备及CPU休眠等步骤。更深入的分析将在后续展开。
摘要由CSDN通过智能技术生成

睡眠过程:

入口:用户空间的代码通过向/sys/power/state文件节点写入特定的字符串(on/mem)来请求系统进入特定的状态, 

过程:

1) 向/sys/power/state文件写入时会调用到state_store函数:

state() {

      #ifdef CONFIG_EARLYSUSPEND
           request_suspend_state(state)
      #else
           pm_suspend(state);
      #endif
 }


如果配置了early_suspend选项,则调用request_suspend_state去执行android的suspend过程


2) request_suspend_state会调用queue_up_early_suspend_work函数向early_suspend_wq工作队列中提交一个名叫early_suspend_work的工作,其对应的工作函数为

static void early_suspend(struct work_struct *work)
{
    list_for_each_entry(pos, &early_suspend_handlers, link) {
         if (pos->suspend != NULL)
                 pos->suspend(pos);
     }
     
     queue_work(suspend_wq, &suspend_work);
}


首先会调用驱动注册的early_suspend的回调函数,一般背光和LCD等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值