[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 メーリングリストの案内