[LEAPSECS] Lets get REAL about time.

Poul-Henning Kamp phk at phk.freebsd.dk
Sat Jan 21 10:54:24 EST 2012


In message <4F1ADE6D.8070707 at yahoo.com>, Michael Deckers writes:


> For one thing, IEEE float values contain infinities and

> NaNs, and since the POSIX interfaces accept time_t values

> as inputs, ths system code would have to deal with them.


timeval contains bogus combinations of tv_sec and tv_usec and
a lot of code does not even notice...

I already specified that you get EINVAL if it is not a valid
floating point number. I may have to be more specific than "valid"
but I really don't see this a problem, considering how trivial
and fast this is to check, compared to the math needed to get
to, for instance UTC.


> Moreover, IEEE floating point operations depend on certain

> environmental settings (eg, rounding modes and enabled

> traps) and it is not clear whether a system call must or

> can use those of the caller in every circumstance.


I'm not sure I can see how it can become relevant, given
a good quality library implementation.


> The timestamps of computer operating systems are often

> used in a way where mainly the sequence of increasing

> values is important, not so much their absolute value.


That is why I added the "run_time()" version also.


> Comparing IEEE floating point values holds its surprises

> because values may be incomparable,


In which case they are not valid timestamps, and you get
EINVAL if in a library or whatever you asked for in your
own code.


--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.


More information about the LEAPSECS mailing list