[Suzaku:00612] Re: suzakuの時計機能について
Tetsuya Ohkawa
email@hidden
2006年 8月 25日 (金) 23:32:27 JST
大川です。
Abe wrote:
> abe と申します。
>
> 2005/7に話題になった「suzakuの時計機能について」ですが
> ソースを見てみますと、疑問が湧いてきたました。
>
> /user/busybox/date.c を見ますと、
> 関数 date_conv_time と date_conv_ftime で
> 1900を比較し、引いています。
>
> /include/asm-ppc/rtc.h でも get_rtc_interrupt で 1900を
>
> /user/cal/date.c では 1970 を
>
> 他を見ても1900だったりします。
>
> 時計の開始時は 1970/1/1_0:0:0 なのに
> なぜ1900で演算しているのでしょうか。
>
struct tm の tm_year メンバが、
「1900年からの年数」という仕様だからかと思います?
> 私も 「Thu Aug 21 03:20:57 1924」 が理解できないでいます。
>
昨年の MLの際は、TZが設定されていない点を調査しました。
今回、なぜ、ご指摘の時間が設定されてしまうのかを追ってみました。
対象: SUZAKU-V
dist: uClinux-dist-20040408-suzaku6
において、libc/uClibc/...../time.c の tzset() で変数の値がバケてました。
変数の値を強引に正常値に更新してあげると
1970年1月1日0時0分0秒となりました。
この部分のソース自体にバグはなさそうで、別な所から悪さされているような感
じです。
dist: uClinux-dist-20051110-suzaku2
で試した結果、正しく動作しました。
原因は、まだつかめてませんが、
新しい dist をお使い頂くことをお勧めいたします。
suzaku メーリングリストの案内