INITTODR(9)

名称
inittodr - システムタイムの初期化

書式
<sys/types.h> <sys/systm.h> void inittodr(time_t base)

解説
inittodr() 関数は時刻を決定しシステムクロックの設定を行います。 システムのバッテリバックアップクロックおよび base で与えられるルートファイルシステムから得られる時刻 を検査する発見方法を使用して正しい時刻の取得を試みます。 base の値を得る方法は、ルートファイルシステムのタイプに依存して変化するでしょう。 下記の発見方法が使用されます。

•   バッテリバックアップクロックが妥当な時刻であれば、これが使用されます。

•   バッテリバックアップクロックが妥当な時刻でなければ、 base で与えられた時刻が使用されます。

一度システムタイムが決定されると、これが time 変数に格納されます。

診断
システムタイムの計算に問題があった場合は、 inittodr() 関数は診断メッセージを出力します。 出力される診断メッセージには下記の状態が含まれます。

•   バッテリバックアップクロックが無意味のようである。

関連項目
resettodr(9), time(9)

バグ
多くのシステムで inittodr() は、 年、月、日、時、分、秒で表現される時刻から、秒で表現される time に変換しなければなりません。 多くの実装ではコードの共有が可能ですが、共有していません。

それぞれのシステムの正確な時刻取得のための発見方法は、わずかに異なります。

FreeBSD の実装は、 バッテリバックアップクロックを使用できない場合は、 base で与えられた時刻をもっとうまく検証するべきでしょう。 現在は無条件にシステムタイムをこの値に設定します。