X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=libcfs%2Fautoconf%2Flustre-libcfs.m4;h=1e6f326b40d11b30de2db5f0beff0e2ce1659424;hb=fb9a8a991f5c9e8649053e86b3147a99aaee9f84;hp=95b25c02d13e1173dcc01aef8bfc1178046210ca;hpb=07ff616a18cc602460724e6693e142782cad0fcc;p=fs%2Flustre-release.git diff --git a/libcfs/autoconf/lustre-libcfs.m4 b/libcfs/autoconf/lustre-libcfs.m4 index 95b25c0..1e6f326 100644 --- a/libcfs/autoconf/lustre-libcfs.m4 +++ b/libcfs/autoconf/lustre-libcfs.m4 @@ -85,6 +85,22 @@ stacktrace_ops_warning, [ ]) # LIBCFS_STACKTRACE_WARNING # +# LIBCFS_REINIT_COMPLETION +# +AC_DEFUN([LIBCFS_REINIT_COMPLETION], [ +LB_CHECK_COMPILE([if 'reinit_completion' exists], +reinit_completion, [ + #include +],[ + 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 @@ -279,6 +295,41 @@ ktime_get_ts64, [ ]) # LIBCFS_KTIME_GET_TS64 # +# Kernel version 3.12 introduced ktime_add +# +AC_DEFUN([LIBCFS_KTIME_ADD],[ +LB_CHECK_COMPILE([does function 'ktime_add' exist], +ktime_add, [ + #include +],[ + ktime_t start = ktime_set(0, 0); + ktime_t end = start; + ktime_t total; + + total = ktime_add(start, end); +],[ + AC_DEFINE(HAVE_KTIME_ADD, 1, + [ktime_add is available]) +]) +]) # LIBCFS_KTIME_ADD + +# +# Kernel version 3.12 introduced ktime_after +# +AC_DEFUN([LIBCFS_KTIME_AFTER],[ +LB_CHECK_COMPILE([does function 'ktime_after' exist], +ktime_after, [ + #include +],[ + ktime_t start = ktime_set(0, 0); + ktime_t end = start; + + ktime_after(start, end); +],[ + AC_DEFINE(HAVE_KTIME_AFTER, 1, + [ktime_after is available]) +]) +]) # LIBCFS_KTIME_AFTER # # FC19 3.12 kernel struct shrinker change @@ -365,6 +416,76 @@ ktime_get_real_seconds, [ ]) # LIBCFS_KTIME_GET_REAL_SECONDS # +# Kernel version 3.17 created ktime_get_real_ns wrapper +# +AC_DEFUN([LIBCFS_KTIME_GET_REAL_NS],[ +LB_CHECK_COMPILE([does function 'ktime_get_real_ns' exist], +ktime_get_real_ns, [ + #include +],[ + u64 nanoseconds; + + nanoseconds = ktime_get_real_ns(); +],[],[ + AC_DEFINE(NEED_KTIME_GET_REAL_NS, 1, + ['ktime_get_real_ns' is not available]) +]) +]) # LIBCFS_KTIME_GET_REAL_NS + +# +# Kernel version 3.17 introduced ktime_to_timespec64 +# +AC_DEFUN([LIBCFS_KTIME_TO_TIMESPEC64],[ +LB_CHECK_COMPILE([does function 'ktime_to_timespec64' exist], +ktime_to_timespec64, [ + #include +],[ + struct timespec64 ts; + ktime_t now; + + ts = ktime_to_timespec64(now); +],[ + AC_DEFINE(HAVE_KTIME_TO_TIMESPEC64, 1, + ['ktime_to_timespec64' is available]) +]) +]) # 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 +],[ + 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 +],[ + 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],[ @@ -382,6 +503,27 @@ 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 +],[ + 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 # @@ -464,6 +606,71 @@ get_user_pages_6arg, [ ]) # LIBCFS_GET_USER_PAGES_6ARG # +# LIBCFS_STACKTRACE_OPS +# +# Kernel version 4.8 commit c8fe4609827aedc9c4b45de80e7cdc8ccfa8541b +# removed both struct stacktrace_ops and dump_trace() function +# +AC_DEFUN([LIBCFS_STACKTRACE_OPS], [ +LB_CHECK_COMPILE([if 'struct stacktrace_ops' exists], +stacktrace_ops, [ + struct task_struct; + struct pt_regs; + #include +],[ + struct stacktrace_ops ops; + ops.stack = NULL; +],[ + AC_DEFINE(HAVE_STACKTRACE_OPS, 1, + [struct stacktrace_ops exists]) +]) +]) # LIBCFS_STACKTRACE_OPS + +# +# Kernel version 4.9 commit 768ae309a96103ed02eb1e111e838c87854d8b51 +# mm: replace get_user_pages() write/force parameters with gup_flags +# +AC_DEFUN([LIBCFS_GET_USER_PAGES_GUP_FLAGS], [ +LB_CHECK_COMPILE([if 'get_user_pages()' takes gup_flags in arguments], +get_user_pages_gup_flags, [ + #include +],[ + int rc; + rc = get_user_pages(0, 0, FOLL_WRITE, NULL, NULL); +],[ + AC_DEFINE(HAVE_GET_USER_PAGES_GUP_FLAGS, 1, + [get_user_pages takes gup_flags in arguments]) +]) +]) # 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 +],[ + 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 @@ -486,6 +693,7 @@ LIBCFS_DUMP_TRACE_ADDRESS LC_SHRINK_CONTROL # 3.0 LIBCFS_STACKTRACE_WARNING +LIBCFS_REINIT_COMPLETION # 3.5 LIBCFS_PROCESS_NAMESPACE LIBCFS_I_UID_READ @@ -499,14 +707,21 @@ LIBCFS_ENABLE_CRC32C_ACCEL # 3.11 LIBCFS_KTIME_GET_TS64 # 3.12 +LIBCFS_KTIME_ADD +LIBCFS_KTIME_AFTER LIBCFS_SHRINKER_COUNT # 3.17 LIBCFS_HLIST_ADD_AFTER LIBCFS_TIMESPEC64 LIBCFS_KTIME_GET_REAL_TS64 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 @@ -515,6 +730,14 @@ LIBCFS_CRYPTO_HASH_HELPERS # 4.6 LIBCFS_STACKTRACE_OPS_ADDRESS_RETURN_INT LIBCFS_GET_USER_PAGES_6ARG +# 4.8 +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 #