|
@@ -478,16 +478,24 @@ static inline void print_irqtrace_events(struct task_struct *curr)
|
|
|
* on the per lock-class debug mode:
|
|
|
*/
|
|
|
|
|
|
+/*
|
|
|
+ * Read states in the 2-bit held_lock:read field:
|
|
|
+ * 0: Exclusive lock
|
|
|
+ * 1: Shareable lock, cannot be recursively called
|
|
|
+ * 2: Shareable lock, can be recursively called
|
|
|
+ * 3: Shareable lock, cannot be recursively called except in interrupt context
|
|
|
+ */
|
|
|
#define lock_acquire_exclusive(l, s, t, n, i) lock_acquire(l, s, t, 0, 1, n, i)
|
|
|
#define lock_acquire_shared(l, s, t, n, i) lock_acquire(l, s, t, 1, 1, n, i)
|
|
|
#define lock_acquire_shared_recursive(l, s, t, n, i) lock_acquire(l, s, t, 2, 1, n, i)
|
|
|
+#define lock_acquire_shared_irecursive(l, s, t, n, i) lock_acquire(l, s, t, 3, 1, n, i)
|
|
|
|
|
|
#define spin_acquire(l, s, t, i) lock_acquire_exclusive(l, s, t, NULL, i)
|
|
|
#define spin_acquire_nest(l, s, t, n, i) lock_acquire_exclusive(l, s, t, n, i)
|
|
|
#define spin_release(l, n, i) lock_release(l, n, i)
|
|
|
|
|
|
#define rwlock_acquire(l, s, t, i) lock_acquire_exclusive(l, s, t, NULL, i)
|
|
|
-#define rwlock_acquire_read(l, s, t, i) lock_acquire_shared_recursive(l, s, t, NULL, i)
|
|
|
+#define rwlock_acquire_read(l, s, t, i) lock_acquire_shared_irecursive(l, s, t, NULL, i)
|
|
|
#define rwlock_release(l, n, i) lock_release(l, n, i)
|
|
|
|
|
|
#define seqcount_acquire(l, s, t, i) lock_acquire_exclusive(l, s, t, NULL, i)
|