一、看kernel log,目前插着充电器灭屏幕之后会进入休眠。
二、 目前有个需求:因为进入深度休眠后会把一些电给关了,现在需要插入充电器的情况下不进入深度休眠。
三、linux wake_lock 已经/sys/power 下面提供相关接口
四、驱动文件在 kernelkernelpowermain.c 、kernelkernelpowerwakelock.c
五、Android 上层调用这些接口的地方在systemhardwareinterfacessuspend1.0defaultSystemSuspend.cpp
六、在Linux系统中,wake_lock是一直锁机制,只要有驱动占用这个锁,系统就不会进入深度休眠。读wakeup_count,如果一直被占用就会一直等待,就不会进入深度修改。
七、进入休眠的方式,读wakeup_count是为了保证当前wake_lock没有被占用,执行后系统会进入深度休眠。注意读出来的和写进去的是一样的,不然写不了。
八、满足需求(需要插入充电器的情况下不进入深度休眠)。需要修改的代码
九、分析过程中涉及的文件
frameworks/base/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
systemhardwareinterfacessuspend1.0defaultSystemSuspend.cpp
kernel/power/suspend.c
kernel/power/main.c
kernelkernelpowerwakelock.c
system/hardware/interfaces/suspend/1.0/default/SystemSuspend.cpp
十、参考文章
1、Android 禁止系统进入深度休眠_weixin_30756499的博客-CSDN博客
2、Android 系统定制不进入深度休眠+增加后台运行白名单_青春给了狗的博客-CSDN博客
3、android 阻止系统进入深度休眠(不影响正常休眠逻辑)_芊汐的博客-CSDN博客_android阻止系统休眠
4、Linux电源管理(8)_Wakeup count功能_jacob的博客-CSDN博客



