pw_sync_threadx: Add pw::sync::SpinLock backend
Adds initial ThreadX support through a SpinLock backend for
pw_sync. Note that this first backend does not support ThreadX
with SMP enabled, taking a shortcut to detect SpinLock recursion
instead.
Change-Id: I6cb4d1edfe78bc97fc632cfb353589e53f87f2c7
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/25803
Commit-Queue: Ewout van Bekkum <ewout@google.com>
Reviewed-by: Ewout van Bekkum <ewout@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
diff --git a/pw_sync_threadx/BUILD b/pw_sync_threadx/BUILD
new file mode 100644
index 0000000..54dff01
--- /dev/null
+++ b/pw_sync_threadx/BUILD
@@ -0,0 +1,49 @@
+# Copyright 2020 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+load(
+ "//pw_build:pigweed.bzl",
+ "pw_cc_library",
+)
+
+package(default_visibility = ["//visibility:public"])
+
+licenses(["notice"]) # Apache License 2.0
+
+pw_cc_library(
+ name = "spin_lock_headers",
+ hdrs = [
+ "public/pw_sync_threadx/spin_lock_inline.h",
+ "public/pw_sync_threadx/spin_lock_native.h",
+ "public_overrides/pw_sync_backend/spin_lock_inline.h",
+ "public_overrides/pw_sync_backend/spin_lock_native.h",
+ ],
+ includes = [
+ "public",
+ "public_overrides",
+ ],
+ # TODO: This should depend on ThreadX but our third parties currently
+ # do not have Bazel support.
+)
+
+pw_cc_library(
+ name = "spin_lock",
+ srcs = [
+ "spin_lock.cc",
+ ],
+ deps = [
+ ":spin_lock_headers",
+ "//pw_sync:spin_lock_facade",
+ ],
+)