Right. I think the right solution is one I suggested on c.o.l.d.s
recently:
- time_t being a 64-bit signed integer linked to UTC
- struct timespec (and struct timeval, presumably) having an extra
field added:
64-bit seconds field (same as time_t) linked to UTC
32-bit nanosecond field (microsecond for timeval) linked to TAI
32-bit integral TAI-UTC difference
That way any moment in time will be uniquely derivable at least, at a
positive leap second, you will see the progression (where T means a
time_t value divisible by 86400):
tv_sec tv_delta UTC
T-3 N 23:59:57
T-2 N 23:59:58
T-1 N 23:59:59
T-1 N+1 23:59:60
T N+1 00:00:00
T+1 N+1 00:00:01
T+2 N+1 00:00:02
... and for a negative leap second ...
tv_sec tv_delta
T-3 N 23:59:57
T-2 N 23:59:58
T N-1 00:00:00
T+1 N-1 00:00:01
T+2 N-1 00:00:02
We may want to have a testable bit that we're "in" a leap second for
the 23:59:60 case...
-hpa
-- PGP: 2047/2A960705 BA 03 D3 2C 14 A8 A8 BD 1E DF FE 69 EE 35 BD 74 See http://www.zytor.com/~hpa/ for web page and full PGP public key I am Bahá'í -- ask me about it or see http://www.bahai.org/ "To love another person is to see the face of God." -- Les Misérables- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/faq.html