I'm finally digging into a long-standing bug exhibited by runwhen
(rw-match computes a timestamp 10 seconds too early), and I think the
problem is in skalibs.  tai_from_sysclock() adds 10 seconds depending
on whether skalibs is configured with --enable-tai-clock.  But
tai_from_timeval doesn't, so they're inconsistent.  I think they're
actually both wrong: the correct behavior for both should be to
unconditionally add 10 seconds, and conditionally add leap seconds
depending on --enable-tai-clock

No matter whether you use a POSIX or TAI clock, the epoch is the same:
1970-01-01 00:00:10 TAI (which is 00:00:00 UTC).  So the 10 seconds
need to be added in either case.

With a POSIX clock and no --enable-tai-clock, we need to add the
appropriate amount of leap seconds or else the tai_t values we
generate will differ from those simultaneously generated on a system
using TAI-10 and --enable-tai-clock.  (This means that on a POSIX
system, converting future times to TAI will give you wrong results
after the time when the as-yet-unknown next leap second will be
added.)


paul

Reply via email to