]>
Commit | Line | Data |
---|---|---|
1 | dnl # | |
2 | dnl # 3.1 API Change | |
3 | dnl # | |
4 | dnl # The rw_semaphore.wait_lock member was changed from spinlock_t to | |
5 | dnl # raw_spinlock_t at commit ddb6c9b58a19edcfac93ac670b066c836ff729f1. | |
6 | dnl # | |
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> | |
10 | ],[ | |
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; | |
15 | ]) | |
16 | ]) | |
17 | ||
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], [ | |
21 | AC_MSG_RESULT(yes) | |
22 | ],[ | |
23 | ZFS_LINUX_TEST_ERROR([rwsem_spinlock_is_raw]) | |
24 | ]) | |
25 | ]) | |
26 | ||
27 | dnl # | |
28 | dnl # 3.16 API Change | |
29 | dnl # | |
30 | dnl # rwsem-spinlock "->activity" changed to "->count" | |
31 | dnl # | |
32 | AC_DEFUN([ZFS_AC_KERNEL_SRC_RWSEM_ACTIVITY], [ | |
33 | ZFS_LINUX_TEST_SRC([rwsem_activity], [ | |
34 | #include <linux/rwsem.h> | |
35 | ],[ | |
36 | struct rw_semaphore dummy_semaphore __attribute__ ((unused)); | |
37 | dummy_semaphore.activity = 0; | |
38 | ]) | |
39 | ]) | |
40 | ||
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], [ | |
44 | AC_MSG_RESULT(yes) | |
45 | AC_DEFINE(HAVE_RWSEM_ACTIVITY, 1, | |
46 | [struct rw_semaphore has member activity]) | |
47 | ],[ | |
48 | AC_MSG_RESULT(no) | |
49 | ]) | |
50 | ]) | |
51 | ||
52 | dnl # | |
53 | dnl # 4.8 API Change | |
54 | dnl # | |
55 | dnl # rwsem "->count" changed to atomic_long_t type | |
56 | dnl # | |
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> | |
60 | ],[ | |
61 | DECLARE_RWSEM(dummy_semaphore); | |
62 | (void) atomic_long_read(&dummy_semaphore.count); | |
63 | ]) | |
64 | ]) | |
65 | ||
66 | AC_DEFUN([ZFS_AC_KERNEL_RWSEM_ATOMIC_LONG_COUNT], [ | |
67 | AC_MSG_CHECKING( | |
68 | [whether struct rw_semaphore has atomic_long_t member count]) | |
69 | ZFS_LINUX_TEST_RESULT([rwsem_atomic_long_count], [ | |
70 | AC_MSG_RESULT(yes) | |
71 | AC_DEFINE(HAVE_RWSEM_ATOMIC_LONG_COUNT, 1, | |
72 | [struct rw_semaphore has atomic_long_t member count]) | |
73 | ],[ | |
74 | AC_MSG_RESULT(no) | |
75 | ]) | |
76 | ]) | |
77 | ||
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 | |
82 | ]) | |
83 | ||
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 | |
88 | ]) |