Whamcloud - gitweb
Branch HEAD
authoryangsheng <yangsheng>
Wed, 17 Dec 2008 05:03:18 +0000 (05:03 +0000)
committeryangsheng <yangsheng>
Wed, 17 Dec 2008 05:03:18 +0000 (05:03 +0000)
b=17459
i=adilger, bobijam

Make change to ext2_* api for BIG-ENDIAN environment.

lustre/include/liblustre.h

index 09bf725..d758fb1 100644 (file)
@@ -86,17 +86,30 @@ void *inter_module_get(char *arg);
 
 static __inline__ int ext2_set_bit(int nr, void *addr)
 {
+#ifdef __BIG_ENDIAN
+        return set_bit((nr ^ ((BITS_PER_LONG-1) & ~0x7)), addr);
+#else
         return set_bit(nr, addr);
+#endif
 }
 
 static __inline__ int ext2_clear_bit(int nr, void *addr)
 {
+#ifdef __BIG_ENDIAN
+        return clear_bit((nr ^ ((BITS_PER_LONG-1) & ~0x7)), addr);
+#else
         return clear_bit(nr, addr);
+#endif
 }
 
 static __inline__ int ext2_test_bit(int nr, void *addr)
 {
+#ifdef __BIG_ENDIAN
+        __const__ unsigned char *tmp = (__const__ unsigned char *) addr;
+        return (tmp[nr >> 3] >> (nr & 7)) & 1;
+#else
         return test_bit(nr, addr);
+#endif
 }