On Jan 12, 2012, at 07:09, John Gilmore wrote:

> This is my last post on this topic.  Diominishing returns have clearly set in.
>
I guess it's left for someone else to follow up.

> Hardware STCK[E] values obtained directly do not contain leap seconds;
> other software-mediated time and date values do usually reflect them.

Does this even include the STCK(E) variants of the TIME macro, or
does it return the raw value stored by STCK?  If the latter, why
bother?  Error recovery?

And consider the scenario:

1. On June 30, at 23:59:59.99... I invoke the TIME macro.

2. System code issues STCK

3. A leap second occurs; the OS spins for 1 second, during
   which it adds one second to CVTLSO

4. After the spin ends, system code fetches CVTLSO and
   subtracts the value from the STCK result.

5. After conversion, TIME returns 23:59:58.99... to my
   program.

Oops.  A second off.  It might even violate monotonicity
relative to an earlier call to TIME at 23:59:59.50.
This could be prevented by fetching CVTLSO both before and
after STCK and retrying if they differ.  An uncomfortable
overhead to avoid error that can occur only every few
years.

> The leap-seconds table in the PrOp provides the information, not quite
> up to date in the current edition, needed for this software mediation.
>
FSVO "not quite up to date".  It includes the last previous leap-second,
on January 1, 2009, so it won't become actually out of date until
June 30, 2012.

-- gil

Reply via email to