私がLinuxをインストールして使用しているDEC Highnote Ultra(以下DHU)や同IIでは、 suspend後resumeするとsuspendしていた時間だけ時計が遅れます。
ネットニュースのfj.os.linuxやNIFTY-SERVEのfunix/mes19を読んでいると、 カーネルのAdvanced Power Management用のコードの問題により、 standby時にはそのような現象が起きるとのことで、 対策用のパッチも投稿されています。
このパッチがDHUの場合にも適用できるのかも知れませんが、 カーネルを再構築するのも時間がかかるし、 もし再構築しても解決しない場合にはチョットアレだなぁ、 ということで、 apmd(-2.4)を改造して対症療法することにしました。
apmd-2.4.tar.gz中のapmd.cに 改造用パッチ を当ててから、 g?ccに'-DEVENT_ACTION'というオプションが渡るようにしてメイクすると、 任意のAPM event発生時に指定したコマンドを起動できるようになります。 上記の時計の遅れの問題を解消するには、 resume event発生時に'/sbin/clock -s'が実行されるようにすれば良い訳です。
起動すべきコマンドは、
apmd起動時時に、
イベントを表わすキーワードを1個以上「|
」で区切って並べたものを、
空白を区切として対にして
-e 'キーワード[|キーワード…] コマンド'
と指定するか、
同様の形式のキーワード列とコマンドの対を改行文字(LF)で区切って並べたテキストファイルを
-f ファイル名
と指定するかします。
-e
オプションへの引数は、
キーワード列とコマンドの区切として空白が必要なので、
必ずクォートする必要があります。
-f
オプションでファイルを指定する場合、
ファイル中の各行の文字「#
」から改行までは、
1個の空白(SP)に置換されます。
ただし「#
」の直後に改行がある場合は、
その2文字に加えて、
続く空白文字(ANSI Cの標準ライブラリのisspaceが真を返す文字)全体と共に、
1個の空白に置換されます。
指定可能なキーワードは以下のとおりです。
例えば
normal_resume
または
standby_resume
というイベント発生時に、
/sbin/clock -s
というコマンドを実行したい場合、
apmdを
apmd -e 'normal_resume|standby_resume /sbin/clock -s'
と起動するか、
内容が
normal_resume|standby_resume
/sbin/clock -s
の(2行で2行目の行頭がタブの)ファイル
(名前は何でもよいですが、
ここでは例えば/etc/apmd.event-actionとしましょう)
を作成し
apmd -f /etc/apmd.event-action
と起動します。
/etc/apmd.event-actionの内容は
normal_resume|standby_resume /sbin/clock -s
の1行でも
normal_resume|standby_resume
/sbin/clock -s
と2行目の行頭のタブが無くても
normal_resume|standby_resume
# This is a comment line.
/sbin/clock -s
とコメントが入っても構いません。
Any questions or comments about this page are greatly appreciated.
Almost all contents in this site are written by Kiyokazu SUTO (i.e. me) unless especially noted. I want to put all of them into the PUBLIC DOMAIN, even though some lawyers mention that it is impossible in my country.