pw_sync: add lock safety annotations for C++ clang usage
Adds clang thread safety annotations to the interrupt spin lock for
C++ usage. Note that this is only checked when compiling with clang.
C APIs explicitly escape the thread safety annotations.
Change-Id: Ic829afd41b3978c507ebe294d34e1e0dc03865b4
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/40241
Reviewed-by: Keir Mierle <keir@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
Pigweed-Auto-Submit: Ewout van Bekkum <ewout@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
diff --git a/pw_sync/BUILD b/pw_sync/BUILD
index f1c6620..e0a4741 100644
--- a/pw_sync/BUILD
+++ b/pw_sync/BUILD
@@ -92,6 +92,17 @@
)
pw_cc_library(
+ name = "lock_annotations",
+ hdrs = [
+ "public/pw_sync/lock_annotations.h",
+ ],
+ includes = ["public"],
+ deps = [
+ "//pw_preprocessor",
+ ],
+)
+
+pw_cc_library(
name = "mutex_facade",
hdrs = [
"public/pw_sync/mutex.h",
@@ -101,8 +112,9 @@
"mutex.cc"
],
deps = [
- PW_SYNC_MUTEX_BACKEND + "_headers",
+ ":lock_annotations",
"//pw_preprocessor",
+ PW_SYNC_MUTEX_BACKEND + "_headers",
],
)
@@ -131,10 +143,11 @@
"timed_mutex.cc"
],
deps = [
- PW_SYNC_TIMED_MUTEX_BACKEND + "_headers",
- "//pw_chrono:system_clock",
+ ":lock_annotations",
":mutex_facade",
+ "//pw_chrono:system_clock",
"//pw_preprocessor",
+ PW_SYNC_TIMED_MUTEX_BACKEND + "_headers",
],
)
@@ -163,8 +176,9 @@
"interrupt_spin_lock.cc"
],
deps = [
- PW_SYNC_INTERRUPT_SPIN_LOCK_BACKEND + "_headers",
+ ":lock_annotations",
"//pw_preprocessor",
+ PW_SYNC_INTERRUPT_SPIN_LOCK_BACKEND + "_headers",
],
)