INITTODR(9)            NetBSD Kernel Developer's Manual            INITTODR(9)

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 sys-
     tem, as given in base.  Those heuristics include:

        If the battery-backed clock has a valid time, and is not signifi-
         cantly behind the time provided by base, it is used.

        If the battery-backed clock does not have a valid time, or is signif-
         icantly 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 vari-
     able.

DIAGNOSTICS
     The inittodr() function prints diagnostic messages if it has trouble fig-
     uring 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.

NetBSD 5.0                     September 6, 2006                    NetBSD 5.0