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 obtained from the root
file system, as given in
Fa base .
How the
Fa base
value is obtained will vary depending on the
root file system type.
The heuristics used include:
If the battery-backed clock has a valid time, it is used.
If the battery-backed clock does not have a valid time,
the time provided in
Fa base
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:
The battery-backed clock's time appears nonsensical.
On many systems,
inittodr ();
has to convert from
a time expressed in terms of year, month, day, hours, minutes,
and seconds to
time
expressed in seconds.
Many of the implementations could share code, but do not.
Each system's heuristics for picking the correct time are slightly
different.
The
Fx implementation should do a better job of validating the time provided in
Fa base
when the battery-backed clock is unusable.
Currently it unconditionally sets the system clock to this value.