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/