]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cleaned up int types, page size info, byteorder for userspace
authorSage Weil <sage@newdream.net>
Thu, 10 Jan 2008 23:34:36 +0000 (15:34 -0800)
committerSage Weil <sage@newdream.net>
Thu, 10 Jan 2008 23:34:36 +0000 (15:34 -0800)
src/config.cc
src/crush/crush.h
src/include/buffer.h
src/include/byteorder.h [new file with mode: 0644]
src/include/ceph_fs.h
src/include/inttypes.h [new file with mode: 0644]
src/include/page.h [new file with mode: 0644]
src/include/types.h

index 6ae5554b7a2bb690341c8e6be0d425c07c4b1c7e..47a4ff0bc5133bf34dcb922dc2b24d8fc504f3ff 100644 (file)
@@ -39,6 +39,19 @@ Mutex _dout_lock;
 ostream *_dout = &std::cout;
 ostream *_derr = &std::cerr;
 
+// page size crap, see page.h
+int _get_bits_of(int v) {
+  int n = 0;
+  while (v) {
+    n++;
+    v = v >> 1;
+  }
+  return n;
+}
+unsigned _page_size = sysconf(_SC_PAGESIZE);
+unsigned _page_mask = ~(_page_size - 1);
+unsigned long _page_shift = _get_bits_of(_page_size);
+
 // file layouts
 struct ceph_file_layout g_OSD_FileLayout = {
  fl_stripe_unit: 1<<22,
index 470dcb83267943a433cfa4d3797803633ed0bf19..d6743a5d0e49ec9c7cfdd75dc3c93251d376216b 100644 (file)
@@ -5,11 +5,13 @@
 extern "C" {
 #endif
 
-#include <linux/types.h>  /* just for int types */
 
 #ifndef __KERNEL__
 # include <assert.h>
 # define BUG_ON(x) assert(!(x))
+# include "include/inttypes.h"  /* just for int types */
+#else
+# include <linux/types.h>
 #endif
 
 
index 14a3998cb11a33d8571fb724f3274d94210d15d1..18fa3c552e83c1f898e03bc004544371915c71b6 100644 (file)
@@ -26,7 +26,7 @@
 # include <sys/mman.h>
 #endif
 
-#include <asm/page.h>
+#include "page.h"
 
 // <hack>
 //  these are in config.o
diff --git a/src/include/byteorder.h b/src/include/byteorder.h
new file mode 100644 (file)
index 0000000..9825361
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * byteorder.h
+ *
+ * LGPL 2
+ */
+
+#ifndef _CEPH_BYTEORDER_H
+#define _CEPH_BYTEORDER_H
+
+typedef __u64 __le64;
+typedef __u32 __le32;
+typedef __u16 __le16;
+
+static __inline__ __u16 swab16(__u16 val) 
+{
+  return (val >> 8) | (val << 8);
+}
+static __inline__ __u32 swab32(__u32 val) 
+{
+  return (( val >> 24) |
+         ((val >> 8)  & 0xff00) |
+         ((val << 8)  & 0xff0000) | 
+         ((val << 24)));
+}
+static __inline__ __u64 swab64(__u64 val) 
+{
+  return (( val >> 56) |
+         ((val >> 40) & 0xff00ull) |
+         ((val >> 24) & 0xff0000ull) |
+         ((val >> 8)  & 0xff000000ull) |
+         ((val << 8)  & 0xff00000000ull) |
+         ((val << 24) & 0xff0000000000ull) |
+         ((val << 40) & 0xff000000000000ull) |
+         ((val << 56)));
+}
+
+#ifdef WORDS_BIGENDIAN
+# define cpu_to_le64(x) swab64((x))
+# define le64_to_cpu(x) swab64((x))
+# define cpu_to_le32(x) swab32((x))
+# define le32_to_cpu(x) swab32((x))
+# define cpu_to_le16(x) swab16((x))
+# define le16_to_cpu(x) swab16((x))
+#else
+# define cpu_to_le64(x) ((__u64)(x))
+# define le64_to_cpu(x) ((__u64)(x))
+# define cpu_to_le32(x) ((__u32)(x))
+# define le32_to_cpu(x) ((__u32)(x))
+# define cpu_to_le16(x) ((__u16)(x))
+# define le16_to_cpu(x) ((__u16)(x))
+#endif
+
+#endif
index 7c4c645e61c6d8cf7208695de37fc4b43b351436..0b187fee0d8a34b3b310c75e07726feda161326f 100644 (file)
@@ -8,10 +8,12 @@
 
 #ifdef __KERNEL__
 # include <linux/in.h>
+# include <linux/types.h>
 #else
 # include <netinet/in.h>
+# include "inttypes.h"
+# include "byteorder.h"
 #endif
-#include <linux/types.h>
 
 #define CEPH_MON_PORT 2138
 
diff --git a/src/include/inttypes.h b/src/include/inttypes.h
new file mode 100644 (file)
index 0000000..c914710
--- /dev/null
@@ -0,0 +1,15 @@
+#ifndef _CEPH_INTTYPES_H
+#define _CEPH_INTTYPES_H
+
+#include <stdint.h>
+
+typedef uint64_t __u64;
+typedef int64_t __s64;
+typedef uint32_t __u32;
+typedef int32_t __s32;
+typedef uint16_t __u16;
+typedef int16_t __s16;
+typedef uint8_t __u8;
+typedef int8_t __s8;
+
+#endif
diff --git a/src/include/page.h b/src/include/page.h
new file mode 100644 (file)
index 0000000..baadcf1
--- /dev/null
@@ -0,0 +1,19 @@
+#ifndef __CEPH_PAGE_H
+#define __CEPH_PAGE_H
+
+// these are in config.cc
+extern unsigned _page_size;
+extern unsigned long _page_mask;
+extern unsigned _page_shift;
+
+#define PAGE_SIZE _page_size
+#define PAGE_MASK _page_mask
+#define PAGE_SHIFT _page_shift
+
+/*
+#define PAGE_SIZE 4096
+#define PAGE_MASK (~(4095))
+#define PAGE_SHIFT 12
+*/
+
+#endif
index 020a5e7e52d21006365351617cedb662bdf1b77b..914fc1d744f29fa28c0ce57895a336f1436b844c 100644 (file)
@@ -15,6 +15,8 @@
 #ifndef __MDS_TYPES_H
 #define __MDS_TYPES_H
 
+#include "ceph_fs.h"
+
 extern "C" {
 #include <stdint.h>
 #include <sys/types.h>
@@ -36,7 +38,6 @@ using namespace std;
 #include <ext/hash_map>
 using namespace __gnu_cxx;
 
-#include "ceph_fs.h"
 
 
 #include "object.h"