ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2011年5月5日 星期四

wakelock in linux kernel

原以為是 linux kernel 功能的 wakelock suspend 機制,結果是從 android port 納入的。
而且當初納入 mainstream 時還有一番修正和討論。
最後的這一篇Android kernel wakelock solution 應該可以算是結束。

follow 這篇的 link 去看:An alternative to suspend blockers 詳細的說明了 suspend wakeup 的需求。機制。優劣。實做。
其中列出的 ref link 更多。

其他的部份,有關 android 的 wakelock 使用方法,在 這個 pdf 檔有簡單說明:

在 kernel 中使用 wakelock:

首先是 wakelock_init( .. ) 參數要給 lock 的 type:
WAKE_LOCK_SUSPEND : 防止 system 進入 suspend
WAKE_LOCK_IDLE: 防止 system 進入 idle.

然後在需要的地方,用:
wake_lock( ) 來 active lock,防止 system 進入 suspend/idle state
wake_unlock( )允許 system suspend/idle.

kernel 的 power driver (inplement wakelock function) 會實做一個 /sys/power/wake_lock, wake_unlock 介面,讓 user 使用。

user 可以用
echo mylock > /sys/power/wake_lock 防止 system suspend。
再用 echo mylock > /sys/power/wake_unlock 釋放

另外,android pdk 文件也有說明: http://www.netmite.com/android/mydroid/development/pdk/docs/power_management.html

說明的是 android user program access wakelock 的方式,所以內容與 kernel 不一樣。


這篇 http://blog.haozhi.org/dev/?p=668 有說明 android kernel 的 suspend 機制

沒有留言:

標籤

網誌存檔