1.wake_lock是什麼?java
wake_lock是一個數據結構,是一種鎖機制,顧名思義它是一把喚醒鎖,只要有用戶持有這把鎖,系統將沒法進入睡眠狀態,這個鎖能夠是有超時的或者是沒有超時的,超時的鎖會在時間過去之後自動解鎖.若是沒有鎖了或者超時了,內核就會啓動標準linux的那套休眠機制機制來進入休眠.wake_lock數據結構在include/linux/wakelock.h中被定義:linux
struct wake_lock { #ifdef CONFIG_HAS_WAKELOCK struct list_head link; /*指向全局鏈表(list_lock)*/ int flags; const char *name; unsigned long expires; #ifdef CONFIG_WAKELOCK_STAT struct { int count; int expire_count; int wakeup_count; ktime_t total_time; ktime_t prevent_suspend_time; ktime_t max_time; ktime_t last_time; } stat; #endif #endif };