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