Re: [ntpwg] Bug: Status/Summary of slashdot leap-second crash on new years 2008-2009

Magnus Danielson
2009-01-08T16:51:46Z

M. Warner Losh skrev:
> In message: <49647E0F.9030008@davidnewall.com>
> David Newall <davidn@davidnewall.com> writes:
> : Linas Vepstas wrote:
> : > Currently, the Linux kernel keeps time in UTC. This means
> : > that it must take special actions to tick twice when a leap
> : > second comes by.
> :
> : Except it doesn't have to tick twice. Refer to
> : http://lkml.org/lkml/2009/1/7/78 in which I show that a time_t (what
> : time() returns) counts leap seconds (According to Bernstein this is what
> : UTC means), and using zoneinfo, the library processes leap seconds
> : correctly.
>
> This is *NOT* POSIX time_t. In order to be posix compliant, you can't
> do what Bernstein suggests. You can be non-complaint and deal it with
> zoneinfo.

You are free to keep your core time in whatever form you wish, but if
you want your time_t to be POSIX compatible when accessed over POSIX
interfaces you would need to honour the POSIX time_t mapping. While
POSIX tried to avoid the leapsecond issue, the mapping they do perform
has a peculiar effect on what happends on time_t if you also want to
honour the UTC to time_t mapping while accepting UTC from external sources.

> : I just realised that the Notes in man 2 time are confusing and probably
> : unnecessary. Suffice to say that (assuming correctly configured
> : zoneinfo) time() returns the number of seconds elapsed since start 1970.
>
> That's not POSIX complaint.

It just *appears* to be the number of "seconds" since 1970. This
appearence is important to some and causing a greif to others.

Cheers,
Magnus