Messages in this thread Patch in this message | | | Date | Tue, 29 May 2012 18:46:33 -0700 | From | John Stultz <> | Subject | Re: [PATCH RFC V2 3/6] time: keep track of the pending utc/tai threshold |
| |
On 05/23/2012 11:57 PM, Richard Cochran wrote: > On Thu, May 24, 2012 at 08:43:40AM +0200, Richard Cochran wrote: >> BTW you can use the program I have been using to test this at >> >> git://github.com/richardcochran/leap.git > That program exposes another leap second bug, too, I think. It reads > the time via adjtimex in a tight loop, optionally sleeping using > > clock_nanosleep(CLOCK_MONOTONIC, 0,&ts, NULL); > > The program does not wake from this call during a leap second. It is > my expectation that CLOCK_MONOTONIC should always work. Why doesn't > it?
Sorry for being slow here, just got a chance to look at this.
Does the following patch solve this issue for you?
thanks -john
Make sure we update wall_to_monotonic when adding a leapsecond. This could otherwise cause discontinuities in CLOCK_MONOTONIC.
Reported-by: Richard Cochran <richardcochran@gmail.com> Signed-off-by: John Stultz <john.stultz@linaro.org>
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index 6e46cac..fb95654 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -962,6 +962,7 @@ static cycle_t logarithmic_accumulation(cycle_t offset, int shift) timekeeper.xtime.tv_sec++; leap = second_overflow(timekeeper.xtime.tv_sec); timekeeper.xtime.tv_sec += leap; + timekeeper.wall_to_monotonic -= leap; }
/* Accumulate raw time */
| |