.\" Copyright (c) 1999 Mitsuru IWASAKI .\" Copyright (c) 1999 KOIE Hidetaka .\" Copyright (c) 1999 Yoshihiko SARUMARU .\" Copyright (c) 1999 Norihiro Kumagai .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)apmd.8 1.1 (FreeBSD) 6/28/99 .\" %FreeBSD: src/usr.sbin/apmd/apmd.8,v 1.19 2004/07/03 18:35:50 ru Exp % .\" .\" $FreeBSD$ .\" .Dd June 28, 1999 .Dt APMD 8 i386 .Os .Sh 名称 .Nm apmd .Nd Advanced Power Management 監視デーモン .Sh 書式 .Nm .Op Fl d .Op Fl f file .Op Fl s .Op Fl v .Sh 解説 .Nm ユーティリティは、指定した Advanced Power Management .Pq Tn APM イベントを監視し、 いずれかのイベントが発生した場合、 対応するコマンドシーケンスを実行します。 設定ファイルで指定されたイベントのみが .Nm へ通知され、それ以外のイベントは無視されます。 APM BIOS によって発行された イベントに対して、 .Nm は設定ファイルで指定されたコマンドシーケンスを実行します。 .Nm をサスペンド/スタンバイを監視するようにして起動すると、 カーネルはそれらの要求イベントに対する 処理を行いません。 そのためそれらのイベント発生時に 処理をさせたい場合は、適切なコマンドまたは組み込み関数を 明示的に設定ファイルに指定する必要があります。 .Pp .Nm ユーティリティは以下の実行時オプションを理解します。 .Bl -tag -width -f_file .It Fl d デバッグモードで起動します。 デーモンモードではなくフォアグラウンドで動作します。 .It Fl f Ar file デフォルトの設定ファイル .Pa /etc/apmd.conf の代りに使用する、別の設定ファイル .Ar file を指定します。 .It Fl s 電源状態の変更が検出されたが (AC_POWER_STATE) ラップトップの BIOS がそれを報告しないときに、 .Nm に POWERSTATECHANGE イベントをシミュレートさせます。 これにより、電源コードを抜いたときに LCD バックライトを暗くする といったことが可能になります。 .It Fl v 冗長モードで動作します。 .El .Pp .Nm は起動時に設定ファイル (デフォルトは .Pa /etc/apmd.conf ) を読み込み、 監視すべきイベントを APM デバイスドライバへ通知します。 終了時には APM デバイスドライバはイベントの監視を自動的に解除します。 .Pp .Nm プロセスがシグナル SIGHUP を受信すると、設定ファイルを読み込み直して、 設定の変更内容を APM デバイスドライバに通知します。 .Pp .Nm ユーティリティは、デバイスファイル .Pa /dev/apmctl を経由して、イベントの受け取りや APM システム制御用の .Xr ioctl 2 要求を発行します。 このデバイスファイルは排他制御されてオープンされるため、 .Nm プロセスは同時に 1 つのみ起動可能です。 .Pp .Nm が APM イベントを受け取ると、設定ファイルで指定された イベントに対応するコマンドリストを実行するために 子プロセスを生成し、再び APM イベントの待ち状態になります。 生成された子プロセスは、 指定されたコマンドを 1 つずつ列挙された順番に実行します。 .Pp .Nm が SUSPEND/STANDBY 要求に対するコマンドリストを処理している間、 カーネル内の APM デバイスドライバは、APM BIOS に対して 毎秒 1 回以上通知を発行し続けます。 これによって BIOS は、コマンド処理中であり要求が まだ完結していないことを認識します。 .Pp .Nm ユーティリティはファイル .Pa /var/run/apmd.pid を作成し、プロセス ID を記録します。これは .Nm を kill や、設定ファイルを読み込ませるために使えます。 .Sh 設定ファイル .Nm の設定ファイルの構造は非常にシンプルです。 例えば次のようになります。 .Pp .Bd -literal apm_event SUSPENDREQ { exec "sync && sync && sync"; exec "sleep 1"; exec "zzz"; } .Ed .Pp この例では、APM イベント .Ql SUSPENDREQ (ディスプレイを閉じた時などに発生します) を .Nm が受け取ると、 .Ql sync コマンドを 3 回実行し、少し待ったあとに .Nm zzz ( Ns Nm apm Fl z ) を実行してシステムをサスペンドさせます。 .Pp .Bl -bullet .It apm_event キーワード .Bd -ragged -offset indent .Ql apm_event はキーワードであり、イベントごとの設定の開始を指示します。 .Ed .It APM イベント .Bd -ragged -offset indent 複数のイベントに対して同じ処理を実行したい場合は、それらのイベント名を コンマで区切って指定します。 有効なイベント名は次の通りです。 .Bl -item .It - .Nm が起動されているとカーネルでの処理を行わなくなるイベント: .Pp .Bl -tag -width USERSUSPENDREQ -compact -offset indent .It STANDBYREQ .It USERSTANDBYREQ .It SUSPENDREQ コマンドリストに sync を含めることをおすすめします .It USERSUSPENDREQ コマンドリストに sync を含めることをおすすめします .It BATTERYLOW コマンドリストは zzz のみをおすすめします .El .It - カーネルの処理終了後に .Nm へ通知されるイベント: .Pp .Bl -tag -width USERSUSPENDREQ -compact -offset indent .It NORMRESUME .It CRITRESUME .It STANDBYRESUME .It POWERSTATECHANGE .It UPDATETIME .It CAPABILITIESCHANGE .El .Pp 上記以外のイベントは .Nm へ通知されません。 .El .Ed .It コマンドライン文法 .Bd -ragged -offset indent 前述の例では、 .Ql exec から始まる 3 行はイベントに対するコマンドです。 それぞれの行はセミコロンで終了している必要があります。 イベントに対するコマンドリストは .Ql { と .Ql } で囲みます。 .Nm ユーティリティは、ダブルクォーテーションで囲まれたコマンドの実行に .Xr system 3 と同様に .Pa /bin/sh を使用します。 各コマンドはコマンドリストの最後に到達するか 0 以外の 終了コードで終わるまで順番に実行されます。 .Nm ユーティリティは、失敗したコマンドの終了コードを、 .Xr syslog 3 経由で報告します。 加えて APM BIOS からの要求イベントを取り消します。 .Ed .It 組み込み関数 .Bd -ragged -offset indent コマンド行の代りに .Nm の組み込み関数を指定できます。組み込み関数はコマンド行と同様に セミコロンで終了します。次の組み込み関数が現在サポートされています。 .Bl -item .It - reject: .Bd -ragged -offset indent APM BIOS からの直前の要求を拒否します。 ディスプレイを閉じた時に発生する SUSPEND 要求を拒否して、 代りに STANDBY 状態にしたい場合などに使用します。 .Ed .El .Ed .El .Sh 使用例 設定ファイルのサンプルには、以下のものが含まれています。 .Bd -literal apm_event SUSPENDREQ { exec "/etc/rc.suspend apm suspend"; } apm_event USERSUSPENDREQ { exec "sync && sync && sync"; exec "sleep 1"; exec "apm -z"; } apm_event NORMRESUME { exec "/etc/rc.resume apm suspend"; } apm_event STANDBYRESUME { exec "/etc/rc.resume apm standby"; } # resume event configuration for serial mouse users by # reinitializing a moused(8) connected to a serial port. # #apm_event NORMRESUME { # exec "kill -HUP `cat /var/run/moused.pid`"; #} # suspend request event configuration for ATA HDD users: # execute standby instead of suspend. # #apm_event SUSPENDREQ { # reject; # exec "sync && sync && sync"; # exec "sleep 1"; # exec "apm -Z"; #} .Ed .Sh 関連ファイル .Bl -tag -width /etc/apmd.conf -compact .It Pa /etc/apmd.conf .It Pa /dev/apmctl .It Pa /var/run/apmd.pid .El .Sh 関連項目 .Xr apm 4 , .Xr apm 8 .Sh 作者 .An Mitsuru IWASAKI Aq iwasaki@FreeBSD.org .An KOIE Hidetaka Aq koie@suri.co.jp .Pp また、 .An Warner Losh Aq imp@FreeBSD.org , .An Hiroshi Yamashita Aq bluemoon@msj.biglobe.ne.jp , .An Yoshihiko SARUMARU Aq mistral@imasy.or.jp , .An Norihiro Kumagai Aq kuma@nk.rim.or.jp , .An NAKAGAWA Yoshihisa Aq nakagawa@jp.FreeBSD.org , .An Nick Hilliard Aq nick@foobar.org による貢献がありました。 .Sh 歴史 .Nm ユーティリティは .Fx 3.3 から登場しました。