CVSROOT:        /cvs
Module name:    src
Changes by:     chel...@cvs.openbsd.org 2020/06/22 15:16:07

Modified files:
        sys/kern       : kern_tc.c 
        sys/sys        : time.h 
        share/man/man9 : microtime.9 

Log message:
timecounting: add gettime(9), getuptime(9)

time_second and time_uptime are used widely in the tree.  This is a
problem on 32-bit platforms because time_t is 64-bit, so there is a
potential split-read whenever they are used at or below IPL_CLOCK.

Here are two replacement interfaces: gettime(9) and getuptime(9).
The "get" prefix signifies that they do not read the hardware
timecounter, i.e. they are fast and low-res.  The lack of a unit
(e.g. micro, nano) signifies that they yield a plain time_t.

As an optimization on LP64 platforms we can just return time_second or
time_uptime, as a single read is atomic.  On 32-bit platforms we need
to do the lockless read loop and get the values from the timecounter.

In a subsequent diff these will be substituted for time_second and
time_uptime almost everywhere in the kernel.

With input from visa@ and dlg@.

ok kettenis@

Reply via email to