Whamcloud - gitweb
Branch HEAD
[fs/lustre-release.git] / lnet / include / libcfs / user-prim.h
index 54f7832..d182041 100644 (file)
 #include <libcfs/user-time.h>
 #include <signal.h>
 #include <stdlib.h>
+#include <unistd.h>
+
+#ifndef PAGE_SIZE
+
+#define PAGE_SIZE (getpagesize())
+static __inline__ int getpageshift()
+{
+        int pagesize = getpagesize();
+#if (__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))
+        /* unsigned int is 32 bits on all our architectures */
+        return (__builtin_clz(pagesize) ^ 31);
+#else
+        register int pageshift = -1;
+        while (pagesize) { pagesize >>= 1; pageshift++; }
+        return pageshift;
+#endif
+}
+
+#undef  PAGE_MASK
+#define PAGE_MASK  (~(PAGE_SIZE-1))
+#undef  PAGE_SHIFT
+#define PAGE_SHIFT (getpageshift())
+
+#endif
 
 /*
  * Wait Queue. No-op implementation.