From: Arnd Bergmann <arnd@arndb.de>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: linux-arch@vger.kernel.org, Vineet.Gupta1@synopsys.com,
linux-kernel@vger.kernel.org,
James Hogan <james.hogan@imgtec.com>,
"H.J. Lu" <hjl.tools@gmail.com>
Subject: Re: new architectures, time_t __kernel_long_t
Date: Thu, 15 Nov 2012 09:14:22 +0000 [thread overview]
Message-ID: <201211150914.22835.arnd@arndb.de> (raw)
In-Reply-To: <50A3C631.8010301@zytor.com>
On Wednesday 14 November 2012, H. Peter Anvin wrote:
> On 11/14/2012 04:18 AM, Arnd Bergmann wrote:
> > Since we are in the review phase for two new architectures that we
> > should be merging into the mainline kernel, I think we need to
> > come up with a solution for making them use a proper 64-bit time_t.
> >
> > Right now, the only 32-bit user space interface we have to use 64-bit
> > time_t is the x32 side of x86-64, and that works by overriding all
> > "long" sized types to be 64 bit at the ABI level, which we don't
> > want for pure 32 bit architectures.
>
> Sort of. Either way, the kernel headers aren't really x32-clean yet, so
> we have an opportunity to do things more cleanly as we are implementing
> this.
Ah, I didn't know that. How does one build an x32 libc then?
> > I would suggest we make 64-bit time_t, clock_t and suseconds_t the
> > default in include/asm-generic/posix_types.h and change all existing
> > 32 bit users of that file to provide an override to define these
> > as "long".
>
> We also need snseconds_t: POSIX stupidly enough demands that the
> nanosecond field in struct timespec is "long", but that is really not
> appropriate. Unfortunately there are existing architectures (e.g.
> SPARC) where we can't use suseconds_t either, so we are trying to push a
> new snseconds_t type into POSIX.
Right.
> > The other types that are used as 64 bit on x32 are ino_t, nlink_t,
> > size_t, ssize_t, ptrdiff_t, and off_t.
>
> ptrdiff_t obviously not... although __kernel_ptrdiff_t is (as the
> pointers are 64 bits in kernel space.) Similarly, size_t and ssize_t
> are only 32 bits in user space and we override them for compatibility
> with the native kernel.
For ARC and Meta, the pointers in kernel space are never 64 bit. For x32,
they could in theory be 32 bit if one was to do a native x32 kernel port
(which I hope nobody will do).
The __kernel_* types are never about what the kernel actually has (user space
should not care), they are about what the ABI defines that are are using.
We could in theory define all the above (and __kernel_ulong_t) to be 64 bit
wide on all new architectures, which would allow doing 64 bit port later
without a compat layer, but that benefit would be far outweighed by the
complexity and cost of passing 64-bit arguments in two registers for a lot
of syscalls.
Arnd
next prev parent reply other threads:[~2012-11-15 9:14 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-14 12:18 new architectures, time_t __kernel_long_t Arnd Bergmann
2012-11-14 12:48 ` Geert Uytterhoeven
2012-11-14 16:26 ` H. Peter Anvin
2012-11-14 16:26 ` H. Peter Anvin
2012-11-15 9:14 ` Arnd Bergmann [this message]
2012-11-15 9:14 ` Arnd Bergmann
2012-11-15 13:59 ` H.J. Lu
2012-11-15 14:36 ` Arnd Bergmann
2012-11-15 14:42 ` H.J. Lu
2012-11-15 15:10 ` H. Peter Anvin
2012-12-21 4:57 ` Al Viro
2012-12-21 5:00 ` H. Peter Anvin
2012-12-21 5:02 ` Al Viro
2012-12-21 5:05 ` H. Peter Anvin
2012-12-21 5:19 ` Al Viro
2012-12-21 5:47 ` H. Peter Anvin
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=201211150914.22835.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=Vineet.Gupta1@synopsys.com \
--cc=hjl.tools@gmail.com \
--cc=hpa@zytor.com \
--cc=james.hogan@imgtec.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/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).