[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <AANLkTik+2udoJ6JyZMhkd1yhr2W9hSWO_vD_zdm+BoOG@mail.gmail.com>
Date: Wed, 12 Jan 2011 05:32:03 +0900
From: "Kuwahara,T." <6vvetjsrt26xsrzlh1z0zn4d2grdah@...il.com>
To: john stultz <johnstul@...ibm.com>
Cc: Richard Cochran <richardcochran@...il.com>,
linux-kernel@...r.kernel.org, linux-api@...r.kernel.org,
netdev@...r.kernel.org, Alan Cox <alan@...rguk.ukuu.org.uk>,
Arnd Bergmann <arnd@...db.de>,
Christoph Lameter <cl@...ux.com>,
David Miller <davem@...emloft.net>,
Krzysztof Halasa <khc@...waw.pl>,
Peter Zijlstra <peterz@...radead.org>,
Rodolfo Giometti <giometti@...ux.it>,
Thomas Gleixner <tglx@...utronix.de>
Subject: Re: [PATCH V8 02/13] ntp: add ADJ_SETOFFSET mode bit
On Tue, Jan 11, 2011 at 6:06 AM, john stultz <johnstul@...ibm.com> wrote:
> On Tue, 2011-01-11 at 05:45 +0900, Kuwahara,T. wrote:
>> On Tue, Jan 11, 2011 at 1:49 AM, john stultz <johnstul@...ibm.com> wrote:
>> > Leapsecond processing is done via an absolute hrtimer. Thus when the
>> > time offset is set, the hrtimers that should have expired will fire
>> > (just like with settimeofday) and the adjustment will then be made.
>>
>> How do you convert relative time to absolute time? It's not trivial
>> because TAI offset is also a variable.
>
> I don't believe I understand what you're getting at.
>
> The proposed interface is almost identical in functionality to a
> userland application doing the following:
>
> offset = my_calculate_offset();
> clock_gettime(CLOCK_REALTIME, &now);
> newtime = my_add_ts(now, offset);
> settimeofday(&newtime, 0);
>
> The only difference is that you avoid the error from the delay between
> the gettime call and the settime call. It just adds the offset directly
> to the CLOCK_REALTIME.
For example, what time was it 3 seconds after 2008-12-31 23:59:59?
You may say, of course it's 2009-01-01 00:00:02. But it's not true.
You wonder why? Because a leap second had been added at midnight.
unix time UTC offset
---------- -------- ---
1230767997 23:59:57 -2
1230767998 23:59:58 -1
1230767999 23:59:59 0
1230768000 23:59:60 1 (leap second)
1230768000 00:00:00 2
1230768001 00:00:01 3
1230768002 00:00:02 4
That's why I said it's not trivial, and that your patch is broken and
thus useless. Unfortunately, there's no remedy for this as long as a
nonlinear timescale such as the unix time is being used, since the
leap second insertion/deletion is a non-deterministic event.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists