[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な話題など)