-dnl #
-dnl # 2.6.24 API change,
-dnl # check if atomic64_cmpxchg is defined
-dnl #
-AC_DEFUN([SPL_AC_TYPE_ATOMIC64_CMPXCHG],
- [AC_MSG_CHECKING([whether kernel defines atomic64_cmpxchg])
- SPL_LINUX_TRY_COMPILE([
- #include <asm/atomic.h>
- #include <asm/system.h>
- ],[
- atomic64_cmpxchg((atomic64_t *)NULL, 0, 0);
- ],[
- AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_ATOMIC64_CMPXCHG, 1,
- [kernel defines atomic64_cmpxchg])
- ],[
- AC_MSG_RESULT([no])
- ])
-])
-
-dnl #
-dnl # 2.6.24 API change,
-dnl # check if atomic64_xchg is defined
-dnl #
-AC_DEFUN([SPL_AC_TYPE_ATOMIC64_XCHG],
- [AC_MSG_CHECKING([whether kernel defines atomic64_xchg])
- SPL_LINUX_TRY_COMPILE([
- #include <asm/atomic.h>
- ],[
- atomic64_xchg((atomic64_t *)NULL, 0);
- ],[
- AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_ATOMIC64_XCHG, 1,
- [kernel defines atomic64_xchg])
- ],[
- AC_MSG_RESULT([no])
- ])
-])
-
-dnl #
-dnl # 2.6.24 API change,
-dnl # check if uintptr_t typedef is defined
-dnl #
-AC_DEFUN([SPL_AC_TYPE_UINTPTR_T],
- [AC_MSG_CHECKING([whether kernel defines uintptr_t])
- SPL_LINUX_TRY_COMPILE([
- #include <linux/types.h>
- ],[
- uintptr_t *ptr __attribute__ ((unused));
- ],[
- AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_UINTPTR_T, 1,
- [kernel defines uintptr_t])
- ],[
- AC_MSG_RESULT([no])
- ])
-])
-
-dnl #
-dnl # 2.6.20 API change,
-dnl # INIT_WORK use 2 args and not store data inside
-dnl #
-AC_DEFUN([SPL_AC_3ARGS_INIT_WORK],
- [AC_MSG_CHECKING([whether INIT_WORK wants 3 args])
- SPL_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 wants 3 args])
- ],[
- AC_MSG_RESULT(no)
- ])
-])
-
-dnl #
-dnl # 2.6.21 API change,
-dnl # 'register_sysctl_table' use only one argument instead of two
-dnl #
-AC_DEFUN([SPL_AC_2ARGS_REGISTER_SYSCTL],
- [AC_MSG_CHECKING([whether register_sysctl_table() wants 2 args])
- SPL_LINUX_TRY_COMPILE([
- #include <linux/sysctl.h>
- ],[
- (void) register_sysctl_table(NULL, 0);
- ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_2ARGS_REGISTER_SYSCTL, 1,
- [register_sysctl_table() wants 2 args])
- ],[
- AC_MSG_RESULT(no)
- ])
-])
-
-dnl #
-dnl # 2.6.23 API change
-dnl # Old set_shrinker API replaced with register_shrinker
-dnl #
-AC_DEFUN([SPL_AC_SET_SHRINKER], [
- AC_MSG_CHECKING([whether set_shrinker() available])
- SPL_LINUX_TRY_COMPILE([
- #include <linux/mm.h>
- ],[
- return set_shrinker(DEFAULT_SEEKS, NULL);
- ],[
- AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_SET_SHRINKER, 1,
- [set_shrinker() available])
- ],[
- AC_MSG_RESULT([no])
- ])
-])
-
-dnl #
-dnl # 2.6.35 API change,
-dnl # Add context to shrinker callback
-dnl #
-AC_DEFUN([SPL_AC_3ARGS_SHRINKER_CALLBACK],
- [AC_MSG_CHECKING([whether shrinker callback wants 3 args])