The binuptime() and getbinuptime() functions store the time elapsed since boot as a structbintime at the
address specified by bt. The microuptime() and getmicrouptime() functions perform the same utility, but
record the elapsed time as a structtimeval instead. Similarly the nanouptime() and getnanouptime()
functions store the elapsed time as a structtimespec. The sbinuptime() and getsbinuptime() functions
return the time elapsed since boot as a sbintime_t.
The binuptime(), microuptime(), nanouptime(), and sbinuptime() functions always query the timecounter to
return the current time as precisely as possible. Whereas getbinuptime(), getmicrouptime(),
getnanouptime(), and getsbinuptime() functions are abstractions which return a less precise, but faster
to obtain, time.
The intent of the getbinuptime(), getmicrouptime(), getnanouptime(), and getsbinuptime() functions is to
enforce the user's preference for timer accuracy versus execution time.