Bug#301631: linux-kernel-headers: type of __s64 and __u64 (from asm/types.h) on AMD64 should be long
On Tuesday 29 March 2005 17:01, Daniel Jacobowitz wrote:
> Can you explain why you want to make this change? Long long is still
> correct for these types, and consistent within the kernel. The
> kernel types don't need to match stdint.h.
I got an error from
#ifdef OS_Linux
#include <linux/version.h>
#include <sys/types.h>
#ifndef __u64
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,70)
#include <bits/wordsize.h>
#if __WORDSIZE == 64
typedef unsigned long __u64;
#else
typedef unsigned long long __u64;
#endif
#endif
#endif
#endif
somewhere below <asm/types.h> is included which results in a type
mismatch.
I don't know why <asm/types.h> isn't included from <sys/types.h> but
after I investigated some headers I found it confusing that c++ and c
use just long (size_t and int64_t) and the kernel uses long long. Both
represent 64 bit data but seems to be different types
Cheers,
André
Reply to: