"wake lock" was a set of patches to the Linux kernel to allow a caller to prevent the system from going to low power state.
所以,在 kernel 下,可以運用這種機制,讓系統不要進入 suspend。
加入必要 header
#include <linux/wakelock.h>
初始化 wake lock
wake_lock_init(&wlock, WAKE_LOCK_SUSPEND, "hdmi_active"); 通常在 module init 函數或是 probe 函數當中進行這個動作。第二個參數可設定為 WAKE_LOCK_IDLE / WAKE_LOCK_SUSPEND
鎖住 wake lock
wake_lock(&wlock);
釋放 wake lock
wake_unlock(&wlock);
註銷 wake lock
wake_lock_destroy(&wlock);
在程式碼中完成後,如何驗證 wake lock 是否正確的被 lock/unlock 呢?可以利用不斷 cat proc/wakelocks 這個 node,觀察其變化。如果已經被 unlock 了,那麼 time 的欄位就會停止變動。
watch -n 1 'adb shell "cat proc/wakelocks" | grep usb_udc_lock'
No comments:
Post a Comment