* ウォッチドッグタイマ [#v1b0ae83]

Linux では,確か結構前からウォッチドッグタイマのサポートがあります.
が,使う機会がないので使ってなかったのだが,HDL-GXR ポーティング祭りの一環としていじってみました.

** 参考文献 [#wcd546f6]

linux/Documentations/watchdog/ の下のドキュメント.

** カーネルの設定 [#q0e1c11c]

ウォッチドッグタイマのドライバは linux/drivers/watchdog にあります.
HDL-GXR では「Orion5x watchdog」を有効にすれば使用することができるはずです.
が,今のカーネルではコンパイルエラーで止まってしまうので,適当に直しました.
#ref(orion5x_wdt.diff)
こいつを当ててコンパイルしてください.

** ユーザランドからの使いかた [#y7ae8bfd]

要約すると

- ユーザランドからは /dev/watchdog 経由で操作する
- このデバイスファイルに write(2) することにより,ウォッチドッグタイマの再設定が行われる
- 一定期間 write が無いとタイマが expire し,ハードウェアリセットがかかる

こんなところです.

簡単な例では
 # ( while sleep 10; do echo; done ) >/dev/watchdog &

で動かすことができます.

が,これでは動いてるのかどうかわからないので,実際にリセットがかかるように動かしてみましょう.

 landisk:~# sleep 1000000 >/dev/watchdog                                         
                                                                                 
                                                                                 
 =========================================                                       
     HDL-GXR series Initial boot loader                                          
                                                                                 
  Copyright (C) 2006 I-O DATA DEVICE,INC.                                        
 ========================================= ** LOADER **                          
  ** MARVELL BOARD: DB_MV88F5182_HDL_GT LE                                       
                                                                                 
 U-Boot 1.1.1 (Oct  5 2006 - 13:58:33) MV : 1.7.3 (I-O DATA 0.9(GX))             

確かにリセットがかかりました.

** 正しい使いかた [#a1da7d5e]

まぁ,上記の例のままでも「システム全体としての監視」としては用を為しているのかと思います.

が,マジメに使おうとする場合は
- 監視対象のプログラム(サーバデーモン)などにウォッチドッグタイマの再設定処理を埋め込み
- 再設定処理も alarm などの割り込みを使わずに処理のメインパスに埋め込む

ようにする必要があります.


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS