diff --git a/pw_sync/BUILD b/pw_sync/BUILD
index 18d1962..7151178 100644
--- a/pw_sync/BUILD
+++ b/pw_sync/BUILD
@@ -26,7 +26,7 @@
 PW_SYNC_BINARY_SEMAPHORE_BACKEND = "//pw_sync_stl:binary_semaphore"
 PW_SYNC_COUNTING_SEMAPHORE_BACKEND = "//pw_sync_stl:counting_semaphore"
 PW_SYNC_MUTEX_BACKEND = "//pw_sync_stl:mutex"
-PW_SYNC_SPIN_LOCK_BACKEND = "//pw_sync_stl:spin_lock"
+PW_SYNC_INTERRUPT_SPIN_LOCK_BACKEND = "//pw_sync_stl:interrupt_spin_lock"
 
 pw_cc_library(
     name = "binary_semaphore_facade",
@@ -122,32 +122,33 @@
 )
 
 pw_cc_library(
-    name = "spin_lock_facade",
+    name = "interrupt_spin_lock_facade",
     hdrs = [
         "public/pw_sync/spin_lock.h",
+        "public/pw_sync/interrupt_spin_lock.h",
     ],
     includes = ["public"],
     srcs = [
-        "spin_lock.cc"
+        "interrupt_spin_lock.cc"
     ],
     deps = [
-        PW_SYNC_SPIN_LOCK_BACKEND + "_headers",
+        PW_SYNC_INTERRUPT_SPIN_LOCK_BACKEND + "_headers",
         "//pw_preprocessor",
     ],
 )
 
 pw_cc_library(
-    name = "spin_lock",
+    name = "interrupt_spin_lock",
     deps = [
-        ":spin_lock_facade",
-        PW_SYNC_SPIN_LOCK_BACKEND + "_headers",
+        ":interrupt_spin_lock_facade",
+        PW_SYNC_INTERRUPT_SPIN_LOCK_BACKEND + "_headers",
     ],
 )
 
 pw_cc_library(
-    name = "spin_lock_backend",
+    name = "interrupt_spin_lock_backend",
     deps = [
-       PW_SYNC_SPIN_LOCK_BACKEND,
+       PW_SYNC_INTERRUPT_SPIN_LOCK_BACKEND,
     ],
 )
 
@@ -199,13 +200,13 @@
 )
 
 pw_cc_test(
-    name = "spin_lock_facade_test",
+    name = "interrupt_spin_lock_facade_test",
     srcs = [
-        "spin_lock_facade_test.cc",
-        "spin_lock_facade_test_c.c",
+        "interrupt_spin_lock_facade_test.cc",
+        "interrupt_spin_lock_facade_test_c.c",
     ],
     deps = [
-        ":spin_lock",
+        ":interrupt_spin_lock",
         "//pw_preprocessor",
         "//pw_unit_test",
     ],
diff --git a/pw_sync/BUILD.gn b/pw_sync/BUILD.gn
index 615c3db..583f6ea 100644
--- a/pw_sync/BUILD.gn
+++ b/pw_sync/BUILD.gn
@@ -58,12 +58,24 @@
   sources = [ "mutex.cc" ]
 }
 
-pw_facade("spin_lock") {
-  backend = pw_sync_SPIN_LOCK_BACKEND
-  public_configs = [ ":public_include_path" ]
+# TODO(ewout): Finish the migration and remove this logic.
+if (pw_sync_SPIN_LOCK_BACKEND != "") {
+  assert(pw_sync_INTERRUPT_SPIN_LOCK_BACKEND == "",
+         "You cannot define the backend for pw::sync::InterruptSpinLock twice!")
+  pw_sync_INTERRUPT_SPIN_LOCK_BACKEND = pw_sync_SPIN_LOCK_BACKEND
+}
+
+pw_source_set("spin_lock") {
+  public_deps = [ ":interrupt_spin_lock" ]
   public = [ "public/pw_sync/spin_lock.h" ]
+}
+
+pw_facade("interrupt_spin_lock") {
+  backend = pw_sync_INTERRUPT_SPIN_LOCK_BACKEND
+  public_configs = [ ":public_include_path" ]
+  public = [ "public/pw_sync/interrupt_spin_lock.h" ]
   public_deps = [ "$dir_pw_preprocessor" ]
-  sources = [ "spin_lock.cc" ]
+  sources = [ "interrupt_spin_lock.cc" ]
 }
 
 pw_source_set("yield_core") {
@@ -76,7 +88,7 @@
     ":binary_semaphore_facade_test",
     ":counting_semaphore_facade_test",
     ":mutex_facade_test",
-    ":spin_lock_facade_test",
+    ":interrupt_spin_lock_facade_test",
   ]
 }
 
@@ -119,16 +131,16 @@
   ]
 }
 
-pw_test("spin_lock_facade_test") {
-  enable_if = pw_sync_SPIN_LOCK_BACKEND != ""
+pw_test("interrupt_spin_lock_facade_test") {
+  enable_if = pw_sync_INTERRUPT_SPIN_LOCK_BACKEND != ""
   sources = [
-    "spin_lock_facade_test.cc",
-    "spin_lock_facade_test_c.c",
+    "interrupt_spin_lock_facade_test.cc",
+    "interrupt_spin_lock_facade_test_c.c",
   ]
   deps = [
-    ":spin_lock",
+    ":interrupt_spin_lock",
     "$dir_pw_preprocessor",
-    pw_sync_SPIN_LOCK_BACKEND,
+    pw_sync_INTERRUPT_SPIN_LOCK_BACKEND,
   ]
 }
 
diff --git a/pw_sync/backend.gni b/pw_sync/backend.gni
index 59d8b48..ba8e6b0 100644
--- a/pw_sync/backend.gni
+++ b/pw_sync/backend.gni
@@ -22,7 +22,10 @@
   # Backend for the pw_sync module's mutex.
   pw_sync_MUTEX_BACKEND = ""
 
-  # Backend for the pw_sync module's spin lock.
+  # Backend for the pw_sync module's interrupt spin lock.
+  pw_sync_INTERRUPT_SPIN_LOCK_BACKEND = ""
+
+  # TODO(ewout): migrate all users to pw_sync_INTERRUPT_SPIN_LOCK_BACKEND.
   pw_sync_SPIN_LOCK_BACKEND = ""
 
   # Whether the GN asserts should be silenced in ensuring that a compatible
diff --git a/pw_sync/interrupt_spin_lock.cc b/pw_sync/interrupt_spin_lock.cc
new file mode 100644
index 0000000..9a8ec6a
--- /dev/null
+++ b/pw_sync/interrupt_spin_lock.cc
@@ -0,0 +1,30 @@
+// 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.
+
+#include "pw_sync/interrupt_spin_lock.h"
+
+extern "C" void pw_sync_InterruptSpinLock_Lock(
+    pw_sync_InterruptSpinLock* interrupt_spin_lock) {
+  interrupt_spin_lock->lock();
+}
+
+extern "C" bool pw_sync_InterruptSpinLock_TryLock(
+    pw_sync_InterruptSpinLock* interrupt_spin_lock) {
+  return interrupt_spin_lock->try_lock();
+}
+
+extern "C" void pw_sync_InterruptSpinLock_Unlock(
+    pw_sync_InterruptSpinLock* interrupt_spin_lock) {
+  interrupt_spin_lock->unlock();
+}
diff --git a/pw_sync/interrupt_spin_lock_facade_test.cc b/pw_sync/interrupt_spin_lock_facade_test.cc
new file mode 100644
index 0000000..372623a
--- /dev/null
+++ b/pw_sync/interrupt_spin_lock_facade_test.cc
@@ -0,0 +1,73 @@
+// 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.
+
+#include "gtest/gtest.h"
+#include "pw_sync/interrupt_spin_lock.h"
+
+namespace pw::sync {
+namespace {
+
+extern "C" {
+
+// Functions defined in interrupt_spin_lock_facade_test_c.c which call the API
+// from C.
+void pw_sync_InterruptSpinLock_CallLock(
+    pw_sync_InterruptSpinLock* interrupt_spin_lock);
+bool pw_sync_InterruptSpinLock_CallTryLock(
+    pw_sync_InterruptSpinLock* interrupt_spin_lock);
+void pw_sync_InterruptSpinLock_CallUnlock(
+    pw_sync_InterruptSpinLock* interrupt_spin_lock);
+
+}  // extern "C"
+
+TEST(InterruptSpinLock, LockUnlock) {
+  pw::sync::InterruptSpinLock interrupt_spin_lock;
+  interrupt_spin_lock.lock();
+  interrupt_spin_lock.unlock();
+}
+
+// TODO(pwbug/291): Add real concurrency tests once we have pw::thread.
+
+InterruptSpinLock static_interrupt_spin_lock;
+TEST(InterruptSpinLock, LockUnlockStatic) {
+  static_interrupt_spin_lock.lock();
+  // Ensure it fails to lock when already held.
+  EXPECT_FALSE(static_interrupt_spin_lock.try_lock());
+  static_interrupt_spin_lock.unlock();
+}
+
+TEST(InterruptSpinLock, TryLockUnlock) {
+  pw::sync::InterruptSpinLock interrupt_spin_lock;
+  ASSERT_TRUE(interrupt_spin_lock.try_lock());
+  // Ensure it fails to lock when already held.
+  EXPECT_FALSE(interrupt_spin_lock.try_lock());
+  interrupt_spin_lock.unlock();
+}
+
+TEST(InterruptSpinLock, LockUnlockInC) {
+  pw::sync::InterruptSpinLock interrupt_spin_lock;
+  pw_sync_InterruptSpinLock_CallLock(&interrupt_spin_lock);
+  pw_sync_InterruptSpinLock_CallUnlock(&interrupt_spin_lock);
+}
+
+TEST(InterruptSpinLock, TryLockUnlockInC) {
+  pw::sync::InterruptSpinLock interrupt_spin_lock;
+  ASSERT_TRUE(pw_sync_InterruptSpinLock_CallTryLock(&interrupt_spin_lock));
+  // Ensure it fails to lock when already held.
+  EXPECT_FALSE(pw_sync_InterruptSpinLock_CallTryLock(&interrupt_spin_lock));
+  pw_sync_InterruptSpinLock_CallUnlock(&interrupt_spin_lock);
+}
+
+}  // namespace
+}  // namespace pw::sync
diff --git a/pw_sync/interrupt_spin_lock_facade_test_c.c b/pw_sync/interrupt_spin_lock_facade_test_c.c
new file mode 100644
index 0000000..3cdbe2a
--- /dev/null
+++ b/pw_sync/interrupt_spin_lock_facade_test_c.c
@@ -0,0 +1,35 @@
+// 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.
+
+// These tests call the pw_sync module interrupt_spin_lock API from C. The
+// return values are checked in the main C++ tests.
+
+#include <stdbool.h>
+
+#include "pw_sync/interrupt_spin_lock.h"
+
+void pw_sync_InterruptSpinLock_CallLock(
+    pw_sync_InterruptSpinLock* interrupt_spin_lock) {
+  pw_sync_InterruptSpinLock_Lock(interrupt_spin_lock);
+}
+
+bool pw_sync_InterruptSpinLock_CallTryLock(
+    pw_sync_InterruptSpinLock* interrupt_spin_lock) {
+  return pw_sync_InterruptSpinLock_TryLock(interrupt_spin_lock);
+}
+
+void pw_sync_InterruptSpinLock_CallUnlock(
+    pw_sync_InterruptSpinLock* interrupt_spin_lock) {
+  pw_sync_InterruptSpinLock_Unlock(interrupt_spin_lock);
+}
diff --git a/pw_sync/public/pw_sync/interrupt_spin_lock.h b/pw_sync/public/pw_sync/interrupt_spin_lock.h
new file mode 100644
index 0000000..e42f60e
--- /dev/null
+++ b/pw_sync/public/pw_sync/interrupt_spin_lock.h
@@ -0,0 +1,91 @@
+// 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.
+#pragma once
+
+#include <stdbool.h>
+
+#include "pw_preprocessor/util.h"
+
+#ifdef __cplusplus
+
+#include "pw_sync_backend/interrupt_spin_lock_native.h"
+
+namespace pw::sync {
+
+// The InterruptSpinLock is a synchronization primitive that can be used to
+// protect shared data from being simultaneously accessed by multiple threads
+// and/or interrupts as a targeted global lock (except for NMIs).
+// It offers exclusive, non-recursive ownership semantics where IRQs up to a
+// backend defined level of "NMIs" will be masked to solve priority-inversion.
+//
+// NOTE: This InterruptSpinLock relies on built-in local interrupt masking to
+// make it interrupt safe without requiring the caller to separately mask and
+// unmask interrupts when using this primitive.
+//
+// Unlike global interrupt locks, this also works safely and efficiently on SMP
+// systems. This entire API is IRQ safe.
+//
+// Precondition: Code that holds a specific InterruptSpinLock must not try to
+// re-acquire it. However, it is okay to nest distinct spinlocks.
+class InterruptSpinLock {
+ public:
+  using native_handle_type = backend::NativeInterruptSpinLockHandle;
+
+  constexpr InterruptSpinLock();
+  ~InterruptSpinLock() = default;
+  InterruptSpinLock(const InterruptSpinLock&) = delete;
+  InterruptSpinLock(InterruptSpinLock&&) = delete;
+  InterruptSpinLock& operator=(const InterruptSpinLock&) = delete;
+  InterruptSpinLock& operator=(InterruptSpinLock&&) = delete;
+
+  // Locks the spinlock, blocking indefinitely. Failures are fatal.
+  //
+  // Precondition: Recursive locking is undefined behavior.
+  void lock();
+
+  // Attempts to lock the spinlock in a non-blocking manner.
+  // Returns true if the spinlock was successfully acquired.
+  //
+  // Precondition: Recursive locking is undefined behavior.
+  bool try_lock();
+
+  // Unlocks the spinlock. Failures are fatal.
+  void unlock();
+
+  native_handle_type native_handle();
+
+ private:
+  // This may be a wrapper around a native type with additional members.
+  backend::NativeInterruptSpinLock native_type_;
+};
+
+}  // namespace pw::sync
+
+#include "pw_sync_backend/interrupt_spin_lock_inline.h"
+
+using pw_sync_InterruptSpinLock = pw::sync::InterruptSpinLock;
+
+#else  // !defined(__cplusplus)
+
+typedef struct pw_sync_InterruptSpinLock pw_sync_InterruptSpinLock;
+
+#endif  // __cplusplus
+
+PW_EXTERN_C_START
+
+void pw_sync_InterruptSpinLock_Lock(pw_sync_InterruptSpinLock* spin_lock);
+bool pw_sync_InterruptSpinLock_TryLock(pw_sync_InterruptSpinLock* spin_lock);
+void pw_sync_InterruptSpinLock_Unlock(pw_sync_InterruptSpinLock* spin_lock);
+
+PW_EXTERN_C_END
diff --git a/pw_sync/public/pw_sync/spin_lock.h b/pw_sync/public/pw_sync/spin_lock.h
index a59879b..415837d 100644
--- a/pw_sync/public/pw_sync/spin_lock.h
+++ b/pw_sync/public/pw_sync/spin_lock.h
@@ -1,4 +1,4 @@
-// Copyright 2020 The Pigweed Authors
+// Copyright 2021 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
@@ -13,81 +13,14 @@
 // the License.
 #pragma once
 
-#include <stdbool.h>
-
-#include "pw_preprocessor/util.h"
+#include "pw_sync/interrupt_spin_lock.h"
 
 #ifdef __cplusplus
 
-#include "pw_sync_backend/spin_lock_native.h"
-
 namespace pw::sync {
 
-// The SpinLock is a synchronization primitive that can be used to protect
-// shared data from being simultaneously accessed by multiple threads and/or
-// IRQs as a targeted global lock (except for NMIs).
-// It offers exclusive, non-recursive ownership semantics where IRQs up to a
-// backend defined level of "NMIs" will be masked to solve priority-inversion.
-//
-// NOTE: This SpinLock relies on built-in local interrupt masking to make it IRQ
-// safe without requiring the caller to mask interrupts manually when using this
-// primitive.
-//
-// Unlike global interrupt locks, this also works safely and efficiently on SMP
-// systems. This entire API is IRQ safe.
-//
-// WARNING: Code that holds a specific SpinLock must not try to re-acquire it
-// or it will deadlock. However, it is okay to nest distinct spinlocks.
-//
-// WARNING: In order to support global statically constructed SpinLocks, the
-// backend MUST ensure that any initialization required in your environment
-// prior to the creation and/or initialization of the native semaphore
-// (e.g. kernel initialization), is done before or during the invocation of the
-// global static C++ constructors.
-class SpinLock {
- public:
-  using native_handle_type = backend::NativeSpinLockHandle;
-
-  constexpr SpinLock();
-  ~SpinLock() = default;
-  SpinLock(const SpinLock&) = delete;
-  SpinLock(SpinLock&&) = delete;
-  SpinLock& operator=(const SpinLock&) = delete;
-  SpinLock& operator=(SpinLock&&) = delete;
-
-  // Locks the spinlock, blocking indefinitely. Failures are fatal.
-  void lock();
-
-  // Attempts to lock the spinlock in a non-blocking manner.
-  // Returns true if the spinlock was successfully acquired.
-  bool try_lock();
-
-  // Unlocks the spinlock. Failures are fatal.
-  void unlock();
-
-  native_handle_type native_handle();
-
- private:
-  // This may be a wrapper around a native type with additional members.
-  backend::NativeSpinLock native_type_;
-};
+using SpinLock = InterruptSpinLock;
 
 }  // namespace pw::sync
 
-#include "pw_sync_backend/spin_lock_inline.h"
-
-using pw_sync_SpinLock = pw::sync::SpinLock;
-
-#else  // !defined(__cplusplus)
-
-typedef struct pw_sync_SpinLock pw_sync_SpinLock;
-
 #endif  // __cplusplus
-
-PW_EXTERN_C_START
-
-void pw_sync_SpinLock_Lock(pw_sync_SpinLock* spin_lock);
-bool pw_sync_SpinLock_TryLock(pw_sync_SpinLock* spin_lock);
-void pw_sync_SpinLock_Unlock(pw_sync_SpinLock* spin_lock);
-
-PW_EXTERN_C_END
diff --git a/pw_sync/spin_lock.cc b/pw_sync/spin_lock.cc
deleted file mode 100644
index 86de70b..0000000
--- a/pw_sync/spin_lock.cc
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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.
-
-#include "pw_sync/spin_lock.h"
-
-extern "C" void pw_sync_SpinLock_Lock(pw_sync_SpinLock* spin_lock) {
-  spin_lock->lock();
-}
-
-extern "C" bool pw_sync_SpinLock_TryLock(pw_sync_SpinLock* spin_lock) {
-  return spin_lock->try_lock();
-}
-
-extern "C" void pw_sync_SpinLock_Unlock(pw_sync_SpinLock* spin_lock) {
-  spin_lock->unlock();
-}
diff --git a/pw_sync/spin_lock_facade_test.cc b/pw_sync/spin_lock_facade_test.cc
deleted file mode 100644
index a373e79..0000000
--- a/pw_sync/spin_lock_facade_test.cc
+++ /dev/null
@@ -1,69 +0,0 @@
-// 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.
-
-#include "gtest/gtest.h"
-#include "pw_sync/spin_lock.h"
-
-namespace pw::sync {
-namespace {
-
-extern "C" {
-
-// Functions defined in spin_lock_facade_test_c.c which call the API from C.
-void pw_sync_SpinLock_CallLock(pw_sync_SpinLock* spin_lock);
-bool pw_sync_SpinLock_CallTryLock(pw_sync_SpinLock* spin_lock);
-void pw_sync_SpinLock_CallUnlock(pw_sync_SpinLock* spin_lock);
-
-}  // extern "C"
-
-TEST(SpinLock, LockUnlock) {
-  pw::sync::SpinLock spin_lock;
-  spin_lock.lock();
-  spin_lock.unlock();
-}
-
-// TODO(pwbug/291): Add real concurrency tests once we have pw::thread.
-
-SpinLock static_spin_lock;
-TEST(SpinLock, LockUnlockStatic) {
-  static_spin_lock.lock();
-  // Ensure it fails to lock when already held.
-  EXPECT_FALSE(static_spin_lock.try_lock());
-  static_spin_lock.unlock();
-}
-
-TEST(SpinLock, TryLockUnlock) {
-  pw::sync::SpinLock spin_lock;
-  ASSERT_TRUE(spin_lock.try_lock());
-  // Ensure it fails to lock when already held.
-  EXPECT_FALSE(spin_lock.try_lock());
-  spin_lock.unlock();
-}
-
-TEST(SpinLock, LockUnlockInC) {
-  pw::sync::SpinLock spin_lock;
-  pw_sync_SpinLock_CallLock(&spin_lock);
-  pw_sync_SpinLock_CallUnlock(&spin_lock);
-}
-
-TEST(SpinLock, TryLockUnlockInC) {
-  pw::sync::SpinLock spin_lock;
-  ASSERT_TRUE(pw_sync_SpinLock_CallTryLock(&spin_lock));
-  // Ensure it fails to lock when already held.
-  EXPECT_FALSE(pw_sync_SpinLock_CallTryLock(&spin_lock));
-  pw_sync_SpinLock_CallUnlock(&spin_lock);
-}
-
-}  // namespace
-}  // namespace pw::sync
diff --git a/pw_sync/spin_lock_facade_test_c.c b/pw_sync/spin_lock_facade_test_c.c
deleted file mode 100644
index 17d0fd04..0000000
--- a/pw_sync/spin_lock_facade_test_c.c
+++ /dev/null
@@ -1,32 +0,0 @@
-// 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.
-
-// These tests call the pw_sync module spin_lock API from C. The return values
-// are checked in the main C++ tests.
-
-#include <stdbool.h>
-
-#include "pw_sync/spin_lock.h"
-
-void pw_sync_SpinLock_CallLock(pw_sync_SpinLock* spin_lock) {
-  pw_sync_SpinLock_Lock(spin_lock);
-}
-
-bool pw_sync_SpinLock_CallTryLock(pw_sync_SpinLock* spin_lock) {
-  return pw_sync_SpinLock_TryLock(spin_lock);
-}
-
-void pw_sync_SpinLock_CallUnlock(pw_sync_SpinLock* spin_lock) {
-  pw_sync_SpinLock_Unlock(spin_lock);
-}
diff --git a/pw_sync_baremetal/BUILD b/pw_sync_baremetal/BUILD
index aa7c5c4..16774df 100644
--- a/pw_sync_baremetal/BUILD
+++ b/pw_sync_baremetal/BUILD
@@ -22,12 +22,12 @@
 licenses(["notice"])  # Apache License 2.0
 
 pw_cc_library(
-    name = "spin_lock_headers",
+    name = "interrupt_spin_lock_headers",
     hdrs = [
-        "public/pw_sync_baremetal/spin_lock_inline.h",
-        "public/pw_sync_baremetal/spin_lock_native.h",
-        "public_overrides/pw_sync_backend/spin_lock_inline.h",
-        "public_overrides/pw_sync_backend/spin_lock_native.h",
+        "public/pw_sync_baremetal/interrupt_spin_lock_inline.h",
+        "public/pw_sync_baremetal/interrupt_spin_lock_native.h",
+        "public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h",
+        "public_overrides/pw_sync_backend/interrupt_spin_lock_native.h",
     ],
     includes = [
         "public",
@@ -36,11 +36,11 @@
 )
 
 pw_cc_library(
-    name = "spin_lock",
+    name = "interrupt_spin_lock",
     deps = [
-        ":spin_lock_headers",
+        ":interrupt_spin_lock_headers",
         "//pw_assert",
-        "//pw_sync:spin_lock_facade",
+        "//pw_sync:interrupt_spin_lock_facade",
         "//pw_sync:yield_core",
     ],
 )
diff --git a/pw_sync_baremetal/BUILD.gn b/pw_sync_baremetal/BUILD.gn
index fd4fff5..fd99f4a 100644
--- a/pw_sync_baremetal/BUILD.gn
+++ b/pw_sync_baremetal/BUILD.gn
@@ -28,25 +28,29 @@
   visibility = [ ":*" ]
 }
 
-# This target provides the backend for pw::sync::SpinLock.
-# The provided implementation makes a single attempt to acquire the lock and asserts
-# if it is unavailable. It does not perform interrupt masking or disable global
-# interrupts, so this implementation does not support simultaneous multi-threaded
-# environments including IRQs, and is only meant to prevent data corruption.
-pw_source_set("spin_lock_backend") {
+# This target provides the backend for pw::sync::InterruptSpinLock.
+# The provided implementation makes a single attempt to acquire the lock and
+# asserts if it is unavailable. It does not perform interrupt masking or disable
+# global interrupts, so this implementation does not support simultaneous
+# multi-threaded environments including IRQs, and is only meant to prevent
+# data corruption.
+pw_source_set("spin_lock") {
+  public_deps = [ ":interrupt_spin_lock" ]
+}
+pw_source_set("interrupt_spin_lock") {
   public_configs = [
     ":public_include_path",
     ":backend_config",
   ]
   public = [
-    "public/pw_sync_baremetal/spin_lock_inline.h",
-    "public/pw_sync_baremetal/spin_lock_native.h",
-    "public_overrides/pw_sync_backend/spin_lock_inline.h",
-    "public_overrides/pw_sync_backend/spin_lock_native.h",
+    "public/pw_sync_baremetal/interrupt_spin_lock_inline.h",
+    "public/pw_sync_baremetal/interrupt_spin_lock_native.h",
+    "public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h",
+    "public_overrides/pw_sync_backend/interrupt_spin_lock_native.h",
   ]
   public_deps = [
     "$dir_pw_assert",
-    "$dir_pw_sync:spin_lock.facade",
+    "$dir_pw_sync:interrupt_spin_lock.facade",
     "$dir_pw_sync:yield_core",
   ]
 }
diff --git a/pw_sync_baremetal/public/pw_sync_baremetal/spin_lock_inline.h b/pw_sync_baremetal/public/pw_sync_baremetal/interrupt_spin_lock_inline.h
similarity index 73%
rename from pw_sync_baremetal/public/pw_sync_baremetal/spin_lock_inline.h
rename to pw_sync_baremetal/public/pw_sync_baremetal/interrupt_spin_lock_inline.h
index 3ed9562..369c956 100644
--- a/pw_sync_baremetal/public/pw_sync_baremetal/spin_lock_inline.h
+++ b/pw_sync_baremetal/public/pw_sync_baremetal/interrupt_spin_lock_inline.h
@@ -14,25 +14,26 @@
 #pragma once
 
 #include "pw_assert/light.h"
-#include "pw_sync/spin_lock.h"
+#include "pw_sync/interrupt_spin_lock.h"
 #include "pw_sync/yield_core.h"
 
 namespace pw::sync {
 
-constexpr SpinLock::SpinLock() : native_type_() {}
+constexpr InterruptSpinLock::InterruptSpinLock() : native_type_() {}
 
-inline void SpinLock::lock() { PW_ASSERT(try_lock()); }
+inline void InterruptSpinLock::lock() { PW_ASSERT(try_lock()); }
 
-inline bool SpinLock::try_lock() {
+inline bool InterruptSpinLock::try_lock() {
   // TODO(pwbug/303): Use the pw_interrupt API here to disable interrupts.
   return !native_type_.test_and_set(std::memory_order_acquire);
 }
 
-inline void SpinLock::unlock() {
+inline void InterruptSpinLock::unlock() {
   native_type_.clear(std::memory_order_release);
 }
 
-inline SpinLock::native_handle_type SpinLock::native_handle() {
+inline InterruptSpinLock::native_handle_type
+InterruptSpinLock::native_handle() {
   return native_type_;
 }
 
diff --git a/pw_sync_baremetal/public/pw_sync_baremetal/spin_lock_native.h b/pw_sync_baremetal/public/pw_sync_baremetal/interrupt_spin_lock_native.h
similarity index 86%
rename from pw_sync_baremetal/public/pw_sync_baremetal/spin_lock_native.h
rename to pw_sync_baremetal/public/pw_sync_baremetal/interrupt_spin_lock_native.h
index 6bb6abd..1e23501 100644
--- a/pw_sync_baremetal/public/pw_sync_baremetal/spin_lock_native.h
+++ b/pw_sync_baremetal/public/pw_sync_baremetal/interrupt_spin_lock_native.h
@@ -17,7 +17,7 @@
 
 namespace pw::sync::backend {
 
-using NativeSpinLock = std::atomic_flag;
-using NativeSpinLockHandle = std::atomic_flag&;
+using NativeInterruptSpinLock = std::atomic_flag;
+using NativeInterruptSpinLockHandle = std::atomic_flag&;
 
 }  // namespace pw::sync::backend
diff --git a/pw_sync_baremetal/public_overrides/pw_sync_backend/spin_lock_inline.h b/pw_sync_baremetal/public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h
similarity index 91%
rename from pw_sync_baremetal/public_overrides/pw_sync_backend/spin_lock_inline.h
rename to pw_sync_baremetal/public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h
index 65a64b0..bd40b93 100644
--- a/pw_sync_baremetal/public_overrides/pw_sync_backend/spin_lock_inline.h
+++ b/pw_sync_baremetal/public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h
@@ -13,4 +13,4 @@
 // the License.
 #pragma once
 
-#include "pw_sync_baremetal/spin_lock_inline.h"
+#include "pw_sync_baremetal/interrupt_spin_lock_inline.h"
diff --git a/pw_sync_baremetal/public_overrides/pw_sync_backend/spin_lock_native.h b/pw_sync_baremetal/public_overrides/pw_sync_backend/interrupt_spin_lock_native.h
similarity index 91%
rename from pw_sync_baremetal/public_overrides/pw_sync_backend/spin_lock_native.h
rename to pw_sync_baremetal/public_overrides/pw_sync_backend/interrupt_spin_lock_native.h
index ed8ad48..cbe2f87 100644
--- a/pw_sync_baremetal/public_overrides/pw_sync_backend/spin_lock_native.h
+++ b/pw_sync_baremetal/public_overrides/pw_sync_backend/interrupt_spin_lock_native.h
@@ -13,4 +13,4 @@
 // the License.
 #pragma once
 
-#include "pw_sync_baremetal/spin_lock_native.h"
+#include "pw_sync_baremetal/interrupt_spin_lock_native.h"
diff --git a/pw_sync_embos/BUILD b/pw_sync_embos/BUILD
index 98e4739..1adc21c 100644
--- a/pw_sync_embos/BUILD
+++ b/pw_sync_embos/BUILD
@@ -119,12 +119,12 @@
 )
 
 pw_cc_library(
-    name = "spin_lock_headers",
+    name = "interrupt_spin_lock_headers",
     hdrs = [
-        "public/pw_sync_embos/spin_lock_inline.h",
-        "public/pw_sync_embos/spin_lock_native.h",
-        "public_overrides/pw_sync_backend/spin_lock_inline.h",
-        "public_overrides/pw_sync_backend/spin_lock_native.h",
+        "public/pw_sync_embos/interrupt_spin_lock_inline.h",
+        "public/pw_sync_embos/interrupt_spin_lock_native.h",
+        "public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h",
+        "public_overrides/pw_sync_backend/interrupt_spin_lock_native.h",
     ],
     includes = [
         "public",
@@ -135,13 +135,13 @@
 )
 
 pw_cc_library(
-    name = "spin_lock",
+    name = "interrupt_spin_lock",
     srcs = [
-        "spin_lock.cc",
+        "interrupt_spin_lock.cc",
     ],
     deps = [
-        ":spin_lock_headers",
-        "//pw_sync:spin_lock_facade",
+        ":interrupt_spin_lock_headers",
+        "//pw_sync:interrupt_spin_lock_facade",
     ],
 )
 
diff --git a/pw_sync_embos/BUILD.gn b/pw_sync_embos/BUILD.gn
index abc95d7..fe19f24 100644
--- a/pw_sync_embos/BUILD.gn
+++ b/pw_sync_embos/BUILD.gn
@@ -112,23 +112,26 @@
           "pw::chrono::SystemClock backend.")
 }
 
-# This target provides the backend for pw::sync::SpinLock.
+# This target provides the backend for pw::sync::InterruptSpinLock.
 pw_source_set("spin_lock") {
+  public_deps = [ ":interrupt_spin_lock" ]
+}
+pw_source_set("interrupt_spin_lock") {
   public_configs = [
     ":public_include_path",
     ":backend_config",
   ]
   public = [
-    "public/pw_sync_embos/spin_lock_inline.h",
-    "public/pw_sync_embos/spin_lock_native.h",
-    "public_overrides/pw_sync_backend/spin_lock_inline.h",
-    "public_overrides/pw_sync_backend/spin_lock_native.h",
+    "public/pw_sync_embos/interrupt_spin_lock_inline.h",
+    "public/pw_sync_embos/interrupt_spin_lock_native.h",
+    "public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h",
+    "public_overrides/pw_sync_backend/interrupt_spin_lock_native.h",
   ]
   public_deps = [ "$dir_pw_third_party/embos" ]
-  sources = [ "spin_lock.cc" ]
+  sources = [ "interrupt_spin_lock.cc" ]
   deps = [
     "$dir_pw_assert",
-    "$dir_pw_sync:spin_lock.facade",
+    "$dir_pw_sync:interrupt_spin_lock.facade",
     "$dir_pw_third_party/embos",
   ]
 }
diff --git a/pw_sync_embos/spin_lock.cc b/pw_sync_embos/interrupt_spin_lock.cc
similarity index 85%
rename from pw_sync_embos/spin_lock.cc
rename to pw_sync_embos/interrupt_spin_lock.cc
index 2a5405a..9d17ba6 100644
--- a/pw_sync_embos/spin_lock.cc
+++ b/pw_sync_embos/interrupt_spin_lock.cc
@@ -12,22 +12,22 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-#include "pw_sync/spin_lock.h"
+#include "pw_sync/interrupt_spin_lock.h"
 
 #include "RTOS.h"
 #include "pw_assert/assert.h"
 
 namespace pw::sync {
 
-void SpinLock::lock() {
+void InterruptSpinLock::lock() {
   OS_IncDI();
   // We can't deadlock here so crash instead.
   PW_CHECK(!native_type_.locked.load(std::memory_order_relaxed),
-           "Recursive SpinLock::lock() detected");
+           "Recursive InterruptSpinLock::lock() detected");
   native_type_.locked.store(true, std::memory_order_relaxed);
 }
 
-bool SpinLock::try_lock() {
+bool InterruptSpinLock::try_lock() {
   OS_IncDI();
   if (native_type_.locked.load(std::memory_order_relaxed)) {
     OS_DecRI();  // Already locked, restore interrupts and bail out.
@@ -37,7 +37,7 @@
   return true;
 }
 
-void SpinLock::unlock() {
+void InterruptSpinLock::unlock() {
   native_type_.locked.store(false, std::memory_order_relaxed);
   OS_DecRI();
 }
diff --git a/pw_sync_embos/public/pw_sync_embos/spin_lock_inline.h b/pw_sync_embos/public/pw_sync_embos/interrupt_spin_lock_inline.h
similarity index 76%
rename from pw_sync_embos/public/pw_sync_embos/spin_lock_inline.h
rename to pw_sync_embos/public/pw_sync_embos/interrupt_spin_lock_inline.h
index 697de73..0484b3c 100644
--- a/pw_sync_embos/public/pw_sync_embos/spin_lock_inline.h
+++ b/pw_sync_embos/public/pw_sync_embos/interrupt_spin_lock_inline.h
@@ -13,13 +13,15 @@
 // the License.
 #pragma once
 
-#include "pw_sync/spin_lock.h"
+#include "pw_sync/interrupt_spin_lock.h"
 
 namespace pw::sync {
 
-constexpr SpinLock::SpinLock() : native_type_{.locked{false}} {}
+constexpr InterruptSpinLock::InterruptSpinLock()
+    : native_type_{.locked{false}} {}
 
-inline SpinLock::native_handle_type SpinLock::native_handle() {
+inline InterruptSpinLock::native_handle_type
+InterruptSpinLock::native_handle() {
   return native_type_;
 }
 
diff --git a/pw_sync_embos/public/pw_sync_embos/spin_lock_native.h b/pw_sync_embos/public/pw_sync_embos/interrupt_spin_lock_native.h
similarity index 88%
rename from pw_sync_embos/public/pw_sync_embos/spin_lock_native.h
rename to pw_sync_embos/public/pw_sync_embos/interrupt_spin_lock_native.h
index 42e7e42..3c91f64 100644
--- a/pw_sync_embos/public/pw_sync_embos/spin_lock_native.h
+++ b/pw_sync_embos/public/pw_sync_embos/interrupt_spin_lock_native.h
@@ -19,9 +19,9 @@
 
 namespace pw::sync::backend {
 
-struct NativeSpinLock {
+struct NativeInterruptSpinLock {
   std::atomic<bool> locked;  // Used to detect recursion.
 };
-using NativeSpinLockHandle = NativeSpinLock&;
+using NativeInterruptSpinLockHandle = NativeInterruptSpinLock&;
 
 }  // namespace pw::sync::backend
diff --git a/pw_sync_baremetal/public_overrides/pw_sync_backend/spin_lock_native.h b/pw_sync_embos/public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h
similarity index 91%
copy from pw_sync_baremetal/public_overrides/pw_sync_backend/spin_lock_native.h
copy to pw_sync_embos/public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h
index ed8ad48..137d3dc 100644
--- a/pw_sync_baremetal/public_overrides/pw_sync_backend/spin_lock_native.h
+++ b/pw_sync_embos/public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h
@@ -13,4 +13,4 @@
 // the License.
 #pragma once
 
-#include "pw_sync_baremetal/spin_lock_native.h"
+#include "pw_sync_embos/interrupt_spin_lock_inline.h"
diff --git a/pw_sync_baremetal/public_overrides/pw_sync_backend/spin_lock_native.h b/pw_sync_embos/public_overrides/pw_sync_backend/interrupt_spin_lock_native.h
similarity index 91%
copy from pw_sync_baremetal/public_overrides/pw_sync_backend/spin_lock_native.h
copy to pw_sync_embos/public_overrides/pw_sync_backend/interrupt_spin_lock_native.h
index ed8ad48..e4e36f9 100644
--- a/pw_sync_baremetal/public_overrides/pw_sync_backend/spin_lock_native.h
+++ b/pw_sync_embos/public_overrides/pw_sync_backend/interrupt_spin_lock_native.h
@@ -13,4 +13,4 @@
 // the License.
 #pragma once
 
-#include "pw_sync_baremetal/spin_lock_native.h"
+#include "pw_sync_embos/interrupt_spin_lock_native.h"
diff --git a/pw_sync_embos/public_overrides/pw_sync_backend/spin_lock_inline.h b/pw_sync_embos/public_overrides/pw_sync_backend/spin_lock_inline.h
deleted file mode 100644
index 434f3bc..0000000
--- a/pw_sync_embos/public_overrides/pw_sync_backend/spin_lock_inline.h
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2021 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.
-#pragma once
-
-#include "pw_sync_embos/spin_lock_inline.h"
diff --git a/pw_sync_embos/public_overrides/pw_sync_backend/spin_lock_native.h b/pw_sync_embos/public_overrides/pw_sync_backend/spin_lock_native.h
deleted file mode 100644
index 6d8075a..0000000
--- a/pw_sync_embos/public_overrides/pw_sync_backend/spin_lock_native.h
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2021 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.
-#pragma once
-
-#include "pw_sync_embos/spin_lock_native.h"
diff --git a/pw_sync_freertos/BUILD b/pw_sync_freertos/BUILD
index 5837d8f..f82c95a 100644
--- a/pw_sync_freertos/BUILD
+++ b/pw_sync_freertos/BUILD
@@ -118,12 +118,12 @@
 )
 
 pw_cc_library(
-    name = "spin_lock_headers",
+    name = "interrupt_spin_lock_headers",
     hdrs = [
-        "public/pw_sync_freertos/spin_lock_inline.h",
-        "public/pw_sync_freertos/spin_lock_native.h",
-        "public_overrides/pw_sync_backend/spin_lock_inline.h",
-        "public_overrides/pw_sync_backend/spin_lock_native.h",
+        "public/pw_sync_freertos/interrupt_spin_lock_inline.h",
+        "public/pw_sync_freertos/interrupt_spin_lock_native.h",
+        "public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h",
+        "public_overrides/pw_sync_backend/interrupt_spin_lock_native.h",
     ],
     includes = [
         "public",
@@ -134,13 +134,13 @@
 )
 
 pw_cc_library(
-    name = "spin_lock",
+    name = "interrupt_spin_lock",
     srcs = [
-        "spin_lock.cc",
+        "interrupt_spin_lock.cc",
     ],
     deps = [
-        ":spin_lock_headers",
+        ":interrupt_spin_lock_headers",
         "//pw_interrupt:context",
-        "//pw_sync:spin_lock_facade",
+        "//pw_sync:interrupt_spin_lock_facade",
     ],
 )
diff --git a/pw_sync_freertos/BUILD.gn b/pw_sync_freertos/BUILD.gn
index 8869db5..f539afc 100644
--- a/pw_sync_freertos/BUILD.gn
+++ b/pw_sync_freertos/BUILD.gn
@@ -112,24 +112,27 @@
              "pw::chrono::SystemClock backend.")
 }
 
-# This target provides the backend for pw::sync::SpinLock.
+# This target provides the backend for pw::sync::InterruptSpinLock.
 pw_source_set("spin_lock") {
+  public_deps = [ ":interrupt_spin_lock" ]
+}
+pw_source_set("interrupt_spin_lock") {
   public_configs = [
     ":public_include_path",
     ":backend_config",
   ]
   public = [
-    "public/pw_sync_freertos/spin_lock_inline.h",
-    "public/pw_sync_freertos/spin_lock_native.h",
-    "public_overrides/pw_sync_backend/spin_lock_inline.h",
-    "public_overrides/pw_sync_backend/spin_lock_native.h",
+    "public/pw_sync_freertos/interrupt_spin_lock_inline.h",
+    "public/pw_sync_freertos/interrupt_spin_lock_native.h",
+    "public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h",
+    "public_overrides/pw_sync_backend/interrupt_spin_lock_native.h",
   ]
   public_deps = [ "$dir_pw_third_party/freertos" ]
-  sources = [ "spin_lock.cc" ]
+  sources = [ "interrupt_spin_lock.cc" ]
   deps = [
     "$dir_pw_assert",
     "$dir_pw_interrupt:context",
-    "$dir_pw_sync:spin_lock.facade",
+    "$dir_pw_sync:interrupt_spin_lock.facade",
     "$dir_pw_third_party/freertos",
   ]
 }
diff --git a/pw_sync_freertos/spin_lock.cc b/pw_sync_freertos/interrupt_spin_lock.cc
similarity index 90%
rename from pw_sync_freertos/spin_lock.cc
rename to pw_sync_freertos/interrupt_spin_lock.cc
index b7898f8..7c96aa8 100644
--- a/pw_sync_freertos/spin_lock.cc
+++ b/pw_sync_freertos/interrupt_spin_lock.cc
@@ -12,7 +12,7 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-#include "pw_sync/spin_lock.h"
+#include "pw_sync/interrupt_spin_lock.h"
 
 #include "pw_assert/assert.h"
 #include "pw_interrupt/context.h"
@@ -20,7 +20,7 @@
 
 namespace pw::sync {
 
-void SpinLock::lock() {
+void InterruptSpinLock::lock() {
   if (interrupt::InInterruptContext()) {
     native_type_.saved_interrupt_mask = taskENTER_CRITICAL_FROM_ISR();
   } else {  // Task context
@@ -28,11 +28,11 @@
   }
   // We can't deadlock here so crash instead.
   PW_CHECK(!native_type_.locked.load(std::memory_order_relaxed),
-           "Recursive SpinLock::lock() detected");
+           "Recursive InterruptSpinLock::lock() detected");
   native_type_.locked.store(true, std::memory_order_relaxed);
 }
 
-bool SpinLock::try_lock() {
+bool InterruptSpinLock::try_lock() {
   if (interrupt::InInterruptContext()) {
     UBaseType_t saved_interrupt_mask = taskENTER_CRITICAL_FROM_ISR();
     if (native_type_.locked.load(std::memory_order_relaxed)) {
@@ -53,7 +53,7 @@
   return true;
 }
 
-void SpinLock::unlock() {
+void InterruptSpinLock::unlock() {
   native_type_.locked.store(false, std::memory_order_relaxed);
   if (interrupt::InInterruptContext()) {
     taskEXIT_CRITICAL_FROM_ISR(native_type_.saved_interrupt_mask);
diff --git a/pw_sync_freertos/public/pw_sync_freertos/spin_lock_inline.h b/pw_sync_freertos/public/pw_sync_freertos/interrupt_spin_lock_inline.h
similarity index 81%
rename from pw_sync_freertos/public/pw_sync_freertos/spin_lock_inline.h
rename to pw_sync_freertos/public/pw_sync_freertos/interrupt_spin_lock_inline.h
index ae08b0d..8bbd4cf 100644
--- a/pw_sync_freertos/public/pw_sync_freertos/spin_lock_inline.h
+++ b/pw_sync_freertos/public/pw_sync_freertos/interrupt_spin_lock_inline.h
@@ -13,14 +13,15 @@
 // the License.
 #pragma once
 
-#include "pw_sync/spin_lock.h"
+#include "pw_sync/interrupt_spin_lock.h"
 
 namespace pw::sync {
 
-constexpr SpinLock::SpinLock()
+constexpr InterruptSpinLock::InterruptSpinLock()
     : native_type_{.locked{false}, .saved_interrupt_mask = 0} {}
 
-inline SpinLock::native_handle_type SpinLock::native_handle() {
+inline InterruptSpinLock::native_handle_type
+InterruptSpinLock::native_handle() {
   return native_type_;
 }
 
diff --git a/pw_sync_freertos/public/pw_sync_freertos/spin_lock_native.h b/pw_sync_freertos/public/pw_sync_freertos/interrupt_spin_lock_native.h
similarity index 89%
rename from pw_sync_freertos/public/pw_sync_freertos/spin_lock_native.h
rename to pw_sync_freertos/public/pw_sync_freertos/interrupt_spin_lock_native.h
index c291e4a..ac476dc 100644
--- a/pw_sync_freertos/public/pw_sync_freertos/spin_lock_native.h
+++ b/pw_sync_freertos/public/pw_sync_freertos/interrupt_spin_lock_native.h
@@ -19,10 +19,10 @@
 
 namespace pw::sync::backend {
 
-struct NativeSpinLock {
+struct NativeInterruptSpinLock {
   std::atomic<bool> locked;  // Used to detect recursion.
   UBaseType_t saved_interrupt_mask;
 };
-using NativeSpinLockHandle = NativeSpinLock&;
+using NativeInterruptSpinLockHandle = NativeInterruptSpinLock&;
 
 }  // namespace pw::sync::backend
diff --git a/pw_sync_freertos/public_overrides/pw_sync_backend/spin_lock_native.h b/pw_sync_freertos/public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h
similarity index 91%
copy from pw_sync_freertos/public_overrides/pw_sync_backend/spin_lock_native.h
copy to pw_sync_freertos/public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h
index 103292e..ad3195f 100644
--- a/pw_sync_freertos/public_overrides/pw_sync_backend/spin_lock_native.h
+++ b/pw_sync_freertos/public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h
@@ -13,4 +13,4 @@
 // the License.
 #pragma once
 
-#include "pw_sync_freertos/spin_lock_native.h"
+#include "pw_sync_freertos/interrupt_spin_lock_inline.h"
diff --git a/pw_sync_freertos/public_overrides/pw_sync_backend/spin_lock_native.h b/pw_sync_freertos/public_overrides/pw_sync_backend/interrupt_spin_lock_native.h
similarity index 91%
rename from pw_sync_freertos/public_overrides/pw_sync_backend/spin_lock_native.h
rename to pw_sync_freertos/public_overrides/pw_sync_backend/interrupt_spin_lock_native.h
index 103292e..c9768b3 100644
--- a/pw_sync_freertos/public_overrides/pw_sync_backend/spin_lock_native.h
+++ b/pw_sync_freertos/public_overrides/pw_sync_backend/interrupt_spin_lock_native.h
@@ -13,4 +13,4 @@
 // the License.
 #pragma once
 
-#include "pw_sync_freertos/spin_lock_native.h"
+#include "pw_sync_freertos/interrupt_spin_lock_native.h"
diff --git a/pw_sync_stl/BUILD b/pw_sync_stl/BUILD
index 97dc246..9ee8784 100644
--- a/pw_sync_stl/BUILD
+++ b/pw_sync_stl/BUILD
@@ -106,12 +106,12 @@
 )
 
 pw_cc_library(
-    name = "spin_lock_headers",
+    name = "interrupt_spin_lock_headers",
     hdrs = [
-        "public/pw_sync_stl/spin_lock_inline.h",
-        "public/pw_sync_stl/spin_lock_native.h",
-        "public_overrides/pw_sync_backend/spin_lock_inline.h",
-        "public_overrides/pw_sync_backend/spin_lock_native.h",
+        "public/pw_sync_stl/interrupt_spin_lock_inline.h",
+        "public/pw_sync_stl/interrupt_spin_lock_native.h",
+        "public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h",
+        "public_overrides/pw_sync_backend/interrupt_spin_lock_native.h",
     ],
     includes = [
         "public",
@@ -120,10 +120,10 @@
 )
 
 pw_cc_library(
-    name = "spin_lock",
+    name = "interrupt_spin_lock",
     deps = [
-        ":spin_lock_headers",
-        "//pw_sync:spin_lock_facade",
+        ":interrupt_spin_lock_headers",
+        "//pw_sync:interrupt_spin_lock_facade",
         "//pw_sync:yield_core",
     ],
 )
diff --git a/pw_sync_stl/BUILD.gn b/pw_sync_stl/BUILD.gn
index f3fdebb..5ac5185 100644
--- a/pw_sync_stl/BUILD.gn
+++ b/pw_sync_stl/BUILD.gn
@@ -101,20 +101,23 @@
           "pw::chrono::SystemClock backend.")
 }
 
-# This target provides the backend for pw::sync::SpinLock.
-pw_source_set("spin_lock_backend") {
+# This target provides the backend for pw::sync::InterruptSpinLock.
+pw_source_set("spin_lock") {
+  public_deps = [ ":interrupt_spin_lock" ]
+}
+pw_source_set("interrupt_spin_lock") {
   public_configs = [
     ":public_include_path",
     ":backend_config",
   ]
   public = [
-    "public/pw_sync_stl/spin_lock_inline.h",
-    "public/pw_sync_stl/spin_lock_native.h",
-    "public_overrides/pw_sync_backend/spin_lock_inline.h",
-    "public_overrides/pw_sync_backend/spin_lock_native.h",
+    "public/pw_sync_stl/interrupt_spin_lock_inline.h",
+    "public/pw_sync_stl/interrupt_spin_lock_native.h",
+    "public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h",
+    "public_overrides/pw_sync_backend/interrupt_spin_lock_native.h",
   ]
   public_deps = [
-    "$dir_pw_sync:spin_lock.facade",
+    "$dir_pw_sync:interrupt_spin_lock.facade",
     "$dir_pw_sync:yield_core",
   ]
 }
diff --git a/pw_sync_stl/public/pw_sync_stl/spin_lock_inline.h b/pw_sync_stl/public/pw_sync_stl/interrupt_spin_lock_inline.h
similarity index 74%
rename from pw_sync_stl/public/pw_sync_stl/spin_lock_inline.h
rename to pw_sync_stl/public/pw_sync_stl/interrupt_spin_lock_inline.h
index a50c231..3a028b3 100644
--- a/pw_sync_stl/public/pw_sync_stl/spin_lock_inline.h
+++ b/pw_sync_stl/public/pw_sync_stl/interrupt_spin_lock_inline.h
@@ -13,28 +13,29 @@
 // the License.
 #pragma once
 
-#include "pw_sync/spin_lock.h"
+#include "pw_sync/interrupt_spin_lock.h"
 #include "pw_sync/yield_core.h"
 
 namespace pw::sync {
 
-constexpr SpinLock::SpinLock() : native_type_() {}
+constexpr InterruptSpinLock::InterruptSpinLock() : native_type_() {}
 
-inline void SpinLock::lock() {
+inline void InterruptSpinLock::lock() {
   while (!try_lock()) {
     PW_SYNC_YIELD_CORE_FOR_SMT();
   }
 }
 
-inline bool SpinLock::try_lock() {
+inline bool InterruptSpinLock::try_lock() {
   return !native_type_.test_and_set(std::memory_order_acquire);
 }
 
-inline void SpinLock::unlock() {
+inline void InterruptSpinLock::unlock() {
   native_type_.clear(std::memory_order_release);
 }
 
-inline SpinLock::native_handle_type SpinLock::native_handle() {
+inline InterruptSpinLock::native_handle_type
+InterruptSpinLock::native_handle() {
   return native_type_;
 }
 
diff --git a/pw_sync_stl/public/pw_sync_stl/spin_lock_native.h b/pw_sync_stl/public/pw_sync_stl/interrupt_spin_lock_native.h
similarity index 86%
rename from pw_sync_stl/public/pw_sync_stl/spin_lock_native.h
rename to pw_sync_stl/public/pw_sync_stl/interrupt_spin_lock_native.h
index 3358f8b..21f1646 100644
--- a/pw_sync_stl/public/pw_sync_stl/spin_lock_native.h
+++ b/pw_sync_stl/public/pw_sync_stl/interrupt_spin_lock_native.h
@@ -17,7 +17,7 @@
 
 namespace pw::sync::backend {
 
-using NativeSpinLock = std::atomic_flag;
-using NativeSpinLockHandle = std::atomic_flag&;
+using NativeInterruptSpinLock = std::atomic_flag;
+using NativeInterruptSpinLockHandle = std::atomic_flag&;
 
 }  // namespace pw::sync::backend
diff --git a/pw_sync_stl/public_overrides/pw_sync_backend/spin_lock_inline.h b/pw_sync_stl/public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h
similarity index 92%
rename from pw_sync_stl/public_overrides/pw_sync_backend/spin_lock_inline.h
rename to pw_sync_stl/public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h
index 57c17c2..2bfe80d 100644
--- a/pw_sync_stl/public_overrides/pw_sync_backend/spin_lock_inline.h
+++ b/pw_sync_stl/public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h
@@ -13,4 +13,4 @@
 // the License.
 #pragma once
 
-#include "pw_sync_stl/spin_lock_inline.h"
+#include "pw_sync_stl/interrupt_spin_lock_inline.h"
diff --git a/pw_sync_stl/public_overrides/pw_sync_backend/spin_lock_native.h b/pw_sync_stl/public_overrides/pw_sync_backend/interrupt_spin_lock_native.h
similarity index 92%
rename from pw_sync_stl/public_overrides/pw_sync_backend/spin_lock_native.h
rename to pw_sync_stl/public_overrides/pw_sync_backend/interrupt_spin_lock_native.h
index 41ff621..cdd0685 100644
--- a/pw_sync_stl/public_overrides/pw_sync_backend/spin_lock_native.h
+++ b/pw_sync_stl/public_overrides/pw_sync_backend/interrupt_spin_lock_native.h
@@ -13,4 +13,4 @@
 // the License.
 #pragma once
 
-#include "pw_sync_stl/spin_lock_native.h"
+#include "pw_sync_stl/interrupt_spin_lock_native.h"
diff --git a/pw_sync_threadx/BUILD b/pw_sync_threadx/BUILD
index 7b25c93..837ed0f 100644
--- a/pw_sync_threadx/BUILD
+++ b/pw_sync_threadx/BUILD
@@ -118,12 +118,12 @@
 )
 
 pw_cc_library(
-    name = "spin_lock_headers",
+    name = "interrupt_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",
+        "public/pw_sync_threadx/interrupt_spin_lock_inline.h",
+        "public/pw_sync_threadx/interrupt_spin_lock_native.h",
+        "public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h",
+        "public_overrides/pw_sync_backend/interrupt_spin_lock_native.h",
     ],
     includes = [
         "public",
@@ -134,12 +134,12 @@
 )
 
 pw_cc_library(
-    name = "spin_lock",
+    name = "interrupt_spin_lock",
     srcs = [
-        "spin_lock.cc",
+        "interrupt_spin_lock.cc",
     ],
     deps = [
-        ":spin_lock_headers",
-        "//pw_sync:spin_lock_facade",
+        ":interrupt_spin_lock_headers",
+        "//pw_sync:interrupt_spin_lock_facade",
     ],
 )
diff --git a/pw_sync_threadx/BUILD.gn b/pw_sync_threadx/BUILD.gn
index 0b6e478..046d8e0 100644
--- a/pw_sync_threadx/BUILD.gn
+++ b/pw_sync_threadx/BUILD.gn
@@ -122,24 +122,27 @@
   }
 }
 
-# This target provides the backend for pw::sync::SpinLock, note that this
-# implementation does NOT support ThreadX w/ SMP.
+# This target provides the backend for pw::sync::InterruptSpinLock, note that
+# this implementation does NOT support ThreadX w/ SMP.
 pw_source_set("spin_lock") {
+  public_deps = [ ":interrupt_spin_lock" ]
+}
+pw_source_set("interrupt_spin_lock") {
   public_configs = [
     ":public_include_path",
     ":backend_config",
   ]
   public = [
-    "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",
+    "public/pw_sync_threadx/interrupt_spin_lock_inline.h",
+    "public/pw_sync_threadx/interrupt_spin_lock_native.h",
+    "public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h",
+    "public_overrides/pw_sync_backend/interrupt_spin_lock_native.h",
   ]
   public_deps = [ "$dir_pw_third_party/threadx" ]
-  sources = [ "spin_lock.cc" ]
+  sources = [ "interrupt_spin_lock.cc" ]
   deps = [
     "$dir_pw_assert",
-    "$dir_pw_sync:spin_lock.facade",
+    "$dir_pw_sync:interrupt_spin_lock.facade",
   ]
 }
 
diff --git a/pw_sync_threadx/spin_lock.cc b/pw_sync_threadx/interrupt_spin_lock.cc
similarity index 82%
rename from pw_sync_threadx/spin_lock.cc
rename to pw_sync_threadx/interrupt_spin_lock.cc
index 6d8f277..96d5c54 100644
--- a/pw_sync_threadx/spin_lock.cc
+++ b/pw_sync_threadx/interrupt_spin_lock.cc
@@ -12,15 +12,15 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-#include "pw_sync/spin_lock.h"
+#include "pw_sync/interrupt_spin_lock.h"
 
 #include "pw_assert/assert.h"
 #include "tx_api.h"
 
 namespace pw::sync {
 
-void SpinLock::lock() {
-  // In order to be pw::sync::SpinLock compliant, mask the interrupts
+void InterruptSpinLock::lock() {
+  // In order to be pw::sync::InterruptSpinLock compliant, mask the interrupts
   // before attempting to grab the internal spin lock.
   native_type_.saved_interrupt_mask = tx_interrupt_control(TX_INT_DISABLE);
 
@@ -28,13 +28,13 @@
   // deadlock here due to the global interrupt lock, so we crash on recursion
   // on a specific spinlock instead.
   PW_CHECK(!native_type_.locked.load(std::memory_order_relaxed),
-           "Recursive SpinLock::lock() detected");
+           "Recursive InterruptSpinLock::lock() detected");
 
   native_type_.locked.store(true, std::memory_order_relaxed);
 }
 
-bool SpinLock::try_lock() {
-  // In order to be pw::sync::SpinLock compliant, mask the interrupts
+bool InterruptSpinLock::try_lock() {
+  // In order to be pw::sync::InterruptSpinLock compliant, mask the interrupts
   // before attempting to grab the internal spin lock.
   UINT saved_interrupt_mask = tx_interrupt_control(TX_INT_DISABLE);
 
@@ -49,7 +49,7 @@
   return true;
 }
 
-void SpinLock::unlock() {
+void InterruptSpinLock::unlock() {
   native_type_.locked.store(false, std::memory_order_relaxed);
   tx_interrupt_control(native_type_.saved_interrupt_mask);
 }
diff --git a/pw_sync_threadx/public/pw_sync_threadx/spin_lock_inline.h b/pw_sync_threadx/public/pw_sync_threadx/interrupt_spin_lock_inline.h
similarity index 81%
rename from pw_sync_threadx/public/pw_sync_threadx/spin_lock_inline.h
rename to pw_sync_threadx/public/pw_sync_threadx/interrupt_spin_lock_inline.h
index ae08b0d..8bbd4cf 100644
--- a/pw_sync_threadx/public/pw_sync_threadx/spin_lock_inline.h
+++ b/pw_sync_threadx/public/pw_sync_threadx/interrupt_spin_lock_inline.h
@@ -13,14 +13,15 @@
 // the License.
 #pragma once
 
-#include "pw_sync/spin_lock.h"
+#include "pw_sync/interrupt_spin_lock.h"
 
 namespace pw::sync {
 
-constexpr SpinLock::SpinLock()
+constexpr InterruptSpinLock::InterruptSpinLock()
     : native_type_{.locked{false}, .saved_interrupt_mask = 0} {}
 
-inline SpinLock::native_handle_type SpinLock::native_handle() {
+inline InterruptSpinLock::native_handle_type
+InterruptSpinLock::native_handle() {
   return native_type_;
 }
 
diff --git a/pw_sync_threadx/public/pw_sync_threadx/spin_lock_native.h b/pw_sync_threadx/public/pw_sync_threadx/interrupt_spin_lock_native.h
similarity index 89%
rename from pw_sync_threadx/public/pw_sync_threadx/spin_lock_native.h
rename to pw_sync_threadx/public/pw_sync_threadx/interrupt_spin_lock_native.h
index 7756abc..cf6ceb8 100644
--- a/pw_sync_threadx/public/pw_sync_threadx/spin_lock_native.h
+++ b/pw_sync_threadx/public/pw_sync_threadx/interrupt_spin_lock_native.h
@@ -19,10 +19,10 @@
 
 namespace pw::sync::backend {
 
-struct NativeSpinLock {
+struct NativeInterruptSpinLock {
   std::atomic<bool> locked;  // Used to detect recursion.
   UINT saved_interrupt_mask;
 };
-using NativeSpinLockHandle = NativeSpinLock&;
+using NativeInterruptSpinLockHandle = NativeInterruptSpinLock&;
 
 }  // namespace pw::sync::backend
diff --git a/pw_sync_freertos/public_overrides/pw_sync_backend/spin_lock_inline.h b/pw_sync_threadx/public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h
similarity index 91%
rename from pw_sync_freertos/public_overrides/pw_sync_backend/spin_lock_inline.h
rename to pw_sync_threadx/public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h
index 94e44eb..c42d7f9 100644
--- a/pw_sync_freertos/public_overrides/pw_sync_backend/spin_lock_inline.h
+++ b/pw_sync_threadx/public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h
@@ -13,4 +13,4 @@
 // the License.
 #pragma once
 
-#include "pw_sync_freertos/spin_lock_inline.h"
+#include "pw_sync_threadx/interrupt_spin_lock_inline.h"
diff --git a/pw_sync_freertos/public_overrides/pw_sync_backend/spin_lock_native.h b/pw_sync_threadx/public_overrides/pw_sync_backend/interrupt_spin_lock_native.h
similarity index 91%
copy from pw_sync_freertos/public_overrides/pw_sync_backend/spin_lock_native.h
copy to pw_sync_threadx/public_overrides/pw_sync_backend/interrupt_spin_lock_native.h
index 103292e..9a98526 100644
--- a/pw_sync_freertos/public_overrides/pw_sync_backend/spin_lock_native.h
+++ b/pw_sync_threadx/public_overrides/pw_sync_backend/interrupt_spin_lock_native.h
@@ -13,4 +13,4 @@
 // the License.
 #pragma once
 
-#include "pw_sync_freertos/spin_lock_native.h"
+#include "pw_sync_threadx/interrupt_spin_lock_native.h"
diff --git a/pw_sync_threadx/public_overrides/pw_sync_backend/spin_lock_inline.h b/pw_sync_threadx/public_overrides/pw_sync_backend/spin_lock_inline.h
deleted file mode 100644
index 06b7d81..0000000
--- a/pw_sync_threadx/public_overrides/pw_sync_backend/spin_lock_inline.h
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-#pragma once
-
-#include "pw_sync_threadx/spin_lock_inline.h"
diff --git a/pw_sync_threadx/public_overrides/pw_sync_backend/spin_lock_native.h b/pw_sync_threadx/public_overrides/pw_sync_backend/spin_lock_native.h
deleted file mode 100644
index 35738cc..0000000
--- a/pw_sync_threadx/public_overrides/pw_sync_backend/spin_lock_native.h
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-#pragma once
-
-#include "pw_sync_threadx/spin_lock_native.h"
diff --git a/targets/arduino/target_toolchains.gni b/targets/arduino/target_toolchains.gni
index 8c34283..0b68152 100644
--- a/targets/arduino/target_toolchains.gni
+++ b/targets/arduino/target_toolchains.gni
@@ -44,7 +44,7 @@
   # Facade backends
   pw_assert_BACKEND = dir_pw_assert_basic
   pw_log_BACKEND = dir_pw_log_basic
-  pw_sync_SPIN_LOCK_BACKEND = "$dir_pw_sync_baremetal:spin_lock_backend"
+  pw_sync_SPIN_LOCK_BACKEND = "$dir_pw_sync_baremetal:interrupt_spin_lock"
   pw_sys_io_BACKEND = dir_pw_sys_io_arduino
   pw_rpc_system_server_BACKEND =
       "$dir_pigweed/targets/arduino:system_rpc_server"
diff --git a/targets/host/target_toolchains.gni b/targets/host/target_toolchains.gni
index 05d593c..98fd14e 100644
--- a/targets/host/target_toolchains.gni
+++ b/targets/host/target_toolchains.gni
@@ -37,7 +37,7 @@
   pw_log_BACKEND = "$dir_pw_log_basic"
 
   # Configure backends for pw_sync's facades.
-  pw_sync_SPIN_LOCK_BACKEND = "$dir_pw_sync_stl:spin_lock_backend"
+  pw_sync_SPIN_LOCK_BACKEND = "$dir_pw_sync_stl:interrupt_spin_lock"
 
   # Configure backend for pw_sys_io facade.
   pw_sys_io_BACKEND = "$dir_pw_sys_io_stdio"
diff --git a/targets/lm3s6965evb-qemu/target_toolchains.gni b/targets/lm3s6965evb-qemu/target_toolchains.gni
index ce3c496..602d01a 100644
--- a/targets/lm3s6965evb-qemu/target_toolchains.gni
+++ b/targets/lm3s6965evb-qemu/target_toolchains.gni
@@ -40,7 +40,7 @@
   pw_boot_BACKEND = dir_pw_boot_armv7m
   pw_log_BACKEND = dir_pw_log_basic
   pw_sys_io_BACKEND = dir_pw_sys_io_baremetal_lm3s6965evb
-  pw_sync_SPIN_LOCK_BACKEND = "$dir_pw_sync_baremetal:spin_lock_backend"
+  pw_sync_SPIN_LOCK_BACKEND = "$dir_pw_sync_baremetal:interrupt_spin_lock"
 
   # pw_cpu_exception_armv7m tests do not work as expected in QEMU. It does not
   # appear the divide-by-zero traps as expected when enabled, which prevents the
diff --git a/targets/stm32f429i-disc1/target_toolchains.gni b/targets/stm32f429i-disc1/target_toolchains.gni
index 6efc896..f2bebda 100644
--- a/targets/stm32f429i-disc1/target_toolchains.gni
+++ b/targets/stm32f429i-disc1/target_toolchains.gni
@@ -50,7 +50,7 @@
   pw_cpu_exception_HANDLER_BACKEND = "$dir_pw_cpu_exception:basic_handler"
   pw_cpu_exception_SUPPORT_BACKEND =
       "$dir_pw_cpu_exception_cortex_m:support_armv7m"
-  pw_sync_SPIN_LOCK_BACKEND = "$dir_pw_sync_baremetal:spin_lock_backend"
+  pw_sync_SPIN_LOCK_BACKEND = "$dir_pw_sync_baremetal:interrupt_spin_lock"
   pw_log_BACKEND = dir_pw_log_basic
   pw_sys_io_BACKEND = dir_pw_sys_io_baremetal_stm32f429
   pw_rpc_system_server_BACKEND =
