summaryrefslogtreecommitdiff
path: root/include/linux/srcu.h
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2018-08-28 19:03:57 +0100
committerMark Brown <broonie@kernel.org>2018-08-28 19:03:57 +0100
commit6e2d6b2728fcb408eabd7991804f8cb33ff59f20 (patch)
tree18dc3fc5bd55fa9ff92430e4ab8353de6c5c0e55 /include/linux/srcu.h
parent6f0a256253f48095ba2e5bcdfbed41f21643c105 (diff)
parent5b394b2ddf0347bef56e50c69a58773c94343ff3 (diff)
Merge tag 'v4.19-rc1' into asoc-4.19
Linux 4.19-rc1
Diffstat (limited to 'include/linux/srcu.h')
-rw-r--r--include/linux/srcu.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/include/linux/srcu.h b/include/linux/srcu.h
index 91494d7e8e41..67135d4a8a30 100644
--- a/include/linux/srcu.h
+++ b/include/linux/srcu.h
@@ -170,6 +170,11 @@ static inline int srcu_read_lock_held(const struct srcu_struct *sp)
#define srcu_dereference(p, sp) srcu_dereference_check((p), (sp), 0)
/**
+ * srcu_dereference_notrace - no tracing and no lockdep calls from here
+ */
+#define srcu_dereference_notrace(p, sp) srcu_dereference_check((p), (sp), 1)
+
+/**
* srcu_read_lock - register a new reader for an SRCU-protected structure.
* @sp: srcu_struct in which to register the new reader.
*
@@ -195,6 +200,16 @@ static inline int srcu_read_lock(struct srcu_struct *sp) __acquires(sp)
return retval;
}
+/* Used by tracing, cannot be traced and cannot invoke lockdep. */
+static inline notrace int
+srcu_read_lock_notrace(struct srcu_struct *sp) __acquires(sp)
+{
+ int retval;
+
+ retval = __srcu_read_lock(sp);
+ return retval;
+}
+
/**
* srcu_read_unlock - unregister a old reader from an SRCU-protected structure.
* @sp: srcu_struct in which to unregister the old reader.
@@ -209,6 +224,13 @@ static inline void srcu_read_unlock(struct srcu_struct *sp, int idx)
__srcu_read_unlock(sp, idx);
}
+/* Used by tracing, cannot be traced and cannot call lockdep. */
+static inline notrace void
+srcu_read_unlock_notrace(struct srcu_struct *sp, int idx) __releases(sp)
+{
+ __srcu_read_unlock(sp, idx);
+}
+
/**
* smp_mb__after_srcu_read_unlock - ensure full ordering after srcu_read_unlock
*