[Armadillo:07255] busybox のhwclockのバグ
Yasuhisa Nakamura
email@hidden
2011年 5月 23日 (月) 22:17:04 JST
中村です。
[Armadillo:07250]で始まるスレッドで、settimeofday()、tzset()、
timezone 変数の話が出てましたので、関連する話題を提供させて
いただきます。
以前、A-220での開発案件のとき、USBメモリなどのVFATでの
ファイルのタイムスタンプが9時間ずれる問題に対処するため、
[Armadillo:01366]の記事
http://lists.atmark-techno.com/pipermail/armadillo/2006-November/001365.html
で紹介されているページに書かれている方法で、settimeofday()する
小さなプログラムを作りました。
その後、Armadillo-9の開発案件があり、A-9にはRTCがあるので、
hwclockコマンドで
hwclock --hctosys --utc
とやって対処しようとしたところ、うまく動きませんでした。
このhwclockはbusyboxでして、busyboxのhwclockに次のパッチを
あてたところ、意図した動作をするようになりました。
[Armadillo:07253]でAMAGAI様が書かれているように、timezone を
参照する前にtzset()を実行しなければならない、という問題です。
最近440+LCDもいじっていますが、440+LCDでも同じです。
(atmark-distが同じですので当然といえば当然なのですが)
--- hwclock.c-orig
+++ hwclock.c
@@ -133,6 +133,8 @@
static int to_sys_clock(int utc)
{
struct timeval tv = { 0, 0 };
+
+ tzset(); // need before referring timezone variable
const struct timezone tz = { timezone/60 - 60*daylight, 0 };
tv. tv_sec = read_rtc ( utc );
#hwclockコマンド関係で、あと2つ話題があります。
#これは後程、別メールで。
--
なかむら
(登録メールアドレスを変更しました。以前はdip.jpでした)
armadillo メーリングリストの案内