Wider endianness support
authorJens Axboe <axboe@kernel.dk>
Tue, 4 Oct 2011 12:30:33 +0000 (14:30 +0200)
committerJens Axboe <axboe@kernel.dk>
Tue, 4 Oct 2011 12:30:33 +0000 (14:30 +0200)
Signed-off-by: Jens Axboe <axboe@kernel.dk>
os/os-linux.h
os/os-mac.h
server.h

index 8d3b97e..2599091 100644 (file)
@@ -295,6 +295,10 @@ static inline int fio_lookup_raw(dev_t dev, int *majdev, int *mindev)
 #error "Unknown endianness"
 #endif
 
+#define fio_swap16(x)  __bswap_16(x)
+#define fio_swap32(x)  __bswap_32(x)
+#define fio_swap64(x)  __bswap_64(x)
+
 #define CACHE_LINE_FILE        \
        "/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size"
 
index eb55cd7..24e0eb5 100644 (file)
@@ -9,6 +9,8 @@
 #include <unistd.h>
 #include <signal.h>
 #include <mach/mach_init.h>
+#include <machine/endian.h>
+#include <libkern/OSByteOrder.h>
 
 #include "../file.h"
 
 
 #define OS_MAP_ANON            MAP_ANON
 
+#if defined(__LITTLE_ENDIAN__)
+#define FIO_LITTLE_ENDIAN
+#elif defined(__BIG_ENDIAN__)
+#define FIO_BIG_ENDIAN
+#else
+#error "Undefined byte order"
+#endif
+
+#define fio_swap16(x)  OSSwapInt16(x)
+#define fio_swap32(x)  OSSwapInt32(x)
+#define fio_swap64(x)  OSSwapInt64(x)
+
 /*
  * OSX has a pitifully small shared memory segment by default,
  * so default to a lower number of max jobs supported
index 3bb96a2..e129ffd 100644 (file)
--- a/server.h
+++ b/server.h
@@ -104,12 +104,12 @@ extern int fio_net_port;
 #define __cpu_to_le32(x)               (x)
 #define __cpu_to_le64(x)               (x)
 #else
-#define __le16_to_cpu(x)               __bswap_16(x)
-#define __le32_to_cpu(x)               __bswap_32(x)
-#define __le64_to_cpu(x)               __bswap_64(x)
-#define __cpu_to_le16(x)               __bswap_16(x)
-#define __cpu_to_le32(x)               __bswap_32(x)
-#define __cpu_to_le64(x)               __bswap_64(x)
+#define __le16_to_cpu(x)               fio_swap16(x)
+#define __le32_to_cpu(x)               fio_swap_2(x)
+#define __le64_to_cpu(x)               fio_swap64(x)
+#define __cpu_to_le16(x)               fio_swap16(x)
+#define __cpu_to_le32(x)               fio_swap32(x)
+#define __cpu_to_le64(x)               fio_swap64(x)
 #endif
 
 #define le16_to_cpu(val) ({                    \