]) # LIBCFS_STACKTRACE_WARNING
#
+# LIBCFS_REINIT_COMPLETION
+#
+AC_DEFUN([LIBCFS_REINIT_COMPLETION], [
+LB_CHECK_COMPILE([if 'reinit_completion' exists],
+reinit_completion, [
+ #include <linux/completion.h>
+],[
+ struct completion x;
+ reinit_completion(&x);
+],[
+ AC_DEFINE(HAVE_REINIT_COMPLETION, 1,
+ [reinit_completion is exist])
+])
+]) # LIBCFS_REINIT_COMPLETION
+
+#
# LC_SHRINKER_WANT_SHRINK_PTR
#
# RHEL6/2.6.32 want to have pointer to shrinker self pointer in handler function
]) # LIBCFS_KTIME_TO_TIMESPEC64
#
+# Kernel version 3.17 introduced timespec64_sub
+#
+AC_DEFUN([LIBCFS_TIMESPEC64_SUB],[
+LB_CHECK_COMPILE([does function 'timespec64_sub' exist],
+timespec64_sub, [
+ #include <linux/time.h>
+],[
+ struct timespec64 later,earlier,diff;
+
+ diff = timespec64_sub(later, earlier);
+],[
+ AC_DEFINE(HAVE_TIMESPEC64_SUB, 1,
+ ['timespec64_sub' is available])
+])
+]) # LIBCFS_TIMESPEC64_SUB
+
+#
+# Kernel version 3.17 introduced timespec64_to_ktime
+#
+AC_DEFUN([LIBCFS_TIMESPEC64_TO_KTIME],[
+LB_CHECK_COMPILE([does function 'timespec64_to_ktime' exist],
+timespec64_to_ktime, [
+ #include <linux/ktime.h>
+],[
+ struct timespec64 ts;
+ ktime_t now;
+
+ now = timespec64_to_ktime(ts);
+],[
+ AC_DEFINE(HAVE_TIMESPEC64_TO_KTIME, 1,
+ ['timespec64_to_ktime' is available])
+])
+]) # LIBCFS_TIMESPEC64_TO_KTIME
+
+#
# Kernel version 3.19 introduced ktime_get_seconds
#
AC_DEFUN([LIBCFS_KTIME_GET_SECONDS],[
]) # LIBCFS_KTIME_GET_SECONDS
#
+# Kernel version 3.19 commit 5aaba36318e5995e8c95d077a46d9a4d00fcc1cd
+# This patch creates a new helper function cpumap_print_to_pagebuf in
+# cpumask.h using newly added bitmap_print_to_pagebuf and consolidates
+# most of those sysfs functions using the new helper function.
+#
+AC_DEFUN([LIBCFS_HAVE_CPUMASK_PRINT_TO_PAGEBUF],[
+LB_CHECK_COMPILE([does function 'cpumap_print_to_pagebuf' exist],
+cpumap_print_to_pagebuf, [
+ #include <linux/topology.h>
+],[
+ int n;
+ char *buf = NULL;
+ const struct cpumask *mask = NULL;
+ n = cpumap_print_to_pagebuf(true, buf, mask);
+],[
+ AC_DEFINE(HAVE_CPUMASK_PRINT_TO_PAGEBUF, 1,
+ [cpumap_print_to_pagebuf is available])
+])
+]) # LIBCFS_HAVE_CPUMASK_PRINT_TO_PAGEBUF
+
+#
# Kernel version 4.2 changed topology_thread_cpumask
# to topology_sibling_cpumask
#
]) # LIBCFS_GET_USER_PAGES_GUP_FLAGS
#
+# Kernel version 4.10 commit 7b737965b33188bd3dbb44e938535c4006d97fbb
+# libcfs: Convert to hotplug state machine
+#
+AC_DEFUN([LIBCFS_HOTPLUG_STATE_MACHINE], [
+LB_CHECK_COMPILE([if libcfs supports CPU hotplug state machine],
+cpu_hotplug_state_machine, [
+ #include <linux/cpuhotplug.h>
+],[
+ cpuhp_remove_state(CPUHP_LUSTRE_CFS_DEAD);
+],[
+ AC_DEFINE(HAVE_HOTPLUG_STATE_MACHINE, 1,
+ [hotplug state machine is supported])
+])
+]) # LIBCFS_HOTPLUG_STATE_MACHINE
+
+#
+# LIBCFS_SCHED_HEADERS
+#
+# 4.11 has broken up sched.h into more headers.
+#
+AC_DEFUN([LIBCFS_SCHED_HEADERS], [
+LB_CHECK_LINUX_HEADER([linux/sched/signal.h], [
+ AC_DEFINE(HAVE_SCHED_HEADERS, 1,
+ [linux/sched header directory exist])])
+]) # LIBCFS_SCHED_HEADERS
+
+#
# LIBCFS_PROG_LINUX
#
# LibCFS linux kernel checks
LC_SHRINK_CONTROL
# 3.0
LIBCFS_STACKTRACE_WARNING
+LIBCFS_REINIT_COMPLETION
# 3.5
LIBCFS_PROCESS_NAMESPACE
LIBCFS_I_UID_READ
LIBCFS_KTIME_GET_REAL_SECONDS
LIBCFS_KTIME_GET_REAL_NS
LIBCFS_KTIME_TO_TIMESPEC64
+LIBCFS_TIMESPEC64_SUB
+LIBCFS_TIMESPEC64_TO_KTIME
# 3.19
LIBCFS_KTIME_GET_SECONDS
+LIBCFS_HAVE_CPUMASK_PRINT_TO_PAGEBUF
# 4.2
LIBCFS_HAVE_TOPOLOGY_SIBLING_CPUMASK
LIBCFS_FPU_API
LIBCFS_STACKTRACE_OPS
# 4.9
LIBCFS_GET_USER_PAGES_GUP_FLAGS
+# 4.10
+LIBCFS_HOTPLUG_STATE_MACHINE
+# 4.11
+LIBCFS_SCHED_HEADERS
]) # LIBCFS_PROG_LINUX
#