dnl # dnl # 3.1 API Change dnl # dnl # The rw_semaphore.wait_lock member was changed from spinlock_t to dnl # raw_spinlock_t at commit ddb6c9b58a19edcfac93ac670b066c836ff729f1. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_RWSEM_SPINLOCK_IS_RAW], [ ZFS_LINUX_TEST_SRC([rwsem_spinlock_is_raw], [ #include ],[ struct rw_semaphore dummy_semaphore __attribute__ ((unused)); raw_spinlock_t dummy_lock __attribute__ ((unused)) = __RAW_SPIN_LOCK_INITIALIZER(dummy_lock); dummy_semaphore.wait_lock = dummy_lock; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_RWSEM_SPINLOCK_IS_RAW], [ AC_MSG_CHECKING([whether struct rw_semaphore member wait_lock is raw]) ZFS_LINUX_TEST_RESULT([rwsem_spinlock_is_raw], [ AC_MSG_RESULT(yes) AC_DEFINE(RWSEM_SPINLOCK_IS_RAW, 1, [struct rw_semaphore member wait_lock is raw_spinlock_t]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 3.16 API Change dnl # dnl # rwsem-spinlock "->activity" changed to "->count" dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_RWSEM_ACTIVITY], [ ZFS_LINUX_TEST_SRC([rwsem_activity], [ #include ],[ struct rw_semaphore dummy_semaphore __attribute__ ((unused)); dummy_semaphore.activity = 0; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_RWSEM_ACTIVITY], [ AC_MSG_CHECKING([whether struct rw_semaphore has member activity]) ZFS_LINUX_TEST_RESULT([rwsem_activity], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_RWSEM_ACTIVITY, 1, [struct rw_semaphore has member activity]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 4.8 API Change dnl # dnl # rwsem "->count" changed to atomic_long_t type dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_RWSEM_ATOMIC_LONG_COUNT], [ ZFS_LINUX_TEST_SRC([rwsem_atomic_long_count], [ #include ],[ DECLARE_RWSEM(dummy_semaphore); (void) atomic_long_read(&dummy_semaphore.count); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_RWSEM_ATOMIC_LONG_COUNT], [ AC_MSG_CHECKING( [whether struct rw_semaphore has atomic_long_t member count]) ZFS_LINUX_TEST_RESULT([rwsem_atomic_long_count], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_RWSEM_ATOMIC_LONG_COUNT, 1, [struct rw_semaphore has atomic_long_t member count]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_RWSEM], [ ZFS_AC_KERNEL_SRC_RWSEM_SPINLOCK_IS_RAW ZFS_AC_KERNEL_SRC_RWSEM_ACTIVITY ZFS_AC_KERNEL_SRC_RWSEM_ATOMIC_LONG_COUNT ]) AC_DEFUN([ZFS_AC_KERNEL_RWSEM], [ ZFS_AC_KERNEL_RWSEM_SPINLOCK_IS_RAW ZFS_AC_KERNEL_RWSEM_ACTIVITY ZFS_AC_KERNEL_RWSEM_ATOMIC_LONG_COUNT ])