Whamcloud - gitweb
b=20339
[fs/lustre-release.git] / libcfs / autoconf / lustre-libcfs.m4
index e536a79..601ccb7 100644 (file)
@@ -169,7 +169,7 @@ AC_DEFINE(HAVE_SHOW_TASK, 1, [show_task is exported])
 ])
 ])
 
-# check userland __u64 type
+# check userland & kernel __u64 type
 AC_DEFUN([LIBCFS_U64_LONG_LONG],
 [AC_MSG_CHECKING([u64 is long long type])
 tmp_flags="$CFLAGS"
@@ -185,12 +185,31 @@ AC_COMPILE_IFELSE([
        }
 ],[
        AC_MSG_RESULT([yes])
-        AC_DEFINE(HAVE_U64_LONG_LONG, 1,
+        AC_DEFINE(HAVE_USER__U64_LONG_LONG, 1,
                   [__u64 is long long type])
 ],[
        AC_MSG_RESULT([no])
 ])
 CFLAGS="$tmp_flags"
+AC_MSG_CHECKING([kernel __u64 is long long type])
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="$EXTRA_KCFLAGS -Werror"
+LB_LINUX_TRY_COMPILE([
+       #include <linux/types.h>
+       #include <linux/stddef.h>
+],[
+       unsigned long long *data1;
+       __u64 *data2 = NULL;
+               
+       data1 = data2;
+],[
+       AC_MSG_RESULT([yes])
+        AC_DEFINE(HAVE_KERN__U64_LONG_LONG, 1,
+                  [kernel __u64 is long long type])
+],[
+       AC_MSG_RESULT([no])
+])
+EXTRA_KCFLAGS="$tmp_flags"
 ])
 
 # check userland size_t type
@@ -241,6 +260,24 @@ CFLAGS="$tmp_flags"
 ])
 
 
+# check if task_struct with rcu memeber
+AC_DEFUN([LIBCFS_TASK_RCU],
+[AC_MSG_CHECKING([if task_struct has a rcu field])
+LB_LINUX_TRY_COMPILE([
+       #include <linux/sched.h>
+],[
+        struct task_struct tsk;
+
+        tsk.rcu.next = NULL;
+],[
+        AC_MSG_RESULT([yes])
+        AC_DEFINE(HAVE_TASK_RCU, 1,
+                  [task_struct has rcu field])
+],[
+        AC_MSG_RESULT([no])
+])
+])
+
 # LIBCFS_TASKLIST_LOCK
 # 2.6.18 remove tasklist_lock export
 AC_DEFUN([LIBCFS_TASKLIST_LOCK],
@@ -415,7 +452,6 @@ LB_LINUX_TRY_COMPILE([
 ])
 ])
 
-
 #
 # LIBCFS_PROG_LINUX
 #
@@ -434,6 +470,7 @@ LIBCFS_FUNC_SHOW_TASK
 LIBCFS_U64_LONG_LONG
 LIBCFS_SSIZE_T_LONG
 LIBCFS_SIZE_T_LONG
+LIBCFS_TASK_RCU
 # 2.6.18
 LIBCFS_TASKLIST_LOCK
 # 2.6.19
@@ -491,6 +528,21 @@ AC_CHECK_TYPE([spinlock_t],
 # lnet/utils/wirecheck.c
 AC_CHECK_FUNCS([strnlen])
 
+AC_CHECK_TYPE([umode_t],
+       [AC_DEFINE(HAVE_UMODE_T, 1, [umode_t is defined])],
+       [],
+       [#include <asm/types.h>])
+
+AC_CHECK_TYPE([__u64],
+       [AC_DEFINE(HAVE___U64, 1, [__u64 is defined])],
+       [],
+       [#include <asm/types.h>])
+
+AC_CHECK_TYPE([__s64],
+       [AC_DEFINE(HAVE___S64, 1, [__s64 is defined])],
+       [],
+       [#include <asm/types.h>])
+
 # --------  Check for required packages  --------------
 
 
@@ -565,6 +617,7 @@ libcfs/include/libcfs/util/Makefile
 libcfs/libcfs/Makefile
 libcfs/libcfs/autoMakefile
 libcfs/libcfs/linux/Makefile
+libcfs/libcfs/ulinux/Makefile
 libcfs/libcfs/posix/Makefile
 libcfs/libcfs/util/Makefile
 ])