NAME¶
inittodr
—
initialize system time
SYNOPSIS¶
#include
<sys/types.h>
#include
<sys/systm.h>
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
obtained from the root file system, as given in
base. How the
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 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.
SEE ALSO¶
resettodr(9),
time(9)
BUGS¶
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
FreeBSD implementation should do a better job of
validating the time provided in
base when the
battery-backed clock is unusable. Currently it unconditionally sets the system
clock to this value.