Whamcloud - gitweb
LU-299 Initialize struct shrinker variable in test
[fs/lustre-release.git] / libcfs / autoconf / lustre-libcfs.m4
index ac57060..af8418a 100644 (file)
@@ -107,6 +107,10 @@ AC_DEFUN([LIBCFS_FUNC_SHOW_TASK],
 [kernel/ksyms.c kernel/sched.c],[
 AC_DEFINE(HAVE_SHOW_TASK, 1, [show_task is exported])
 ],[
+        LB_CHECK_SYMBOL_EXPORT([sched_show_task],
+        [kernel/ksyms.c kernel/sched.c],[
+        AC_DEFINE(HAVE_SCHED_SHOW_TASK, 1, [sched_show_task is exported])
+        ],[])
 ])
 ])
 
@@ -320,6 +324,22 @@ LB_LINUX_TRY_COMPILE([
 ])
 ])
 
+#2.6.23 has new shrinker API
+AC_DEFUN([LC_REGISTER_SHRINKER],
+[AC_MSG_CHECKING([if kernel has register_shrinker])
+LB_LINUX_TRY_COMPILE([
+        #include <linux/mm.h>
+],[
+        register_shrinker(NULL);
+], [
+        AC_MSG_RESULT([yes])
+        AC_DEFINE(HAVE_REGISTER_SHRINKER, 1,
+                [kernel has register_shrinker])
+],[
+        AC_MSG_RESULT([no])
+])
+])
+
 # 2.6.24 
 AC_DEFUN([LIBCFS_NETLINK_CBMUTEX],
 [AC_MSG_CHECKING([for mutex in netlink_kernel_create])
@@ -442,7 +462,7 @@ LB_LINUX_TRY_COMPILE([
 #
 AC_DEFUN([LIBCFS_FUNC_DUMP_TRACE],
 [LB_CHECK_SYMBOL_EXPORT([dump_trace],
-[kernel/ksyms.c arch/${LINUX_ARCH%_64}/kernel/traps_64.c],[
+[kernel/ksyms.c arch/${LINUX_ARCH%_64}/kernel/traps_64.c arch/x86/kernel/dumpstack_32.c arch/x86/kernel/dumpstack_64.c],[
        tmp_flags="$EXTRA_KCFLAGS"
        EXTRA_KCFLAGS="-Werror"
        AC_MSG_CHECKING([whether we can really use dump_trace])
@@ -628,6 +648,46 @@ LB_LINUX_TRY_COMPILE([
 ])
 
 #
+# LIBCFS_ADD_WAIT_QUEUE_EXCLUSIVE
+#
+# 2.6.34 adds __add_wait_queue_exclusive
+#
+AC_DEFUN([LIBCFS_ADD_WAIT_QUEUE_EXCLUSIVE],
+[AC_MSG_CHECKING([if __add_wait_queue_exclusive exists])
+LB_LINUX_TRY_COMPILE([
+        #include <linux/wait.h>
+],[
+        wait_queue_head_t queue;
+        wait_queue_t      wait;
+
+        __add_wait_queue_exclusive(&queue, &wait);
+],[
+        AC_MSG_RESULT(yes)
+        AC_DEFINE(HAVE___ADD_WAIT_QUEUE_EXCLUSIVE, 1,
+                  [__add_wait_queue_exclusive exists])
+],[
+        AC_MSG_RESULT(no)
+])
+])
+
+# RHEL6/2.6.32 want to have pointer to shrinker self pointer in handler function
+AC_DEFUN([LC_SHRINKER_WANT_SHRINK_PTR],
+[AC_MSG_CHECKING([shrinker want self pointer in handler])
+LB_LINUX_TRY_COMPILE([
+        #include <linux/mm.h>
+],[
+        struct shrinker tmp = {0};
+        tmp.shrink(NULL, 0, 0);
+],[
+        AC_MSG_RESULT(yes)
+        AC_DEFINE(HAVE_SHRINKER_WANT_SHRINK_PTR, 1,
+                  [shrinker want self pointer in handler])
+],[
+        AC_MSG_RESULT(no)
+])
+])
+
+#
 # LIBCFS_PROG_LINUX
 #
 # LNet linux kernel checks
@@ -657,6 +717,7 @@ LIBCFS_KMEM_CACHE
 # 2.6.23
 LIBCFS_KMEM_CACHE_CREATE_DTOR
 LIBCFS_NETLINK_CBMUTEX
+LC_REGISTER_SHRINKER
 # 2.6.24
 LIBCFS_SYSCTL_UNNUMBERED
 LIBCFS_SCATTERLIST_SETPAGE
@@ -675,6 +736,9 @@ LIBCFS_FUNC_UNSHARE_FS_STRUCT
 LIBCFS_SOCK_MAP_FD_2ARG
 # 2.6.32
 LIBCFS_STACKTRACE_OPS_HAVE_WALK_STACK
+LC_SHRINKER_WANT_SHRINK_PTR
+# 2.6.34
+LIBCFS_ADD_WAIT_QUEUE_EXCLUSIVE
 ])
 
 #