在Linux系统中,wake_lock是一直锁机制,只要有驱动占用这个锁,系统就不会进入深度休眠。
获取此锁的方法有两种:
1、在adb中通过指令获取wake_lock,系统就不会进入深度休眠
echo "PowerManagerService.noSuspend" > /sys/power/wake_lock
2、在驱动文件中获取wake_lock
(1)添加头文件
#include <linux/wakelock.h>
(2)定义 wake_lock 结构体
static struct wake_lock wake_lock_always
(3)在 xxx_init 函数中初始化锁
wake_lock_init(&wake_lock_always, WAKE_LOCK_SUSPEND, "wake_lock_always");
(4)在 xxx_suspend 函数中获取锁
wake_lock(&wake_lock_always);
(5)在 xxx_resume 函数中释放锁
wake_unlock(&wake_lock_always);