2020年5月23日土曜日

[Linux] アプリケーションからwatchdog を制御する

こんにちは

ソフトな道をほのぼのと今日も歩きます。


今回は、LinuxアプリからWatchdog タイマを再設定した時に


”watchdog watchdog0: watchdog did not stop!”

メッセージが出力されました。


その調査・対応について記載してみたいと思います。


このメッセージはターミナル上にwatchdogタイマ再設定の都度


出てくるので、ターミナルは大量のメッセージで埋め尽くされてしまいます。


このメッセージをカーネルソース内で以下のコマンドにて検索しました。


"grep "watchdog did not stop" -ir ./パス"


検索した結果

drivers/watchdog/

下のソースにヒットしました。


メッセージ出力はエラーに転んだ時に出力するようになっていました。

→ カーネルを直すのもいいのですが、上位側(アプリケーション)

でエラーがないように扱うのが筋のような気がしました。


そして、色々調べてわかったのは


アプリ内で


fd= open("/dev/watchdog", O_WRONLY);


を再設定する際に毎回実行していましたが、このopen()が入ってくると


毎回上記メッセージが出ます。


そこで、open("/dev/watchdog", O_WRONLY);は起動時の一回だけにして


後は開きっぱなしの状態(close()しないということです)で値を書き込む。


といった方法にしてみたら


上記メッセージは出なくなりました。


今日のひとこと


東京は6/1から緊急事態宣言解除になる話が出ています。


もしそうなったら、出勤者であふれかえってしまいます。


ただ、首都圏以外が5/22に解除されたとのことなので


その10日後の6/1で再発して


やはり緊急事態解除はやめよう。なんてことになるんじゃないかと


予想します。


良い意味で外れることを願います。

0 件のコメント:

コメントを投稿