-AC_DEFUN([LIBCFS_DIGEST_SETKEY_FLAGS],
-[AC_MSG_CHECKING([if kernel dia_setkey takes 4 args])
-LB_LINUX_TRY_COMPILE([
- #include <linux/err.h>
- #include <linux/crypto.h>
-],[
- struct digest_alg alg;
-
- alg.dia_setkey(NULL, NULL, 0, NULL);
-],[
- AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_DIGEST_SETKEY_FLAGS, 1, [kernel dia_setkey takes 4 args])
-],[
- AC_MSG_RESULT([no])
-])
-])
-
-# 2.6.19 API changes
-# kmem_cache_destroy(cachep) return void instead of
-# int
-AC_DEFUN([LIBCFS_KMEM_CACHE_DESTROY_INT],
-[AC_MSG_CHECKING([kmem_cache_destroy(cachep) return int])
-LB_LINUX_TRY_COMPILE([
- #include <linux/slab.h>
-],[
- int i __attribute__ ((unused));
- i = kmem_cache_destroy(NULL);
-],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_KMEM_CACHE_DESTROY_INT, 1,
- [kmem_cache_destroy(cachep) return int])
-],[
- AC_MSG_RESULT(NO)
-])
-])
-
-# check cpumask_size (2.6.28)
-AC_DEFUN([LIBCFS_CPUMASK_SIZE],
-[AC_MSG_CHECKING([whether have cpumask_size()])
-LB_LINUX_TRY_COMPILE([
- #include <linux/cpumask.h>
-],[
- int size = cpumask_size();
-],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_CPUMASK_SIZE, 1, [have cpumask_size()])
-],[
- AC_MSG_RESULT(NO)
-])
-])
-
-# check cpu topology functions
-#
-# topology_core_cpumask (2.6.29, not on all archs)
-# topology_core_siblings (not on all archs)
-# topology_thread_cpumask (2.6.29, not on all archs)
-# topology_thread_siblings (not on all archs)
-# cpumask_of_node/node_to_cpumask (not always exported)
-AC_DEFUN([LIBCFS_CPU_TOPOLOGY],
-[AC_MSG_CHECKING([whether have topology.h])
-LB_LINUX_TRY_COMPILE([
- #include <linux/topology.h>
-],[],[
- AC_DEFINE(HAVE_CPU_TOPOLOGY, 1, [have CPU topology])
- AC_MSG_RESULT(yes)
-
- AC_MSG_CHECKING([whether have topology_core_cpumask])
- LB_LINUX_TRY_COMPILE([
- #include <linux/topology.h>
- ],[
- cpumask_t *mask = topology_core_cpumask(0);
- ],[
- AC_DEFINE(HAVE_TOPOLOGY_CORE_CPUMASK, 1,
- [have topology_core_cpumask])
- AC_MSG_RESULT(yes)
- ],[
- AC_MSG_RESULT(no)
- ])
-
- AC_MSG_CHECKING([whether have topology_core_siblings])
- LB_LINUX_TRY_COMPILE([
- #include <linux/topology.h>
- ],[
- cpumask_t mask = topology_core_siblings(0);
- ],[
- AC_DEFINE(HAVE_TOPOLOGY_CORE_SIBLINGS, 1,
- [have topology_core_siblings])
- AC_MSG_RESULT(yes)
- ],[
- AC_MSG_RESULT(no)
- ])
-
- AC_MSG_CHECKING([whether have topology_thread_cpumask])
- LB_LINUX_TRY_COMPILE([
- #include <linux/topology.h>
- ],[
- cpumask_t *mask = topology_thread_cpumask(0);
- ],[
- AC_DEFINE(HAVE_TOPOLOGY_THREAD_CPUMASK, 1,
- [have topology_thread_cpumask])
- AC_MSG_RESULT(yes)
- ],[
- AC_MSG_RESULT(no)
- ])
-
- AC_MSG_CHECKING([whether have topology_thread_siblings])
- LB_LINUX_TRY_COMPILE([
- #include <linux/topology.h>
- ],[
- cpumask_t mask = topology_thread_siblings(0);
- ],[
- AC_DEFINE(HAVE_TOPOLOGY_THREAD_SIBLINGS, 1,
- [have topology_thread_siblings])
- AC_MSG_RESULT(yes)
- ],[
- AC_MSG_RESULT(no)
- ])
-
- AC_MSG_CHECKING([whether OFED backports have cpumask_of_node])
- # Some OFED has cpumask_of_node backports defined in
- # its private include/linux/cpumask.h. However, it is
- # defined conflictingly with kernel's cpumask_of_node.
- if test -f $OFED_BACKPORT_PATH/linux/cpumask.h; then
- grep -q cpumask_of_node $OFED_BACKPORT_PATH/linux/cpumask.h 2>/dev/null
- rc=$?
- if test $rc -eq 0; then
- AC_DEFINE(HAVE_OFED_CPUMASK_OF_NODE, 1, [have cpumask_of_node])
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- fi
-
- AC_MSG_CHECKING([whether have cpumask_of_node])
- LB_LINUX_TRY_COMPILE([
- #include <linux/topology.h>
- ],[
- cpumask_t *mask = cpumask_of_node(0);
- ],[
- AC_DEFINE(HAVE_CPUMASK_OF_NODE, 1, [have cpumask_of_node])
- AC_MSG_RESULT(yes)
- ],[
- AC_MSG_RESULT(no)
- ])
-
- AC_MSG_CHECKING([whether have cpumask_copy])
- LB_LINUX_TRY_COMPILE([
- #include <linux/cpumask.h>
- ],[
- cpumask_copy(NULL, NULL);
- ],[
- AC_DEFINE(HAVE_CPUMASK_COPY, 1, [have cpumask_copy])
- AC_MSG_RESULT(yes)
- ],[
- AC_MSG_RESULT(no)
- ])
-
- AC_MSG_CHECKING([whether have node_to_cpumask])
- LB_LINUX_TRY_COMPILE([
- #include <linux/topology.h>
- ],[
- cpumask_t mask = node_to_cpumask(0);
- ],[
- AC_DEFINE(HAVE_NODE_TO_CPUMASK, 1, [have node_to_cpumask])
- AC_MSG_RESULT(yes)
- ],[
- AC_MSG_RESULT(no)
- ])
-],[
- AC_MSG_RESULT(NO)
-])
-])
-
-
-# 2.6.20 API change INIT_WORK use 2 args and not
-# store data inside
-AC_DEFUN([LIBCFS_3ARGS_INIT_WORK],
-[AC_MSG_CHECKING([check INIT_WORK want 3 args])
-LB_LINUX_TRY_COMPILE([
- #include <linux/workqueue.h>
-],[
- struct work_struct work __attribute__ ((unused));
-
- INIT_WORK(&work, NULL, NULL);
-],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_3ARGS_INIT_WORK, 1,
- [INIT_WORK use 3 args and store data inside])
-],[
- AC_MSG_RESULT(NO)
-])
-])
-
-# 2.6.21 api change. 'register_sysctl_table' use only one argument,
-# instead of more old which need two.
-AC_DEFUN([LIBCFS_2ARGS_REGISTER_SYSCTL],
-[AC_MSG_CHECKING([check register_sysctl_table want 2 args])
-LB_LINUX_TRY_COMPILE([
- #include <linux/sysctl.h>
-],[
- register_sysctl_table(NULL,0);
-],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_2ARGS_REGISTER_SYSCTL, 1,
- [register_sysctl_table want 2 args])
-],[
- AC_MSG_RESULT(NO)
-])
-])
-
-# 2.6.23 lost dtor argument
-AC_DEFUN([LIBCFS_KMEM_CACHE_CREATE_DTOR],
-[AC_MSG_CHECKING([check kmem_cache_create has dtor argument])
-LB_LINUX_TRY_COMPILE([
- #include <linux/slab.h>
-],[
- kmem_cache_create(NULL, 0, 0, 0, NULL, NULL);
-],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_KMEM_CACHE_CREATE_DTOR, 1,
- [kmem_cache_create has dtor argument])
-],[
- AC_MSG_RESULT(NO)
-])
-])
-
-#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 request not use real numbers for ctl_name
-AC_DEFUN([LIBCFS_SYSCTL_UNNUMBERED],
-[AC_MSG_CHECKING([for CTL_UNNUMBERED])
-LB_LINUX_TRY_COMPILE([
- #include <linux/sysctl.h>
-],[
- #ifndef CTL_UNNUMBERED
- #error CTL_UNNUMBERED not exist in kernel
- #endif
-],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_SYSCTL_UNNUMBERED, 1,
- [sysctl has CTL_UNNUMBERED])
-],[
- AC_MSG_RESULT(NO)
-])
-])
-
-# 2.6.24 lost scatterlist->page
-AC_DEFUN([LIBCFS_SCATTERLIST_SETPAGE],
-[AC_MSG_CHECKING([for exist sg_set_page])
-LB_LINUX_TRY_COMPILE([
- #include <asm/types.h>
- #include <linux/scatterlist.h>
-],[
- sg_set_page(NULL,NULL,0,0);
-],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_SCATTERLIST_SETPAGE, 1,
- [struct scatterlist has no page member])
-],[
- AC_MSG_RESULT(NO)
-])
-])
-
-# 2.6.24-rc1 sg_init_table
-AC_DEFUN([LIBCFS_SCATTERLIST_INITTABLE],
-[AC_MSG_CHECKING([for sg_init_table])
-LB_LINUX_TRY_COMPILE([
- #include <asm/types.h>
- #include <linux/scatterlist.h>
-],[
- sg_init_table(NULL,0);
-],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_SCATTERLIST_INITTABLE, 1,
- [scatterlist has sg_init_table])
-],[
- AC_MSG_RESULT(NO)
-])
-])
-
-# 2.6.24
-AC_DEFUN([LIBCFS_NETWORK_NAMESPACE],
-[AC_MSG_CHECKING([for network stack has namespaces])
-LB_LINUX_TRY_COMPILE([
- #include <net/net_namespace.h>
-],[
- struct net *net __attribute__ ((unused));
- net = &init_net;