Go to main content
Oracle® Solaris 11.3 デバイスドライバの記述

印刷ビューの終了

更新: 2016 年 11 月
 
 

電源管理の制御フロー

図 12 に、電源管理フレームワークの制御フローを示します。

コンポーネントの動作が完了したら、ドライバは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  電源管理の概念を示す状態図

image:図では、電源管理ルーチンを通しての制御フローを示しています。