[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <063D6719AE5E284EB5DD2968C1650D6D1CB23A45@AcuExch.aculab.com>
Date: Wed, 22 Apr 2015 10:44:50 +0000
From: David Laight <David.Laight@...LAB.COM>
To: 'Thomas Gleixner' <tglx@...utronix.de>,
Arnd Bergmann <arnd@...db.de>
CC: "y2038@...ts.linaro.org" <y2038@...ts.linaro.org>,
Baolin Wang <baolin.wang@...aro.org>,
"pang.xunlei@...aro.org" <pang.xunlei@...aro.org>,
Peter Zijlstra <peterz@...radead.org>,
Benjamin Herrenschmidt <benh@...nel.crashing.org>,
Heiko Carstens <heiko.carstens@...ibm.com>,
Paul Mackerras <paulus@...ba.org>,
"cl@...ux.com" <cl@...ux.com>,
"heenasirwani@...il.com" <heenasirwani@...il.com>,
"linux-arch@...r.kernel.org" <linux-arch@...r.kernel.org>,
"linux-s390@...r.kernel.org" <linux-s390@...r.kernel.org>,
"mpe@...erman.id.au" <mpe@...erman.id.au>,
"rafael.j.wysocki@...el.com" <rafael.j.wysocki@...el.com>,
"ahh@...gle.com" <ahh@...gle.com>,
"Frederic Weisbecker" <fweisbec@...il.com>,
"pjt@...gle.com" <pjt@...gle.com>,
"riel@...hat.com" <riel@...hat.com>,
"richardcochran@...il.com" <richardcochran@...il.com>,
Martin Schwidefsky <schwidefsky@...ibm.com>,
John Stultz <john.stultz@...aro.org>,
"rth@...ddle.net" <rth@...ddle.net>,
"gregkh@...uxfoundation.org" <gregkh@...uxfoundation.org>,
LKML <linux-kernel@...r.kernel.org>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
Tejun Heo <tj@...nel.org>,
"linux390@...ibm.com" <linux390@...ibm.com>,
"linuxppc-dev@...ts.ozlabs.org" <linuxppc-dev@...ts.ozlabs.org>,
Ingo Molnar <mingo@...nel.org>,
"Paul E. McKenney" <paulmck@...ux.vnet.ibm.com>
Subject: RE: [Y2038] [PATCH 04/11] posix timers:Introduce the 64bit methods
with timespec64 type for k_clock structure
From: Thomas Gleixner
> Sent: 22 April 2015 09:45
> On Tue, 21 Apr 2015, Thomas Gleixner wrote:
> > On Tue, 21 Apr 2015, Arnd Bergmann wrote:
> > > I know there are concerns about this, in particular because C11 and
> > > POSIX both require tv_nsec to be 'long', unlike timeval->tv_usec,
> > > which is a 'suseconds_t' and can be defined as 'long long'.
> > >
> > > a)
> > >
> > > struct timespec {
> > > time_t tv_sec;
> > > long long tv_nsec; /* or typedef long long snseconds_t */
> > > };
> > >
> > > This is not directly compatible with C11 or POSIX.1-2008, but it
> > > matches what we do inside of 64-bit kernels, so probably has the
> > > highest chance of working correctly in practice
> >
> > After reading Linus rant in the x32 thread again (thanks for the
> > reminder), and looking at b/c/d - which rate between ugly and butt
> > ugly - I think we should go for a) and screw POSIX and C11 as those
> > committee dinosaurs seem to completely ignore the 2038 problem on
> > 32bit machines. At least I have not found any hint that these folks
> > care at all. So why should we comply to something which is completely
> > useless?
> >
> > That also makes the question about the upper 32bits check moot, so
> > it's the simplest and clearest of the possible solutions.
>
> Second thoughts after some sleep.
>
> So the outcome of this is going to be that user space libraries will
> not expose the syscall variant of
>
> syscall_timespec64 {
> s64 tv_sec;
> s64 tv_nsec;
> };
>
> to applications. The libs will translate them to spec conforming
>
> timespec {
> time_t tv_sec;
> long tv_nsec;
> };
>
> anyway. That means we have two translation steps on 32bit systems:
>
> 1) user space timespec -> syscall timespec64
>
> 2) syscall timespec64 -> scalar nsec s64 (ktime_t)
>
> and the other way round. The kernel internal representation is simply
> s64 (nsec) based all over the place.
Do you need the double-translation?
If all the kernel uses a 64bit nsec value the in-kernel syscall stub
can convert the user-supplied values appropriately before calling
the standard function.
Not that a syscall that takes a linear nsec value isn't useful.
FWIW I can't remember what NetBSD did when they extended time_t to 64bits.
David
--
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