Provided by: freebsd-manpages_12.2-1_all bug

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.