APM(4)

名称
apm - APM BIOS インタフェース

書式
device apm0 at isa?

解説
apm はラップトップ PC の Intel / Microsoft APM (Advanced Poewr Management) BIOS へのインタフェースです。

apm は次の電源管理機能を提供します。

1.  システムがサスペンドモードから復帰した時に、 apm はシステムの時計を RTC に合わせます。

2.  システムがサスペンドモードから復帰した時に、 システムが復帰した時刻とサスペンドモード中に経過した時間で構成される メッセージを、 apm は syslogd(8) に通知します。

3.  apm はシステムの活動 (実行可能なプロセス、割り込みなど) がない時に CPU のクロックを減速します。 この機能は APM が CPU のアイドリングをサポートしているシステムでのみ有効です。

4.  apm はキャラクタ型デバイスとしてアプリケーションインタフェースを提供します。 アプリケーションはこのインタフェースを介して APM を制御したり、 APM の状態情報を引き出したりすることができます。 apm は次のインタフェースを提供します。これらのシンボルは “/usr/include/machine/apm_bios.h” で定義されています。

    APMIO_SUSPEND
        システムをサスペンドします。

    APMIO_GET
        電源管理情報を入手します。

    APMIO_ENABLE

    APMIO_DISABLE
        電源管理を有効 / 無効にします。

    APMIO_HALTCPU

    APMIO_NOTHALTCPU
        カーネルコンテキスト切り替えルーチンでの HLT の実行を制御します。

        HLT (割り込みが発生するまで CPU を停止) 命令を “Idle CPU” 呼び出しの中で実行する APM の実装もありますし、そうでないものもあります。 ですからこれを有効にすると、 “Idle CPU” を呼び出すカーネルコンテキスト切り替えルーチンが 元々 HLT 命令を実行することにより、 余分な HLT 命令を実行することになる可能性があります。 この結果、システムのピーク性能を減少させる可能性があります。

        また、カーネルコンテキスト切り替えルーチンでの HLT 命令を無効にした場合、 マシンの APM の実装が “Idle CPU” で HLT を実行しない場合には、システムはハングアップします。 CPU クロックの減速をサポートしていない実装では、APM は HLT を実行しないかもしれません。 そのようなマシンでは、 apm は APMIO_NOTHALTCPU の操作を無効にします。

        現在のバージョンの apm は、クロックの減速がサポートされていない場合には、 カーネルコンテキスト切り替えルーチンから “Idle CPU” を呼び出さず、デフォルトでは HLT 命令を実行します。 したがって、大抵の場合にはこれらの 2 つの操作を行う必要はありません

    これらのインタフェースは apm(8) と apmconf(8) が使用します。

5.  apm は APM イベントをポーリングし、次のイベントを処理します。
    名称                   動作             解説
    PMEV_STANDBYREQ        サスペンド       待機要求
    PMEV_SUSPENDREQ        サスペンド       サスペンド要求
    PMEV_USERSUSPENDREQ    サスペンド       ユーザサスペンド要求
    PMEV_CRITSUSPEND       サスペンド       非常サスペンド要求
    PMEV_NORMRESUME        レジューム       通常の復元
    PMEV_CRITRESUME        レジューム       非常復元
    PMEV_STANDBYRESUME     レジューム       待機復元
    PMEV_BATTERYLOW        メッセージ通知   電池不足
    PMEV_UPDATETIME        時計合わせ       時刻を更新

バグ
警告! 現在のところ、ラップトップマシンの APM BIOS の実装は、 ほとんどとまではいかなくてもバグだらけです。 このインタフェースを使用すると LCD ディスプレイや電池を 危険にさらす可能性があります。 (これが MS-Windows で問題とならない理由はリアルモードインタフェース を使用しているからです。) このコードを使用してあなたのシステムが奇妙な動作をするのを発見した場合には、 電源プラグと電池を直ちにとまではいかなくてもできるだけ早く抜き、 このコードを無効にしてください。

私達はこのコードが動作するようになることに関心を持っています。 異常な動作の観察結果をぜひ私達に連絡してください。

apm が有効である時、ホットキーを使って BIOS 設定ルーチンを呼び出すと システムレジューム時に重大な障害を引き起こす可能性があります。 BIOS 設定プログラムはブートストラップ時または DOS から呼び出すべきです。

APM の実装によっては、電源ボタンを押したことやカバーを閉じるといった イベントを扱うことができない場合があります。 そのような実装でシステムをサスペンドする場合には、 必ず apm(8) または zzz(8) だけ を使用してください。

ディスク減速、LCD バックライト制御、パワーオンデマンドは 現在のバージョンではサポートされていません。

関連項目
apm(8), apmconf(8), zzz(8)

作者
Tatsumi Hosokawa <hosokawa@jp.FreeBSD.org>