Moving synchronization and threading to iree/base/internal/.
diff --git a/bindings/tflite/BUILD b/bindings/tflite/BUILD
index 65135c3..7863a01 100644
--- a/bindings/tflite/BUILD
+++ b/bindings/tflite/BUILD
@@ -48,7 +48,6 @@
     deps = [
         "//iree/base",
         "//iree/base:core_headers",
-        "//iree/base:threading",
         "//iree/base:tracing",
         "//iree/base/internal",
         "//iree/base/internal:threading",
diff --git a/bindings/tflite/interpreter.c b/bindings/tflite/interpreter.c
index c97d7c0..d6c6419 100644
--- a/bindings/tflite/interpreter.c
+++ b/bindings/tflite/interpreter.c
@@ -17,7 +17,7 @@
 #include "bindings/tflite/model.h"
 #include "bindings/tflite/shim.h"
 #include "bindings/tflite/tensor.h"
-#include "iree/base/threading.h"
+#include "iree/base/internal/threading.h"
 #include "iree/base/tracing.h"
 #include "iree/hal/drivers/init.h"
 #include "iree/modules/hal/hal_module.h"
diff --git a/iree/base/BUILD b/iree/base/BUILD
index 9d401f2..216c4be 100644
--- a/iree/base/BUILD
+++ b/iree/base/BUILD
@@ -148,90 +148,6 @@
     srcs = ["string_view_test.cc"],
     deps = [
         ":base",
-        ":api",
-        "//iree/testing:gtest",
-        "//iree/testing:gtest_main",
-    ],
-)
-
-cc_library(
-    name = "synchronization",
-    srcs = ["synchronization.c"],
-    hdrs = ["synchronization.h"],
-    deps = [
-        ":api",
-        ":core_headers",
-        ":tracing",
-        "//iree/base/internal",
-    ],
-)
-
-cc_binary(
-    name = "synchronization_benchmark",
-    testonly = True,
-    srcs = ["synchronization_benchmark.cc"],
-    deps = [
-        ":synchronization",
-        "//iree/testing:benchmark_main",
-        "@com_google_benchmark//:benchmark",
-    ],
-)
-
-run_binary_test(
-    name = "synchronization_benchmark_test",
-    args = ["--benchmark_min_time=0"],
-    test_binary = ":synchronization_benchmark",
-)
-
-cc_test(
-    name = "synchronization_test",
-    srcs = ["synchronization_test.cc"],
-    deps = [
-        ":synchronization",
-        "//iree/testing:gtest",
-        "//iree/testing:gtest_main",
-    ],
-)
-
-cc_library(
-    name = "threading",
-    srcs = [
-        "threading.c",
-        "threading_darwin.c",
-        "threading_impl.h",
-        "threading_pthreads.c",
-        "threading_win32.c",
-    ],
-    hdrs = ["threading.h"],
-    deps = [
-        ":api",
-        ":core_headers",
-        ":synchronization",
-        ":tracing",
-        "//build_tools:default_linkopts",
-        "//iree/base/internal",
-    ],
-)
-
-cc_test(
-    name = "threading_benchmark",
-    srcs = ["threading_benchmark.cc"],
-    deps = [
-        ":threading",
-        "//iree/testing:benchmark_main",
-        "@com_google_benchmark//:benchmark",
-    ],
-)
-
-cc_test(
-    name = "threading_test",
-    srcs = [
-        "threading_impl.h",
-        "threading_test.cc",
-    ],
-    deps = [
-        ":synchronization",
-        ":threading",
         "//iree/testing:gtest",
         "//iree/testing:gtest_main",
     ],
diff --git a/iree/base/CMakeLists.txt b/iree/base/CMakeLists.txt
index ab13c9d..ffec492 100644
--- a/iree/base/CMakeLists.txt
+++ b/iree/base/CMakeLists.txt
@@ -141,98 +141,6 @@
     "string_view_test.cc"
   DEPS
     ::base
-    ::api
-    iree::testing::gtest
-    iree::testing::gtest_main
-)
-
-iree_cc_library(
-  NAME
-    synchronization
-  HDRS
-    "synchronization.h"
-  SRCS
-    "synchronization.c"
-  DEPS
-    ::api
-    ::core_headers
-    ::tracing
-    iree::base::internal
-  PUBLIC
-)
-
-iree_cc_binary(
-  NAME
-    synchronization_benchmark
-  SRCS
-    "synchronization_benchmark.cc"
-  DEPS
-    ::synchronization
-    benchmark
-    iree::testing::benchmark_main
-  TESTONLY
-)
-
-iree_run_binary_test(
-  NAME
-    synchronization_benchmark_test
-  TEST_BINARY
-    ::synchronization_benchmark
-  ARGS
-    "--benchmark_min_time=0"
-)
-
-iree_cc_test(
-  NAME
-    synchronization_test
-  SRCS
-    "synchronization_test.cc"
-  DEPS
-    ::synchronization
-    iree::testing::gtest
-    iree::testing::gtest_main
-)
-
-iree_cc_library(
-  NAME
-    threading
-  HDRS
-    "threading.h"
-  SRCS
-    "threading.c"
-    "threading_darwin.c"
-    "threading_impl.h"
-    "threading_pthreads.c"
-    "threading_win32.c"
-  DEPS
-    ::api
-    ::core_headers
-    ::synchronization
-    ::tracing
-    iree::base::internal
-  PUBLIC
-)
-
-iree_cc_test(
-  NAME
-    threading_benchmark
-  SRCS
-    "threading_benchmark.cc"
-  DEPS
-    ::threading
-    benchmark
-    iree::testing::benchmark_main
-)
-
-iree_cc_test(
-  NAME
-    threading_test
-  SRCS
-    "threading_impl.h"
-    "threading_test.cc"
-  DEPS
-    ::synchronization
-    ::threading
     iree::testing::gtest
     iree::testing::gtest_main
 )
diff --git a/iree/base/internal/BUILD b/iree/base/internal/BUILD
index 107b38c..d945356 100644
--- a/iree/base/internal/BUILD
+++ b/iree/base/internal/BUILD
@@ -78,8 +78,8 @@
     hdrs = ["atomic_slist.h"],
     deps = [
         ":internal",
+        ":synchronization",
         "//iree/base:core_headers",
-        "//iree/base:synchronization",
     ],
 )
 
@@ -103,8 +103,8 @@
     deps = [
         ":file_path",
         ":internal",
+        ":threading",
         "//iree/base:core_headers",
-        "//iree/base:threading",
         "//iree/base:tracing",
     ],
 )
@@ -236,6 +236,89 @@
 )
 
 cc_library(
+    name = "synchronization",
+    srcs = ["synchronization.c"],
+    hdrs = ["synchronization.h"],
+    deps = [
+        ":internal",
+        "//iree/base",
+        "//iree/base:core_headers",
+        "//iree/base:tracing",
+    ],
+)
+
+cc_binary(
+    name = "synchronization_benchmark",
+    testonly = True,
+    srcs = ["synchronization_benchmark.cc"],
+    deps = [
+        ":synchronization",
+        "//iree/testing:benchmark_main",
+        "@com_google_benchmark//:benchmark",
+    ],
+)
+
+run_binary_test(
+    name = "synchronization_benchmark_test",
+    args = ["--benchmark_min_time=0"],
+    test_binary = ":synchronization_benchmark",
+)
+
+cc_test(
+    name = "synchronization_test",
+    srcs = ["synchronization_test.cc"],
+    deps = [
+        ":synchronization",
+        "//iree/testing:gtest",
+        "//iree/testing:gtest_main",
+    ],
+)
+
+cc_library(
+    name = "threading",
+    srcs = [
+        "threading.c",
+        "threading_darwin.c",
+        "threading_impl.h",
+        "threading_pthreads.c",
+        "threading_win32.c",
+    ],
+    hdrs = ["threading.h"],
+    deps = [
+        ":internal",
+        ":synchronization",
+        "//build_tools:default_linkopts",
+        "//iree/base",
+        "//iree/base:core_headers",
+        "//iree/base:tracing",
+    ],
+)
+
+cc_test(
+    name = "threading_benchmark",
+    srcs = ["threading_benchmark.cc"],
+    deps = [
+        ":threading",
+        "//iree/testing:benchmark_main",
+        "@com_google_benchmark//:benchmark",
+    ],
+)
+
+cc_test(
+    name = "threading_test",
+    srcs = [
+        "threading_impl.h",
+        "threading_test.cc",
+    ],
+    deps = [
+        ":synchronization",
+        ":threading",
+        "//iree/testing:gtest",
+        "//iree/testing:gtest_main",
+    ],
+)
+
+cc_library(
     name = "wait_handle",
     srcs = [
         "wait_handle.c",
diff --git a/iree/base/internal/CMakeLists.txt b/iree/base/internal/CMakeLists.txt
index 4940936..944a451 100644
--- a/iree/base/internal/CMakeLists.txt
+++ b/iree/base/internal/CMakeLists.txt
@@ -58,8 +58,8 @@
     "atomic_slist.c"
   DEPS
     ::internal
+    ::synchronization
     iree::base::core_headers
-    iree::base::synchronization
   PUBLIC
 )
 
@@ -85,8 +85,8 @@
   DEPS
     ::file_path
     ::internal
+    ::threading
     iree::base::core_headers
-    iree::base::threading
     iree::base::tracing
   PUBLIC
 )
@@ -234,6 +234,97 @@
 
 iree_cc_library(
   NAME
+    synchronization
+  HDRS
+    "synchronization.h"
+  SRCS
+    "synchronization.c"
+  DEPS
+    ::internal
+    iree::base
+    iree::base::core_headers
+    iree::base::tracing
+  PUBLIC
+)
+
+iree_cc_binary(
+  NAME
+    synchronization_benchmark
+  SRCS
+    "synchronization_benchmark.cc"
+  DEPS
+    ::synchronization
+    benchmark
+    iree::testing::benchmark_main
+  TESTONLY
+)
+
+iree_run_binary_test(
+  NAME
+    "synchronization_benchmark_test"
+  ARGS
+    "--benchmark_min_time=0"
+  TEST_BINARY
+    ::synchronization_benchmark
+)
+
+iree_cc_test(
+  NAME
+    synchronization_test
+  SRCS
+    "synchronization_test.cc"
+  DEPS
+    ::synchronization
+    iree::testing::gtest
+    iree::testing::gtest_main
+)
+
+iree_cc_library(
+  NAME
+    threading
+  HDRS
+    "threading.h"
+  SRCS
+    "threading.c"
+    "threading_darwin.c"
+    "threading_impl.h"
+    "threading_pthreads.c"
+    "threading_win32.c"
+  DEPS
+    ::internal
+    ::synchronization
+    iree::base
+    iree::base::core_headers
+    iree::base::tracing
+  PUBLIC
+)
+
+iree_cc_test(
+  NAME
+    threading_benchmark
+  SRCS
+    "threading_benchmark.cc"
+  DEPS
+    ::threading
+    benchmark
+    iree::testing::benchmark_main
+)
+
+iree_cc_test(
+  NAME
+    threading_test
+  SRCS
+    "threading_impl.h"
+    "threading_test.cc"
+  DEPS
+    ::synchronization
+    ::threading
+    iree::testing::gtest
+    iree::testing::gtest_main
+)
+
+iree_cc_library(
+  NAME
     wait_handle
   HDRS
     "wait_handle.h"
diff --git a/iree/base/internal/atomic_slist.h b/iree/base/internal/atomic_slist.h
index 081c2ec..0486967 100644
--- a/iree/base/internal/atomic_slist.h
+++ b/iree/base/internal/atomic_slist.h
@@ -23,7 +23,7 @@
 
 #include "iree/base/alignment.h"
 #include "iree/base/internal/atomics.h"
-#include "iree/base/synchronization.h"
+#include "iree/base/internal/synchronization.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/iree/base/internal/dynamic_library_win32.c b/iree/base/internal/dynamic_library_win32.c
index 2f13966..a5b4435 100644
--- a/iree/base/internal/dynamic_library_win32.c
+++ b/iree/base/internal/dynamic_library_win32.c
@@ -17,8 +17,8 @@
 #include "iree/base/internal/atomics.h"
 #include "iree/base/internal/dynamic_library.h"
 #include "iree/base/internal/file_path.h"
+#include "iree/base/internal/threading.h"
 #include "iree/base/target_platform.h"
-#include "iree/base/threading.h"
 #include "iree/base/tracing.h"
 
 #if defined(IREE_PLATFORM_WINDOWS)
diff --git a/iree/base/synchronization.c b/iree/base/internal/synchronization.c
similarity index 99%
rename from iree/base/synchronization.c
rename to iree/base/internal/synchronization.c
index 3f4bd83..c2208a8 100644
--- a/iree/base/synchronization.c
+++ b/iree/base/internal/synchronization.c
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "iree/base/synchronization.h"
+#include "iree/base/internal/synchronization.h"
 
 #include <assert.h>
 
diff --git a/iree/base/synchronization.h b/iree/base/internal/synchronization.h
similarity index 98%
rename from iree/base/synchronization.h
rename to iree/base/internal/synchronization.h
index 53ec872..3906cde 100644
--- a/iree/base/synchronization.h
+++ b/iree/base/internal/synchronization.h
@@ -16,8 +16,8 @@
 // design your algorithm so that you don't need anything from this file :)
 // See https://travisdowns.github.io/blog/2020/07/06/concurrency-costs.html
 
-#ifndef IREE_BASE_SYNCHRONIZATION_H_
-#define IREE_BASE_SYNCHRONIZATION_H_
+#ifndef IREE_BASE_INTERNAL_SYNCHRONIZATION_H_
+#define IREE_BASE_INTERNAL_SYNCHRONIZATION_H_
 
 #include <stdbool.h>
 #include <stddef.h>
@@ -368,4 +368,4 @@
 }  // extern "C"
 #endif
 
-#endif  // IREE_BASE_SYNCHRONIZATION_H_
+#endif  // IREE_BASE_INTERNAL_SYNCHRONIZATION_H_
diff --git a/iree/base/synchronization_benchmark.cc b/iree/base/internal/synchronization_benchmark.cc
similarity index 99%
rename from iree/base/synchronization_benchmark.cc
rename to iree/base/internal/synchronization_benchmark.cc
index e138fc4..0e0c2cd 100644
--- a/iree/base/synchronization_benchmark.cc
+++ b/iree/base/internal/synchronization_benchmark.cc
@@ -15,7 +15,7 @@
 #include <mutex>
 
 #include "benchmark/benchmark.h"
-#include "iree/base/synchronization.h"
+#include "iree/base/internal/synchronization.h"
 
 namespace {
 
diff --git a/iree/base/synchronization_test.cc b/iree/base/internal/synchronization_test.cc
similarity index 98%
rename from iree/base/synchronization_test.cc
rename to iree/base/internal/synchronization_test.cc
index 7761640..76b1079 100644
--- a/iree/base/synchronization_test.cc
+++ b/iree/base/internal/synchronization_test.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "iree/base/synchronization.h"
+#include "iree/base/internal/synchronization.h"
 
 #include <chrono>
 #include <thread>
diff --git a/iree/base/threading.c b/iree/base/internal/threading.c
similarity index 98%
rename from iree/base/threading.c
rename to iree/base/internal/threading.c
index 833194f..8a6a478 100644
--- a/iree/base/threading.c
+++ b/iree/base/internal/threading.c
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "iree/base/threading.h"
+#include "iree/base/internal/threading.h"
 
-#include "iree/base/threading_impl.h"
+#include "iree/base/internal/threading_impl.h"
 
 #if defined(IREE_ARCH_X86_32) || defined(IREE_ARCH_X86_64)
 #include <xmmintrin.h>
diff --git a/iree/base/threading.h b/iree/base/internal/threading.h
similarity index 98%
rename from iree/base/threading.h
rename to iree/base/internal/threading.h
index 8e844bb..65ebf7d 100644
--- a/iree/base/threading.h
+++ b/iree/base/internal/threading.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef IREE_BASE_THREADING_H_
-#define IREE_BASE_THREADING_H_
+#ifndef IREE_BASE_INTERNAL_THREADING_H_
+#define IREE_BASE_INTERNAL_THREADING_H_
 
 #include <stdbool.h>
 #include <stddef.h>
@@ -298,4 +298,4 @@
 }  // extern "C"
 #endif
 
-#endif  // IREE_BASE_THREADING_H_
+#endif  // IREE_BASE_INTERNAL_THREADING_H_
diff --git a/iree/base/threading_benchmark.cc b/iree/base/internal/threading_benchmark.cc
similarity index 98%
rename from iree/base/threading_benchmark.cc
rename to iree/base/internal/threading_benchmark.cc
index 51fc805..06b8c38 100644
--- a/iree/base/threading_benchmark.cc
+++ b/iree/base/internal/threading_benchmark.cc
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 #include "benchmark/benchmark.h"
-#include "iree/base/threading.h"
+#include "iree/base/internal/threading.h"
 
 namespace {
 
diff --git a/iree/base/threading_darwin.c b/iree/base/internal/threading_darwin.c
similarity index 98%
rename from iree/base/threading_darwin.c
rename to iree/base/internal/threading_darwin.c
index 0b79beb..b6a5065 100644
--- a/iree/base/threading_darwin.c
+++ b/iree/base/internal/threading_darwin.c
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 // NOTE: must be first to ensure that we can define settings for all includes.
-#include "iree/base/threading_impl.h"
+#include "iree/base/internal/threading_impl.h"
 
 #if defined(IREE_PLATFORM_APPLE)
 
@@ -24,7 +24,7 @@
 #include <string.h>
 
 #include "iree/base/internal/atomics.h"
-#include "iree/base/threading.h"
+#include "iree/base/internal/threading.h"
 #include "iree/base/tracing.h"
 
 // Useful to see how pthreads is implemented on (old) darwin:
diff --git a/iree/base/threading_impl.h b/iree/base/internal/threading_impl.h
similarity index 92%
rename from iree/base/threading_impl.h
rename to iree/base/internal/threading_impl.h
index 40de48f..093dee9 100644
--- a/iree/base/threading_impl.h
+++ b/iree/base/internal/threading_impl.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef IREE_BASE_THREADING_IMPL_H_
-#define IREE_BASE_THREADING_IMPL_H_
+#ifndef IREE_BASE_INTERNAL_THREADING_IMPL_H_
+#define IREE_BASE_INTERNAL_THREADING_IMPL_H_
 
 // Ensure that any posix header we include exposes GNU stuff. Ignored on
 // platforms where we either don't have the GNU stuff or don't have posix
@@ -33,9 +33,9 @@
 #include <stdint.h>
 
 #include "iree/base/api.h"
-#include "iree/base/synchronization.h"
+#include "iree/base/internal/synchronization.h"
+#include "iree/base/internal/threading.h"
 #include "iree/base/target_platform.h"
-#include "iree/base/threading.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -82,4 +82,4 @@
 }  // extern "C"
 #endif
 
-#endif  // IREE_BASE_THREADING_IMPL_H_
+#endif  // IREE_BASE_INTERNAL_THREADING_IMPL_H_
diff --git a/iree/base/threading_pthreads.c b/iree/base/internal/threading_pthreads.c
similarity index 98%
rename from iree/base/threading_pthreads.c
rename to iree/base/internal/threading_pthreads.c
index a507dcc..191e5be 100644
--- a/iree/base/threading_pthreads.c
+++ b/iree/base/internal/threading_pthreads.c
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 // NOTE: must be first to ensure that we can define settings for all includes.
-#include "iree/base/threading_impl.h"
+#include "iree/base/internal/threading_impl.h"
 
 #if defined(IREE_PLATFORM_ANDROID) || defined(IREE_PLATFORM_EMSCRIPTEN) || \
     defined(IREE_PLATFORM_LINUX)
@@ -29,8 +29,8 @@
 #include <unistd.h>
 
 #include "iree/base/internal/atomics.h"
-#include "iree/base/synchronization.h"
-#include "iree/base/threading.h"
+#include "iree/base/internal/synchronization.h"
+#include "iree/base/internal/threading.h"
 #include "iree/base/tracing.h"
 
 // Older glibc doesn't have a gettid wrapper:
diff --git a/iree/base/threading_test.cc b/iree/base/internal/threading_test.cc
similarity index 97%
rename from iree/base/threading_test.cc
rename to iree/base/internal/threading_test.cc
index 6f2cfe9..d817637 100644
--- a/iree/base/threading_test.cc
+++ b/iree/base/internal/threading_test.cc
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "iree/base/threading.h"
+#include "iree/base/internal/threading.h"
 
 #include <chrono>
 #include <thread>
 
-#include "iree/base/synchronization.h"
-#include "iree/base/threading_impl.h"  // to test the override list
+#include "iree/base/internal/synchronization.h"
+#include "iree/base/internal/threading_impl.h"  // to test the override list
 #include "iree/testing/gtest.h"
 #include "iree/testing/status_matchers.h"
 
diff --git a/iree/base/threading_win32.c b/iree/base/internal/threading_win32.c
similarity index 98%
rename from iree/base/threading_win32.c
rename to iree/base/internal/threading_win32.c
index 7a35bae..c7e1815 100644
--- a/iree/base/threading_win32.c
+++ b/iree/base/internal/threading_win32.c
@@ -13,15 +13,15 @@
 // limitations under the License.
 
 // NOTE: must be first to ensure that we can define settings for all includes.
-#include "iree/base/threading_impl.h"
+#include "iree/base/internal/threading_impl.h"
 
 #if defined(IREE_PLATFORM_WINDOWS)
 
 #include <stdio.h>
 
 #include "iree/base/internal/atomics.h"
-#include "iree/base/threading.h"
-#include "iree/base/threading_impl.h"
+#include "iree/base/internal/threading.h"
+#include "iree/base/internal/threading_impl.h"
 #include "iree/base/tracing.h"
 
 // Great documentation:
diff --git a/iree/hal/BUILD b/iree/hal/BUILD
index b1f9c6f..700ff30 100644
--- a/iree/hal/BUILD
+++ b/iree/hal/BUILD
@@ -74,10 +74,10 @@
     deps = [
         "//iree/base",
         "//iree/base:core_headers",
-        "//iree/base:synchronization",
-        "//iree/base:threading",
         "//iree/base:tracing",
         "//iree/base/internal",
+        "//iree/base/internal:synchronization",
+        "//iree/base/internal:threading",
         "@com_google_absl//absl/strings",
     ],
 )
diff --git a/iree/hal/CMakeLists.txt b/iree/hal/CMakeLists.txt
index 3e1ddab..f71f010 100644
--- a/iree/hal/CMakeLists.txt
+++ b/iree/hal/CMakeLists.txt
@@ -58,8 +58,8 @@
     iree::base
     iree::base::core_headers
     iree::base::internal
-    iree::base::synchronization
-    iree::base::threading
+    iree::base::internal::synchronization
+    iree::base::internal::threading
     iree::base::tracing
   PUBLIC
 )
diff --git a/iree/hal/cuda/BUILD b/iree/hal/cuda/BUILD
index 696fae5..68b6389 100644
--- a/iree/hal/cuda/BUILD
+++ b/iree/hal/cuda/BUILD
@@ -68,7 +68,7 @@
         "//iree/base:flatcc",
         "//iree/base:logging",
         "//iree/base:status",
-        "//iree/base:synchronization",
+        "//iree/base/internal:synchronization",
         "//iree/base:tracing",
         "//iree/base/internal",
         "//iree/hal",
diff --git a/iree/hal/cuda/CMakeLists.txt b/iree/hal/cuda/CMakeLists.txt
index f26ee86..33616db 100644
--- a/iree/hal/cuda/CMakeLists.txt
+++ b/iree/hal/cuda/CMakeLists.txt
@@ -51,9 +51,9 @@
     iree::base::core_headers
     iree::base::flatcc
     iree::base::internal
+    iree::base::internal::synchronization
     iree::base::logging
     iree::base::status
-    iree::base::synchronization
     iree::base::tracing
     iree::hal
     iree::schemas::cuda_executable_def_c_fbs
diff --git a/iree/hal/driver_registry.c b/iree/hal/driver_registry.c
index 0dc0305..74929f2 100644
--- a/iree/hal/driver_registry.c
+++ b/iree/hal/driver_registry.c
@@ -14,8 +14,8 @@
 
 #include "iree/hal/driver_registry.h"
 
-#include "iree/base/synchronization.h"
-#include "iree/base/threading.h"
+#include "iree/base/internal/synchronization.h"
+#include "iree/base/internal/threading.h"
 #include "iree/base/tracing.h"
 #include "iree/hal/detail.h"
 
diff --git a/iree/hal/local/BUILD b/iree/hal/local/BUILD
index 1ffc266..107bf10 100644
--- a/iree/hal/local/BUILD
+++ b/iree/hal/local/BUILD
@@ -34,8 +34,8 @@
     deps = [
         "//iree/base",
         "//iree/base:core_headers",
-        "//iree/base:synchronization",
         "//iree/base/internal:atomic_slist",
+        "//iree/base/internal:synchronization",
     ],
 )
 
@@ -48,9 +48,9 @@
     deps = [
         "//iree/base",
         "//iree/base:core_headers",
-        "//iree/base:synchronization",
         "//iree/base:tracing",
         "//iree/base/internal",
+        "//iree/base/internal:synchronization",
         "//iree/base/internal:wait_handle",
     ],
 )
@@ -137,9 +137,9 @@
         ":local",
         "//iree/base",
         "//iree/base:core_headers",
-        "//iree/base:synchronization",
         "//iree/base:tracing",
         "//iree/base/internal",
+        "//iree/base/internal:synchronization",
         "//iree/base/internal:wait_handle",
         "//iree/hal",
         "//iree/task",
@@ -172,9 +172,9 @@
         ":local",
         "//iree/base",
         "//iree/base:core_headers",
-        "//iree/base:synchronization",
         "//iree/base:tracing",
         "//iree/base/internal",
+        "//iree/base/internal:synchronization",
         "//iree/base/internal:wait_handle",
         "//iree/hal",
         "//iree/task",
diff --git a/iree/hal/local/CMakeLists.txt b/iree/hal/local/CMakeLists.txt
index bfe14a8..98378e3 100644
--- a/iree/hal/local/CMakeLists.txt
+++ b/iree/hal/local/CMakeLists.txt
@@ -21,7 +21,7 @@
     iree::base
     iree::base::core_headers
     iree::base::internal::atomic_slist
-    iree::base::synchronization
+    iree::base::internal::synchronization
   PUBLIC
 )
 
@@ -36,8 +36,8 @@
     iree::base
     iree::base::core_headers
     iree::base::internal
+    iree::base::internal::synchronization
     iree::base::internal::wait_handle
-    iree::base::synchronization
     iree::base::tracing
   PUBLIC
 )
@@ -126,8 +126,8 @@
     iree::base
     iree::base::core_headers
     iree::base::internal
+    iree::base::internal::synchronization
     iree::base::internal::wait_handle
-    iree::base::synchronization
     iree::base::tracing
     iree::hal
     iree::task
@@ -160,8 +160,8 @@
     iree::base
     iree::base::core_headers
     iree::base::internal
+    iree::base::internal::synchronization
     iree::base::internal::wait_handle
-    iree::base::synchronization
     iree::base::tracing
     iree::hal
     iree::task
diff --git a/iree/hal/local/event_pool.c b/iree/hal/local/event_pool.c
index 23ce786..b9f0598 100644
--- a/iree/hal/local/event_pool.c
+++ b/iree/hal/local/event_pool.c
@@ -14,7 +14,7 @@
 
 #include "iree/hal/local/event_pool.h"
 
-#include "iree/base/synchronization.h"
+#include "iree/base/internal/synchronization.h"
 #include "iree/base/tracing.h"
 
 struct iree_hal_local_event_pool_s {
diff --git a/iree/hal/local/sync_semaphore.h b/iree/hal/local/sync_semaphore.h
index a69f97f..34e2320 100644
--- a/iree/hal/local/sync_semaphore.h
+++ b/iree/hal/local/sync_semaphore.h
@@ -16,7 +16,7 @@
 #define IREE_HAL_LOCAL_SYNC_SEMAPHORE_H_
 
 #include "iree/base/api.h"
-#include "iree/base/synchronization.h"
+#include "iree/base/internal/synchronization.h"
 #include "iree/hal/api.h"
 
 #ifdef __cplusplus
diff --git a/iree/hal/local/task_queue.h b/iree/hal/local/task_queue.h
index 3ebe4df..ad6d9e9 100644
--- a/iree/hal/local/task_queue.h
+++ b/iree/hal/local/task_queue.h
@@ -16,7 +16,7 @@
 #define IREE_HAL_LOCAL_TASK_QUEUE_H_
 
 #include "iree/base/api.h"
-#include "iree/base/synchronization.h"
+#include "iree/base/internal/synchronization.h"
 #include "iree/hal/api.h"
 #include "iree/hal/local/arena.h"
 #include "iree/hal/local/task_queue_state.h"
diff --git a/iree/hal/local/task_semaphore.c b/iree/hal/local/task_semaphore.c
index f5be47f..88d9e6b 100644
--- a/iree/hal/local/task_semaphore.c
+++ b/iree/hal/local/task_semaphore.c
@@ -16,8 +16,8 @@
 
 #include <inttypes.h>
 
+#include "iree/base/internal/synchronization.h"
 #include "iree/base/internal/wait_handle.h"
-#include "iree/base/synchronization.h"
 #include "iree/base/tracing.h"
 
 // Sentinel used the semaphore has failed and an error status is set.
diff --git a/iree/hal/vulkan/BUILD b/iree/hal/vulkan/BUILD
index 7c3cab0..313d3ca 100644
--- a/iree/hal/vulkan/BUILD
+++ b/iree/hal/vulkan/BUILD
@@ -96,7 +96,7 @@
         "//iree/base:flatcc",
         "//iree/base:logging",
         "//iree/base:status",
-        "//iree/base:synchronization",
+        "//iree/base/internal:synchronization",
         "//iree/base:tracing",
         "//iree/base/internal",
         "//iree/hal",
diff --git a/iree/hal/vulkan/CMakeLists.txt b/iree/hal/vulkan/CMakeLists.txt
index 9e63f51..d1cc349 100644
--- a/iree/hal/vulkan/CMakeLists.txt
+++ b/iree/hal/vulkan/CMakeLists.txt
@@ -79,9 +79,9 @@
     iree::base::core_headers
     iree::base::flatcc
     iree::base::internal
+    iree::base::internal::synchronization
     iree::base::logging
     iree::base::status
-    iree::base::synchronization
     iree::base::tracing
     iree::hal
     iree::hal::vulkan::util::arena
diff --git a/iree/hal/vulkan/command_queue.h b/iree/hal/vulkan/command_queue.h
index 59eec73..1de92b6 100644
--- a/iree/hal/vulkan/command_queue.h
+++ b/iree/hal/vulkan/command_queue.h
@@ -17,8 +17,8 @@
 
 #include <string>
 
+#include "iree/base/internal/synchronization.h"
 #include "iree/base/status.h"
-#include "iree/base/synchronization.h"
 #include "iree/hal/api.h"
 #include "iree/hal/vulkan/dynamic_symbols.h"
 #include "iree/hal/vulkan/handle_util.h"
diff --git a/iree/hal/vulkan/emulated_semaphore.cc b/iree/hal/vulkan/emulated_semaphore.cc
index 5887387..70364e1 100644
--- a/iree/hal/vulkan/emulated_semaphore.cc
+++ b/iree/hal/vulkan/emulated_semaphore.cc
@@ -19,8 +19,8 @@
 
 #include <vector>
 
+#include "iree/base/internal/synchronization.h"
 #include "iree/base/status.h"
-#include "iree/base/synchronization.h"
 #include "iree/base/tracing.h"
 #include "iree/hal/vulkan/dynamic_symbols.h"
 #include "iree/hal/vulkan/serializing_command_queue.h"
diff --git a/iree/hal/vulkan/handle_util.h b/iree/hal/vulkan/handle_util.h
index b0fd98b..941d3a8 100644
--- a/iree/hal/vulkan/handle_util.h
+++ b/iree/hal/vulkan/handle_util.h
@@ -28,8 +28,8 @@
 #include "iree/hal/vulkan/vulkan_headers.h"
 // clang-format on
 
+#include "iree/base/internal/synchronization.h"
 #include "iree/base/status.h"
-#include "iree/base/synchronization.h"
 #include "iree/hal/vulkan/dynamic_symbols.h"
 #include "iree/hal/vulkan/extensibility_util.h"
 #include "iree/hal/vulkan/status_util.h"
diff --git a/iree/hal/vulkan/internal_vk_mem_alloc.cc b/iree/hal/vulkan/internal_vk_mem_alloc.cc
index 63d6201..1989456 100644
--- a/iree/hal/vulkan/internal_vk_mem_alloc.cc
+++ b/iree/hal/vulkan/internal_vk_mem_alloc.cc
@@ -15,8 +15,8 @@
 // Only compile if an external implementation has not been otherwise linked.
 #if !defined(VULKAN_MEMORY_ALLOCATOR_EXTERNAL_IMPL)
 
+#include "iree/base/internal/synchronization.h"
 #include "iree/base/logging.h"
-#include "iree/base/synchronization.h"
 
 #define VMA_ASSERT IREE_DCHECK
 #define VMA_HEAVY_ASSERT IREE_DCHECK
diff --git a/iree/hal/vulkan/serializing_command_queue.h b/iree/hal/vulkan/serializing_command_queue.h
index c53b664..e1a1a1c 100644
--- a/iree/hal/vulkan/serializing_command_queue.h
+++ b/iree/hal/vulkan/serializing_command_queue.h
@@ -23,8 +23,8 @@
 #include <string>
 #include <vector>
 
+#include "iree/base/internal/synchronization.h"
 #include "iree/base/status.h"
-#include "iree/base/synchronization.h"
 #include "iree/hal/api.h"
 #include "iree/hal/vulkan/command_queue.h"
 #include "iree/hal/vulkan/dynamic_symbols.h"
diff --git a/iree/hal/vulkan/timepoint_util.h b/iree/hal/vulkan/timepoint_util.h
index 845c561..5717175 100644
--- a/iree/hal/vulkan/timepoint_util.h
+++ b/iree/hal/vulkan/timepoint_util.h
@@ -21,8 +21,8 @@
 
 #include <array>
 
+#include "iree/base/internal/synchronization.h"
 #include "iree/base/status.h"
-#include "iree/base/synchronization.h"
 #include "iree/hal/vulkan/handle_util.h"
 #include "iree/hal/vulkan/util/intrusive_list.h"
 #include "iree/hal/vulkan/util/ref_ptr.h"
diff --git a/iree/task/BUILD b/iree/task/BUILD
index ba0971b..d5c93c0 100644
--- a/iree/task/BUILD
+++ b/iree/task/BUILD
@@ -62,12 +62,12 @@
     deps = [
         "//iree/base",
         "//iree/base:core_headers",
-        "//iree/base:synchronization",
-        "//iree/base:threading",
         "//iree/base:tracing",
         "//iree/base/internal",
         "//iree/base/internal:atomic_slist",
         "//iree/base/internal:prng",
+        "//iree/base/internal:synchronization",
+        "//iree/base/internal:threading",
         "//iree/base/internal:wait_handle",
         "@cpuinfo",
     ],
diff --git a/iree/task/CMakeLists.txt b/iree/task/CMakeLists.txt
index 2094936..b807001 100644
--- a/iree/task/CMakeLists.txt
+++ b/iree/task/CMakeLists.txt
@@ -60,9 +60,9 @@
     iree::base::internal
     iree::base::internal::atomic_slist
     iree::base::internal::prng
+    iree::base::internal::synchronization
+    iree::base::internal::threading
     iree::base::internal::wait_handle
-    iree::base::synchronization
-    iree::base::threading
     iree::base::tracing
   PUBLIC
 )
diff --git a/iree/task/executor_impl.h b/iree/task/executor_impl.h
index 7871e01..e34255a 100644
--- a/iree/task/executor_impl.h
+++ b/iree/task/executor_impl.h
@@ -17,7 +17,7 @@
 
 #include "iree/base/internal/math.h"
 #include "iree/base/internal/prng.h"
-#include "iree/base/synchronization.h"
+#include "iree/base/internal/synchronization.h"
 #include "iree/base/tracing.h"
 #include "iree/task/affinity_set.h"
 #include "iree/task/executor.h"
diff --git a/iree/task/post_batch.c b/iree/task/post_batch.c
index 7792347..fce28a2 100644
--- a/iree/task/post_batch.c
+++ b/iree/task/post_batch.c
@@ -15,8 +15,8 @@
 #include "iree/task/post_batch.h"
 
 #include "iree/base/internal/math.h"
-#include "iree/base/synchronization.h"
-#include "iree/base/threading.h"
+#include "iree/base/internal/synchronization.h"
+#include "iree/base/internal/threading.h"
 #include "iree/base/tracing.h"
 #include "iree/task/executor_impl.h"
 
diff --git a/iree/task/queue.h b/iree/task/queue.h
index e3e5121..3915d18 100644
--- a/iree/task/queue.h
+++ b/iree/task/queue.h
@@ -16,7 +16,7 @@
 #define IREE_TASK_QUEUE_H_
 
 #include "iree/base/api.h"
-#include "iree/base/synchronization.h"
+#include "iree/base/internal/synchronization.h"
 #include "iree/task/list.h"
 #include "iree/task/task.h"
 
diff --git a/iree/task/scope.h b/iree/task/scope.h
index 01d0de2..addc23c 100644
--- a/iree/task/scope.h
+++ b/iree/task/scope.h
@@ -17,7 +17,7 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/atomics.h"
-#include "iree/base/synchronization.h"
+#include "iree/base/internal/synchronization.h"
 #include "iree/base/tracing.h"
 #include "iree/task/task.h"
 
diff --git a/iree/task/task.h b/iree/task/task.h
index b743d84..808add4 100644
--- a/iree/task/task.h
+++ b/iree/task/task.h
@@ -18,8 +18,8 @@
 #include "iree/base/api.h"
 #include "iree/base/internal/atomic_slist.h"
 #include "iree/base/internal/atomics.h"
+#include "iree/base/internal/synchronization.h"
 #include "iree/base/internal/wait_handle.h"
-#include "iree/base/synchronization.h"
 #include "iree/task/affinity_set.h"
 
 #ifdef __cplusplus
diff --git a/iree/task/topology.h b/iree/task/topology.h
index 4bc82dd..323a5d9 100644
--- a/iree/task/topology.h
+++ b/iree/task/topology.h
@@ -18,7 +18,7 @@
 #include <limits.h>
 
 #include "iree/base/api.h"
-#include "iree/base/threading.h"
+#include "iree/base/internal/threading.h"
 #include "iree/task/tuning.h"
 
 #ifdef __cplusplus
diff --git a/iree/task/worker.h b/iree/task/worker.h
index b4df5f4..e78da58 100644
--- a/iree/task/worker.h
+++ b/iree/task/worker.h
@@ -16,8 +16,8 @@
 #define IREE_TASK_WORKER_H_
 
 #include "iree/base/internal/prng.h"
-#include "iree/base/synchronization.h"
-#include "iree/base/threading.h"
+#include "iree/base/internal/synchronization.h"
+#include "iree/base/internal/threading.h"
 #include "iree/base/tracing.h"
 #include "iree/task/affinity_set.h"
 #include "iree/task/executor.h"