4 dnl # The rw_semaphore.wait_lock member was changed from spinlock_t to
5 dnl # raw_spinlock_t at commit ddb6c9b58a19edcfac93ac670b066c836ff729f1.
7 AC_DEFUN([ZFS_AC_KERNEL_SRC_RWSEM_SPINLOCK_IS_RAW], [
8 ZFS_LINUX_TEST_SRC([rwsem_spinlock_is_raw], [
9 #include <linux/rwsem.h>
11 struct rw_semaphore dummy_semaphore __attribute__ ((unused));
12 raw_spinlock_t dummy_lock __attribute__ ((unused)) =
13 __RAW_SPIN_LOCK_INITIALIZER(dummy_lock);
14 dummy_semaphore.wait_lock = dummy_lock;
18 AC_DEFUN([ZFS_AC_KERNEL_RWSEM_SPINLOCK_IS_RAW], [
19 AC_MSG_CHECKING([whether struct rw_semaphore member wait_lock is raw])
20 ZFS_LINUX_TEST_RESULT([rwsem_spinlock_is_raw], [
23 ZFS_LINUX_TEST_ERROR([rwsem_spinlock_is_raw])
30 dnl # rwsem-spinlock "->activity" changed to "->count"
32 AC_DEFUN([ZFS_AC_KERNEL_SRC_RWSEM_ACTIVITY], [
33 ZFS_LINUX_TEST_SRC([rwsem_activity], [
34 #include <linux/rwsem.h>
36 struct rw_semaphore dummy_semaphore __attribute__ ((unused));
37 dummy_semaphore.activity = 0;
41 AC_DEFUN([ZFS_AC_KERNEL_RWSEM_ACTIVITY], [
42 AC_MSG_CHECKING([whether struct rw_semaphore has member activity])
43 ZFS_LINUX_TEST_RESULT([rwsem_activity], [
45 AC_DEFINE(HAVE_RWSEM_ACTIVITY, 1,
46 [struct rw_semaphore has member activity])
55 dnl # rwsem "->count" changed to atomic_long_t type
57 AC_DEFUN([ZFS_AC_KERNEL_SRC_RWSEM_ATOMIC_LONG_COUNT], [
58 ZFS_LINUX_TEST_SRC([rwsem_atomic_long_count], [
59 #include <linux/rwsem.h>
61 DECLARE_RWSEM(dummy_semaphore);
62 (void) atomic_long_read(&dummy_semaphore.count);
66 AC_DEFUN([ZFS_AC_KERNEL_RWSEM_ATOMIC_LONG_COUNT], [
68 [whether struct rw_semaphore has atomic_long_t member count])
69 ZFS_LINUX_TEST_RESULT([rwsem_atomic_long_count], [
71 AC_DEFINE(HAVE_RWSEM_ATOMIC_LONG_COUNT, 1,
72 [struct rw_semaphore has atomic_long_t member count])
78 AC_DEFUN([ZFS_AC_KERNEL_SRC_RWSEM], [
79 ZFS_AC_KERNEL_SRC_RWSEM_SPINLOCK_IS_RAW
80 ZFS_AC_KERNEL_SRC_RWSEM_ACTIVITY
81 ZFS_AC_KERNEL_SRC_RWSEM_ATOMIC_LONG_COUNT
84 AC_DEFUN([ZFS_AC_KERNEL_RWSEM], [
85 ZFS_AC_KERNEL_RWSEM_SPINLOCK_IS_RAW
86 ZFS_AC_KERNEL_RWSEM_ACTIVITY
87 ZFS_AC_KERNEL_RWSEM_ATOMIC_LONG_COUNT