Whamcloud - gitweb
LU-1537 libcfs: 64-bit values are l64 on powerpc
[fs/lustre-release.git] / libcfs / include / libcfs / posix / posix-types.h
index 911ba95..0f31ac2 100644 (file)
@@ -1,6 +1,4 @@
-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
  * GPL HEADER START
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -26,7 +24,7 @@
  * GPL HEADER END
  */
 /*
- * Copyright  2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 /*
 #ifndef _LUSTRE_POSIX_TYPES_H
 #define _LUSTRE_POSIX_TYPES_H
 
+#include <asm/types.h>
+#include <stdbool.h> /* for bool */
 #ifndef HAVE_UMODE_T
-typedef unsigned short umode_t;
+typedef unsigned short cfs_umode_t;
+#else
+typedef umode_t cfs_umode_t;
 #endif
 
 /*
@@ -51,20 +53,45 @@ typedef unsigned short umode_t;
  * header files exported to user space
  */
 
+#ifndef HAVE___S8
 typedef __signed__ char __s8;
+#endif
+#ifndef HAVE___U8
 typedef unsigned char __u8;
+#endif
 
+#ifndef HAVE___S16
 typedef __signed__ short __s16;
+#endif
+#ifndef HAVE___U16
 typedef unsigned short __u16;
+#endif
 
+#ifndef HAVE___S32
 typedef __signed__ int __s32;
+#endif
+#ifndef HAVE___U32
 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 */