[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: