Whamcloud - gitweb
LU-1537 libcfs: 64-bit values are l64 on powerpc
[fs/lustre-release.git] / libcfs / include / libcfs / posix / posix-types.h
index 45954e6..0f31ac2 100644 (file)
@@ -41,6 +41,7 @@
 #define _LUSTRE_POSIX_TYPES_H
 
 #include <asm/types.h>
+#include <stdbool.h> /* for bool */
 #ifndef HAVE_UMODE_T
 typedef unsigned short cfs_umode_t;
 #else
@@ -73,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 */