INITTODR(9) | FreeBSD Kernel Developer's Manual | INITTODR(9) |
名称
inittodr — システム時刻を初期化する解説
inittodr() 関数は、時刻を決定し、システムクロックを設定します。システムのバッテリに裏打ちされたクロックと base で与えられるようなルートファイルシステムから取得される時刻を検査する発見的な手法の 1 組を使用して正確な時刻を取り出すことを試みます。 base 値を取得する方法は、ルートファイルシステムのタイプに依存して変化します。使用される発見的な手法は、次を含んでいます:- バッテリに裏打ちされたクロックに有効な時刻があるなら、それが、使用されます。
- バッテリに裏打ちされたクロックに有効な時刻がないなら、 base で提供される時刻が使用されます。
いったんシステム時刻が決定されると、それは、 time 変数に格納されます。
診断
inittodr() 関数は、システム時刻を導き出すのに問題があるなら、診断メッセージを印刷 (表示) します。診断メッセージが印刷される条件は、次を含んでいます:- バッテリに裏打ちされたクロックの時刻が無意味と思われる。
バグ
多くのシステムで、 inittodr() は、年、月、日、時、分と秒で表現される時刻から、秒で表現される time に変換しなければなりません。実装の多くは、コードを共有できますが、そうなっていません。正確な時刻を取るための各システムの発見的な手法は、わずかに異なります。
FreeBSD の実装は、バッテリに裏打ちされたクロックが使用されないとき、 base で提供される時刻を有効にするよりよいジョブを行なうべきです。現在、システムクロックを、この値に無条件に設定しています。
March 22, 1997 | FreeBSD |