Supernova suspend
2016-09-28 10:48:28 0 举报
mstar 支持android休眠唤醒
作者其他创作
大纲/内容
wait ack
call suspend prepare
read suspend_prepare event
Supernova Suspend
supernova suspend
Supernova pm
is_mstar_str
wait
suspend_prepare
enter_state
call suspend post
\tsuspend_thaw_processes();\tusermodehelper_enable();\tpm_notifier_call_chain(PM_POST_SUSPEND);
准备将supernova suspend注册到register_pm_notifier,有以下原因:1、Supernova suspend为user task,执行是会访问filesystem,这样就不能使用kernel virtual device-suspend的方法。2、正式执行kernel suspend前会freeze user & kernel task,虽然可以做到区分tvos和android进程,但是相对比较麻烦。因为在suspend前mmc pm不能被调用,所以设置supernova 的pm_notifier priority 高于mmc的,所以resume时需要添加pm_notifier_call_chain_reverse,GetMSrvSourceDetect()-Suspend();该接口有限制,会阻塞。和binder有关。
ack
wait suspend done
suspend_finish
Kernel device&core Suspend
Early Suspend
suspend_devices_and_enter
pm_notifier_call_chain(PM_SUSPEND_PREPARE);usermodehelper_disable();suspend_freeze_processes();
supernova_suspend_notifier
目前使用apm_emulation模拟实现EN_WAKEUP_SOURCE MSrv_Control_common::QueryWakeupSource(void)Supernova suspend 和 PM如果无法分开,需要保证kernel suspend一定可以执行成功,否则pm超时10s后系统直接关机。Wakelock增加判断机制,唤醒后至少保持唤醒状态2分钟的逻辑和1分钟内没有rtc alarm
Supernova
suspernova resume
0 条评论
下一页