From: Prakash Surya Date: Mon, 18 Jun 2012 18:31:20 +0000 (-0700) Subject: LU-1537 libcfs: 64-bit values are l64 on powerpc X-Git-Tag: 2.3.52~7 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=5a446fdde7880fed6823ec4716b2621f57546180 LU-1537 libcfs: 64-bit values are l64 on powerpc The Linux kernel defines 64-bit values as 'long' rather than 'long long' for user space applications on powerpc. Previously Lustre would assume 64-bit values were 'long long', which would cause compilation errors for user space application when compiled on powerpc machines. This change removes this assumption, correctly defining 64-bit types on powerpc. Signed-off-by: Prakash Surya Change-Id: I99f210e9402d3b2aea1a1ee5458b670387f65323 Reviewed-on: http://review.whamcloud.com/3127 Tested-by: Hudson Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Oleg Drokin --- diff --git a/libcfs/include/libcfs/posix/posix-types.h b/libcfs/include/libcfs/posix/posix-types.h index aa62e71..0f31ac2 100644 --- a/libcfs/include/libcfs/posix/posix-types.h +++ b/libcfs/include/libcfs/posix/posix-types.h @@ -74,11 +74,24 @@ typedef __signed__ int __s32; typedef unsigned int __u32; #endif -#ifndef HAVE___S64 +/* + * The kernel defines user space 64bit values as l64 on powerpc. We must + * match that definition to avoid conflicting definition compile errors. + */ +#if defined(__powerpc64__) && !defined(__KERNEL__) +# ifndef HAVE___S64 +typedef __signed__ long __s64; +# endif +# ifndef HAVE___U64 +typedef unsigned long __u64; +# endif +#else /* !defined(__powerpc64__) || defined(__KERNEL__) */ +# ifndef HAVE___S64 typedef __signed__ long long __s64; -#endif -#ifndef HAVE___U64 +# endif +# ifndef HAVE___U64 typedef unsigned long long __u64; +# endif #endif /* long integer with size equal to pointer */