ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
デバイスドライバの記述 Oracle Solaris 10 8/11 Information Library (日本語) |
図 12-1 に、電源管理フレームワークの制御フローを示します。
部品の動作が完了したら、ドライバは pm_idle_component(9F) を呼び出して部品をアイドル状態とマークできます。しきい値として設定された時間だけ部品のアイドル状態が続いたら、フレームワークは部品の電源レベルを 1 段階下げることができます。フレームワークは power(9E) 関数を呼び出して、サポートされている 1 段階下の電源レベルに部品を設定します (そのレベルが存在する場合)。部品がビジー状態のとき、ドライバの power(9E) 関数では、その部品の電源レベルを下げようとする試みを拒否する必要があります。power(9E) 関数では、下のレベルに状態を遷移する前に、その遷移によって失われる可能性があるすべての状態を保存する必要があります。
部品の電源レベルを上げる必要があるとき、ドライバは pm_busy_component(9F) を呼び出します。この呼び出しは、フレームワークが電源レベルをそれ以上下げないようにしてから、部品に対して pm_raise_power(9F) を呼び出します。フレームワークは次に、pm_raise_power(9F) の呼び出しが戻る前に、power(9E) を呼び出して部品の電源レベルを上げます。ドライバの power(9E) のコードでは、低い電源レベルへの遷移時に失われるが、高い電源レベルでは必要であるすべての状態を復元する必要があります。
ドライバを切り離すとき、ドライバでは各部品に対して pm_lower_power(9F) を呼び出し、電源レベルをそれぞれ最低段階まで下げます。フレームワークは次に、pm_lower_power(9F) の呼び出しが戻る前に、ドライバの power(9E) ルーチンを呼び出して部品の電力レベルを下げます。
図 12-1 電源管理の概念を示す状態図