[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
config_hook(RE: Proposal: button and power control)
Takemura です。すこしでも使ってもらえるようにちょっと書きました。
config_hook, config_hook_call について。
●config_hook とは
config_hook は、kernel 内で使う、hook メカニズムです。
整数値を使って hook を呼び出すので、config file で呼び出す hook を
選択することが可能です。new config のデバイスツリーで、枝をまたぐ
ようなデバイスの接続を解決するために考えられた機構です。しかし、
config_hook は汎用性が高く、suspend 時に実行すべき hook やイベント
の配信のような用途にも使用できます。
●関連ファイル
sys/arch/hpcmips/hpcmips/config_hook.c 手続きの本体
sys/arch/hpcmips/include/confg_hook.h type, id 定義
sys/arch/hpcmips/vr/button_vrgiu.c config_hook_call()使用例
sys/arch/hpcmips/vr/vrpmu.c config_hook_call()使用例
sys/arch/hpcmips/dev/btnmgr.c config_hook()使用例
sys/arch/hpcmips/vr/pwctl_vrgiu.c config_hook()使用例
sys/arch/hpcmips/vr/com_vrip.c config_hook_call()使用例
● type と id
type と id は hook を識別する整数値です。type は hook の用途を示し
ます。type の値が同じならば、hook 関数に渡されるメッセージの型が同
一でなければなりません。id は type の中でユニークです。
type と id は config_hook.h で定義されています。
現在は以下の 2 つの type が定義されています。
POWERCONTROL 省電力のための電源管理デバイスに on/off を指示する
BUTTONEVENT キーボード以外の押しボタンスイッチの操作の検出
type は必ず config_hook.h で定義される必要があります。
一方、id は config_hook.h で定義しない場合も、config file 内に即値
を記述して使うことが出来ます。この場合、呼び出し側のデバイスと、呼
ばれる側のデバイスの locator に明示的に id を指定するべきです。
●使用例
[BUTTON] vrgiu の general purpose port(GPIO)の先に接続された押しボ
タンスイッチと vrpmu の管理する電源スイッチの状態を config_hook を
用いて btnmgr(button manager) 擬似デバイスに通知しています。
[POWER CONTROL] GPIO の先に接続された serial port の電源の on/off
を、cofig_hook を用いて他のデバイスから操作できます。LCD のバック
ライトなど、GPIO とまったく関係ないデバイスによって制御されている
他の電源も統一的に扱うことが出来ます。
●他の用途
suspend に先だって一連の hook 関数を実行したい場合などには、同一の
id で config_hook() を複数回呼び出して、複数の hook 関数を登録でき
ます。config_hook.h に新しい type の定義を追加するだけで、list の
管理や hook 登録手続きを新たに書く必要がありません。
Takemura