1c03c5b1cSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_KTHREAD_COMPLETE_AND_EXIT], [ 2c03c5b1cSMartin Matuska dnl # 3c03c5b1cSMartin Matuska dnl # 5.17 API, 4c03c5b1cSMartin Matuska dnl # cead18552660702a4a46f58e65188fe5f36e9dfe ("exit: Rename complete_and_exit to kthread_complete_and_exit") 5c03c5b1cSMartin Matuska dnl # 6c03c5b1cSMartin Matuska dnl # Also moves the definition from include/linux/kernel.h to include/linux/kthread.h 7c03c5b1cSMartin Matuska dnl # 8c03c5b1cSMartin Matuska AC_MSG_CHECKING([whether kthread_complete_and_exit() is available]) 9c03c5b1cSMartin Matuska ZFS_LINUX_TEST_RESULT([kthread_complete_and_exit], [ 10c03c5b1cSMartin Matuska AC_MSG_RESULT(yes) 11c03c5b1cSMartin Matuska AC_DEFINE(SPL_KTHREAD_COMPLETE_AND_EXIT, kthread_complete_and_exit, [kthread_complete_and_exit() available]) 12c03c5b1cSMartin Matuska ], [ 13c03c5b1cSMartin Matuska AC_MSG_RESULT(no) 14c03c5b1cSMartin Matuska AC_DEFINE(SPL_KTHREAD_COMPLETE_AND_EXIT, complete_and_exit, [using complete_and_exit() instead]) 15c03c5b1cSMartin Matuska ]) 16c03c5b1cSMartin Matuska]) 17c03c5b1cSMartin Matuska 187a7741afSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_KTHREAD_DEQUEUE_SIGNAL], [ 19c03c5b1cSMartin Matuska dnl # 20*5c65a0a9SMartin Matuska dnl # prehistory: 21*5c65a0a9SMartin Matuska dnl # int dequeue_signal(struct task_struct *task, sigset_t *mask, 22*5c65a0a9SMartin Matuska dnl # siginfo_t *info) 23c03c5b1cSMartin Matuska dnl # 24*5c65a0a9SMartin Matuska dnl # 4.20: kernel_siginfo_t introduced, replaces siginfo_t 25*5c65a0a9SMartin Matuska dnl # int dequeue_signal(struct task_struct *task, sigset_t *mask, 26*5c65a0a9SMartin Matuska dnl kernel_siginfo_t *info) 27c03c5b1cSMartin Matuska dnl # 28*5c65a0a9SMartin Matuska dnl # 5.17: enum pid_type introduced as 4th arg 29*5c65a0a9SMartin Matuska dnl # int dequeue_signal(struct task_struct *task, sigset_t *mask, 30*5c65a0a9SMartin Matuska dnl # kernel_siginfo_t *info, enum pid_type *type) 31*5c65a0a9SMartin Matuska dnl # 32*5c65a0a9SMartin Matuska dnl # 6.12: first arg struct_task* removed 33*5c65a0a9SMartin Matuska dnl # int dequeue_signal(sigset_t *mask, kernel_siginfo_t *info, 34*5c65a0a9SMartin Matuska dnl # enum pid_type *type) 357a7741afSMartin Matuska dnl # 36c03c5b1cSMartin Matuska AC_MSG_CHECKING([whether dequeue_signal() takes 4 arguments]) 377a7741afSMartin Matuska ZFS_LINUX_TEST_RESULT([kthread_dequeue_signal_4arg], [ 38c03c5b1cSMartin Matuska AC_MSG_RESULT(yes) 397a7741afSMartin Matuska AC_DEFINE(HAVE_DEQUEUE_SIGNAL_4ARG, 1, 407a7741afSMartin Matuska [dequeue_signal() takes 4 arguments]) 41c03c5b1cSMartin Matuska ], [ 42c03c5b1cSMartin Matuska AC_MSG_RESULT(no) 43*5c65a0a9SMartin Matuska AC_MSG_CHECKING([whether 3-arg dequeue_signal() takes a type argument]) 44*5c65a0a9SMartin Matuska ZFS_LINUX_TEST_RESULT([kthread_dequeue_signal_3arg_type], [ 457a7741afSMartin Matuska AC_MSG_RESULT(yes) 46*5c65a0a9SMartin Matuska AC_DEFINE(HAVE_DEQUEUE_SIGNAL_3ARG_TYPE, 1, 47*5c65a0a9SMartin Matuska [3-arg dequeue_signal() takes a type argument]) 487a7741afSMartin Matuska ], [ 497a7741afSMartin Matuska AC_MSG_RESULT(no) 507a7741afSMartin Matuska ]) 51c03c5b1cSMartin Matuska ]) 52c03c5b1cSMartin Matuska]) 53c03c5b1cSMartin Matuska 54c03c5b1cSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_KTHREAD_COMPLETE_AND_EXIT], [ 55c03c5b1cSMartin Matuska ZFS_LINUX_TEST_SRC([kthread_complete_and_exit], [ 56c03c5b1cSMartin Matuska #include <linux/kthread.h> 57c03c5b1cSMartin Matuska ], [ 58c03c5b1cSMartin Matuska struct completion *completion = NULL; 59c03c5b1cSMartin Matuska long code = 0; 60c03c5b1cSMartin Matuska 61c03c5b1cSMartin Matuska kthread_complete_and_exit(completion, code); 62c03c5b1cSMartin Matuska ]) 63c03c5b1cSMartin Matuska]) 64c03c5b1cSMartin Matuska 657a7741afSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_KTHREAD_DEQUEUE_SIGNAL], [ 667a7741afSMartin Matuska ZFS_LINUX_TEST_SRC([kthread_dequeue_signal_4arg], [ 67c03c5b1cSMartin Matuska #include <linux/sched/signal.h> 68c03c5b1cSMartin Matuska ], [ 69c03c5b1cSMartin Matuska struct task_struct *task = NULL; 70c03c5b1cSMartin Matuska sigset_t *mask = NULL; 71c03c5b1cSMartin Matuska kernel_siginfo_t *info = NULL; 72c03c5b1cSMartin Matuska enum pid_type *type = NULL; 73c03c5b1cSMartin Matuska int error __attribute__ ((unused)); 74c03c5b1cSMartin Matuska 75c03c5b1cSMartin Matuska error = dequeue_signal(task, mask, info, type); 76c03c5b1cSMartin Matuska ]) 77*5c65a0a9SMartin Matuska 78*5c65a0a9SMartin Matuska ZFS_LINUX_TEST_SRC([kthread_dequeue_signal_3arg_type], [ 79*5c65a0a9SMartin Matuska #include <linux/sched/signal.h> 80*5c65a0a9SMartin Matuska ], [ 81*5c65a0a9SMartin Matuska sigset_t *mask = NULL; 82*5c65a0a9SMartin Matuska kernel_siginfo_t *info = NULL; 83*5c65a0a9SMartin Matuska enum pid_type *type = NULL; 84*5c65a0a9SMartin Matuska int error __attribute__ ((unused)); 85*5c65a0a9SMartin Matuska 86*5c65a0a9SMartin Matuska error = dequeue_signal(mask, info, type); 87*5c65a0a9SMartin Matuska ]) 88c03c5b1cSMartin Matuska]) 89c03c5b1cSMartin Matuska 90c03c5b1cSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_KTHREAD], [ 91c03c5b1cSMartin Matuska ZFS_AC_KERNEL_KTHREAD_COMPLETE_AND_EXIT 927a7741afSMartin Matuska ZFS_AC_KERNEL_KTHREAD_DEQUEUE_SIGNAL 93c03c5b1cSMartin Matuska]) 94c03c5b1cSMartin Matuska 95c03c5b1cSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_KTHREAD], [ 96c03c5b1cSMartin Matuska ZFS_AC_KERNEL_SRC_KTHREAD_COMPLETE_AND_EXIT 977a7741afSMartin Matuska ZFS_AC_KERNEL_SRC_KTHREAD_DEQUEUE_SIGNAL 98c03c5b1cSMartin Matuska]) 99