NAME
inittodr —
initialize system
time
SYNOPSIS
void
inittodr(
time_t
base);
DESCRIPTION
The
inittodr() function determines the time and sets the
system clock. It tries to pick the correct time using a set of heuristics that
examine the system's battery-backed clock and the time reported by the file
system, as given in
base. Those heuristics include:
- If the battery-backed clock has a valid time, and is not
significantly behind the time provided by base, it
is used.
- If the battery-backed clock does not have a valid time,
or is significantly behind the time provided in
base, and the time provided in
base is within reason, base is
used as the current time.
- If the battery-backed clock appears invalid, and
base appears non-sensical or was not provided (was
given as zero), an arbitrary base (typically some time within the same
year that the kernel was last updated) will be used.
Once a system time has been determined, it is stored in the
time variable.
DIAGNOSTICS
The
inittodr() function prints diagnostic messages if it has
trouble figuring out the system time. Conditions that can cause diagnostic
messages to be printed include:
- There is no battery-backed clock present on the
system.
- The battery-backed clock's time appears
nonsensical.
- The base time appears
nonsensical.
- The base time and the
battery-backed clock's time differ by a large amount.
SEE ALSO
clock_ymdhms_to_secs(9),
resettodr(9),
time_second(9)
BUGS
Some systems use heuristics for picking the correct time that are slightly
different.