From: "H. Peter Anvin" <hpa@zytor.com>
To: John Stultz <john.stultz@linaro.org>, Arnd Bergmann <arnd@arndb.de>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>,
Christoph Hellwig <hch@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>,
Ley Foon Tan <lftan@altera.com>,
Linux-Arch <linux-arch@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
LeyFoon Tan <lftan.linux@gmail.com>,
Chung-Lin Tang <cltang@codesourcery.com>
Subject: Re: [PATCH 00/25] Change time_t and clock_t to 64 bit
Date: Wed, 14 May 2014 17:14:50 -0700 [thread overview]
Message-ID: <537406FA.2040906@zytor.com> (raw)
In-Reply-To: <CANcMJZAOi9ctWkpEgynj6wxCrvW4oS5ZHj3Chv04D=VQDogEvw@mail.gmail.com>
On 05/14/2014 02:33 PM, John Stultz wrote:
>
> We can do some tricks for internal optimizations here if these are
> critical. I'd be more concerned about userland divisions where moving
> to a 64bit time_t would cause performance issues that we cannot help
> optimize.
>
Honestly, the cost of not addressing the Y2038 problem in plenty of time
is going to be way, way, way, way more expensive than some additional
arithmetic.
As far as converting to calendar notation (e.g. the Gregorian calendar),
only the first division needs to be done with full time_t width.
Furthermore, since the divisor is known a priori, the compiler *should*
be able to do it as an inverse multiply.[1]
The remaining divisions are bounded, and a smart compiler should even
know that.
> I'm not sure I'm totally following this... Are you suggesting we keep
> 32bit time internally w/ some different offset but then pass to
> userland a 64bit time_t? Or are you suggesting we change the abi to
> move the epoch?
I think this makes sense as a way of emergency rescue of legacy ABIs --
similar to the windowing solution used to Y2K-rescue legacy systems.
Nonlegacy ABIs should just be designed correctly from the start.
> I think I'm with hpa in his recent mail in that the internal
> representation is an optimization detail, and the bigger question is146
> do we use a 64bit time_t for future systems (possibly w/ a major ABI
> break - with compat interface for existing 32bit applications), or do
> we try to rev interfaces function by function to provide 2038 safe
> versions which applications will have to be modified to use?
>
> Me, I'm a fan of moving time_t to 64bits, since it makes "porting"
> applications to a 2038 safe ABI easier.
I obviously couldn't agree more.
-hpa
[1] Not entirely true: the highest possible divisor necessary when doing
Gregorian calendar calculations is 12_622_780_800 (0x2_f060_5980), the
number of seconds in each Gregorian 400-year cycle. Similarly, dividing
with 86400 first to separate time and date requires the date part of the
result to remain 64 bits until the next division. Thus, depending on
exactly how the calculations are partitioned it may be necessary to do
two 64-bit wide divisions; this can, however, be avoided with some care.
next prev parent reply other threads:[~2014-05-15 0:15 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-13 8:57 [PATCH 00/25] Change time_t and clock_t to 64 bit Ley Foon Tan
2014-05-13 9:02 ` [PATCH 01/25] asm-generic: " Ley Foon Tan
2014-05-13 9:15 ` James Hogan
2014-05-13 9:30 ` Thomas Gleixner
2014-05-13 9:32 ` Ley Foon Tan
2014-05-13 9:50 ` James Hogan
2014-05-13 10:17 ` Ley Foon Tan
2014-05-13 10:21 ` Arnd Bergmann
2014-05-13 12:07 ` Thomas Gleixner
2014-05-13 13:11 ` Geert Uytterhoeven
2014-05-13 13:38 ` Arnd Bergmann
2014-05-13 14:37 ` Thomas Gleixner
2014-05-13 10:22 ` James Hogan
2014-05-14 3:47 ` H. Peter Anvin
2014-05-14 10:44 ` Geert Uytterhoeven
2014-05-13 9:02 ` [PATCH 02/25] arc: Add 32 bit time_t and clock_t Ley Foon Tan
2014-05-13 9:02 ` [PATCH 03/25] arm: " Ley Foon Tan
2014-05-13 9:02 ` [PATCH 04/25] avr32: " Ley Foon Tan
2014-05-13 20:19 ` Hans-Christian Egtvedt
2014-05-14 1:54 ` Ley Foon Tan
2014-05-14 7:44 ` Hans-Christian Egtvedt
2014-05-14 21:39 ` H. Peter Anvin
2014-05-13 9:02 ` [PATCH 05/25] blackfin: " Ley Foon Tan
2014-05-13 9:03 ` [PATCH 06/25] c6x: " Ley Foon Tan
2014-05-13 9:03 ` [PATCH 08/25] frv: " Ley Foon Tan
2014-05-13 9:03 ` [PATCH 09/25] hexagon: " Ley Foon Tan
2014-05-13 9:03 ` [PATCH 10/25] m32r: " Ley Foon Tan
2014-05-13 9:03 ` [PATCH 11/25] m68k: " Ley Foon Tan
2014-05-13 9:04 ` [PATCH 12/25] metag: " Ley Foon Tan
2014-05-13 9:22 ` James Hogan
2014-05-13 9:28 ` Ley Foon Tan
2014-05-13 9:05 ` [PATCH 13/25] microblaze: " Ley Foon Tan
2014-05-13 9:05 ` [PATCH 14/25] mips: " Ley Foon Tan
2014-05-13 9:05 ` [PATCH 15/25] mn10300: " Ley Foon Tan
2014-05-13 9:05 ` [PATCH 16/25] openrisc: " Ley Foon Tan
2014-05-13 9:30 ` Jonas Bonn
2014-05-13 9:41 ` Ley Foon Tan
2014-05-13 9:06 ` [PATCH 17/25] parisc: " Ley Foon Tan
2014-05-13 20:17 ` Helge Deller
2014-05-14 1:57 ` Ley Foon Tan
2014-05-15 0:34 ` H. Peter Anvin
2014-05-13 9:06 ` [PATCH 19/25] s390: " Ley Foon Tan
2014-05-13 9:06 ` [PATCH 20/25] score: " Ley Foon Tan
2014-05-13 9:06 ` [PATCH 21/25] sh: " Ley Foon Tan
2014-05-13 9:06 ` [PATCH 22/25] sparc: " Ley Foon Tan
2014-05-13 9:06 ` [PATCH 23/25] unicore32: " Ley Foon Tan
2014-05-13 9:06 ` [PATCH 25/25] xtense: " Ley Foon Tan
2014-05-13 9:10 ` [PATCH 07/25] cris: " Ley Foon Tan
2014-05-13 9:10 ` [PATCH 00/25] Change time_t and clock_t to 64 bit Geert Uytterhoeven
2014-05-13 9:23 ` Ley Foon Tan
2014-05-13 15:24 ` Christoph Hellwig
2014-05-13 15:33 ` Thomas Gleixner
2014-05-13 17:46 ` Christoph Hellwig
2014-05-13 18:10 ` Arnd Bergmann
2014-05-13 18:24 ` Geert Uytterhoeven
2014-05-13 19:32 ` Arnd Bergmann
2014-05-13 20:35 ` Geert Uytterhoeven
2014-05-14 11:00 ` Arnd Bergmann
2014-05-14 12:21 ` Thomas Gleixner
2014-05-14 14:01 ` Arnd Bergmann
2014-05-14 14:46 ` Thomas Gleixner
2014-05-14 15:48 ` Arnd Bergmann
2014-05-15 15:47 ` James Bottomley
2014-05-15 16:36 ` Arnd Bergmann
2014-05-15 21:07 ` One Thousand Gnomes
2014-05-16 7:48 ` Christoph Hellwig
2014-05-16 23:06 ` H. Peter Anvin
2014-05-14 21:33 ` John Stultz
2014-05-15 0:14 ` H. Peter Anvin [this message]
2014-05-15 3:32 ` Nicolas Pitre
2014-05-15 11:08 ` Arnd Bergmann
2014-05-15 11:18 ` Christoph Hellwig
2014-05-15 17:11 ` Chung-Lin Tang
2014-05-15 17:12 ` Chung-Lin Tang
2014-05-15 18:01 ` Joseph S. Myers
2014-05-15 19:18 ` Arnd Bergmann
2014-05-15 20:10 ` Joseph S. Myers
2014-05-15 20:38 ` Arnd Bergmann
2014-05-15 21:05 ` Joseph S. Myers
2014-05-19 8:08 ` Arnd Bergmann
2014-05-19 14:46 ` Joseph S. Myers
2014-05-19 17:22 ` Arnd Bergmann
2014-05-19 18:12 ` Joseph S. Myers
2014-05-19 18:20 ` Arnd Bergmann
2014-05-16 23:11 ` H. Peter Anvin
2014-05-16 23:47 ` Joseph S. Myers
2014-05-17 0:32 ` H. Peter Anvin
2014-05-18 13:46 ` Joseph S. Myers
2014-05-18 16:10 ` H. Peter Anvin
2014-05-18 18:18 ` Joseph S. Myers
2014-05-14 10:13 ` Ley Foon Tan
2014-05-14 10:33 ` Arnd Bergmann
2014-05-14 21:04 ` H. Peter Anvin
2014-05-13 18:15 ` Geert Uytterhoeven
2014-05-13 19:14 ` Thomas Gleixner
2014-05-14 3:36 ` [PATCH 24/25] x86: Add 32 bit time_t and clock_t Ley Foon Tan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=537406FA.2040906@zytor.com \
--to=hpa@zytor.com \
--cc=arnd@arndb.de \
--cc=cltang@codesourcery.com \
--cc=geert@linux-m68k.org \
--cc=hch@infradead.org \
--cc=john.stultz@linaro.org \
--cc=lftan.linux@gmail.com \
--cc=lftan@altera.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).