Re: [PATCH 01/24] types: create <asm-generic/int-*.h>
From: H. Peter Anvin
Date: Fri Apr 25 2008 - 15:13:17 EST
Matthew Wilcox wrote:
So ... given all this, why do we define s64 to be 'long' on some
architectures and 'long long' on others? It seems to actively _hinder_
passing it to printf(), so there must be some other good reason that
I'm missing to not make it 'long long' everywhere.
Well, compatibility with userspace is probably one aspect of that.
x86-64 is the odd man out there, it defines __s64 as "long long" even
for userspace, even though int64_t from <stdint.h> is "long". This,
IMO, is the Wrong Thing, but it's a separate set of changes.
The right thing to do is probably to always use "long long" in the
kernel, while defining __s64 et al as "long" on 64-bit platforms when
not under __KERNEL__.
Again, this is a separate set of changes from this patchset, which is
just a code transformation.
-hpa
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/