[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:41001] Re: hwclockのseconds表示について
- From: Kenshi Muto <kmuto@xxxxxxxx>
- Subject: [debian-users:41001] Re: hwclockのseconds表示について
- Date: Mon, 12 Jul 2004 20:31:11 +0900
- List-help: <mailto:debian-users-ctl@debian.or.jp?body=help>
- List-id: debian-users.debian.or.jp
- List-owner: <mailto:debian-users-admin@debian.or.jp>
- List-post: <mailto:debian-users@debian.or.jp>
- List-software: fml [fml 4.0.3 release (20011202/4.0.3)]
- List-unsubscribe: <mailto:debian-users-ctl@debian.or.jp?body=unsubscribe>
- X-ml-info: If you have a question, send e-mail with the body "help" (without quotes) to the address debian-users-ctl@debian.or.jp; help=<mailto:debian-users-ctl@debian.or.jp?body=help>
- X-ml-name: debian-users
- X-mlserver: fml [fml 4.0.3 release (20011202/4.0.3)]; post only (only members can post)
- X-original-to: debian-users@debian.or.jp
- X-spam-level:
- X-spam-status: No, hits=-2.5 required=10.0 tests=IN_REP_TO,ISO2022JP_BODY,ISO2022JP_CHARSET, QUOTED_EMAIL_TEXT,RCVD_IN_ORBS,REFERENCES, SIGNATURE_SHORT_DENSE,SPAM_PHRASE_00_01,USER_AGENT version=2.44
- X-virus-scanned: by amavisd-new-20030616-p7 (Debian) at topstudio.co.jp
- References: <20040712175949.5034.DEB_ICKW@xxxxxxxxxxx>
- Message-id: <20040712113109.AF8D2222F2F@xxxxxxxxxxxxxxxxxxxx>
- X-mail-count: 41001
- User-agent: Wanderlust/2.11.30 (Wonderwall) SEMI/1.14.6 (Maruoka) FLIM/1.14.6 (Marutamachi) APEL/10.6 MULE XEmacs/21.4 (patch 15) (Security Through Obscurity) (i386-debian-linux)
武藤@Debianぷろじぇくとです。
At Mon, 12 Jul 2004 18:11:17 +0900,
ichikawa wrote:
> 大したことでは無いのですが、調べても見つからなかったので
> 質問させてください。
>
> hwclockコマンドで内臓時計の値を表示させると次のようになります。
>
> ~$ sudo hwclock --show
> 2004年07月12日 17時44分18秒 -0.343922 seconds
>
> この、「 -0.343922 seconds 」とは、何を表しているのでしょうか?
>
> 「man hwclock」も見ましたが、特に説明が見つかりませんでした。
> (見かたが、悪いのかな??)
そんなときにはソースを見るのがいいですね。
#「Code Reading」(毎日コミュニケーションズ、ISBN4839912653)もよろしく :-)
hwclockはutil-linuxパッケージなので、apt-get source util-linuxでソース
を展開。
hwclock/hwclock.cが該当のソースです。調べ方はいくつかありますが、こん
な感じで私は調べてみました(ソースにコメントが多いのでさっくりわかる人
も多いでしょうが)。
1. 「seconds」という文字列をもとに探してみると、display_timeの中の
「-(sync_duration)」というのがそれのようです。これはdisplay_timeの3番
目の引数として与えられています。
2. display_timeを呼び出しているのはmanipulate_clockの中で、先ほどの3
番目の引数にはtime_diff(read_time, startup_time)というのが入ります。
time_diffのコードはさておき、read_timeとstartup_timeの差であるとい
うのは名前と引数の雰囲気からして間違いないでしょう。
3. read_timeは、display_timeのところで設定があります。
gettimeofday(&read_time, NULL);、つまりこの時点での時刻を取得して
います(man gettimeofday)。
4. startup_timeも似たようなものであろうと想像がつきます。mainにありま
した。gettimeofday(&startup_time, NULL);
5. これで、この時間差は、コマンド起動時(main)のときの時刻と、実際に
表示ルーチン(display_time)に到達したときの時刻の差であることがわか
りました。
6. time_diffを見てみると、
time_diff(struct timeval subtrahend, struct timeval subtractor) {
/*---------------------------------------------------------------------------
The difference in seconds between two times in "timeval" format.
----------------------------------------------------------------------------*/
return (subtrahend.tv_sec - subtractor.tv_sec)
+ (subtrahend.tv_usec - subtractor.tv_usec) / 1E6;
ですね。秒の差とu秒の差を取り出して結果を返しています。
--
武藤 健志@ kmuto @ kmuto.jp
Debian/JPプロジェクト (kmuto@debian.org, kmuto@debian.or.jp)
株式会社トップスタジオ (kmuto@xxxxxxxxxxxxxxx)
URI: http://www.topstudio.co.jp/~kmuto/ (Debianな話題など)