summaryrefslogtreecommitdiff
path: root/lib/ktl
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-10-16 02:39:56 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-10-16 02:39:56 +0800
commit8cace3f05003c6cb4d38c36890055f03151c2ad4 (patch)
treeaa739deaac0266f17c4e91b333957501cb1ea2e9 /lib/ktl
parent3ad39e9878310e5317ee73c9b353c1e2c1c5c4ee (diff)
downloadlume-8cace3f05003c6cb4d38c36890055f03151c2ad4.tar.gz
lume-8cace3f05003c6cb4d38c36890055f03151c2ad4.tar.xz
Remove old code
Signed-off-by: Richard Qin <richard.qin.x@gmail.com>
Diffstat (limited to 'lib/ktl')
-rw-r--r--lib/ktl/LICENSE21
-rw-r--r--lib/ktl/README.lume8
-rw-r--r--lib/ktl/README.md36
-rw-r--r--lib/ktl/include-after/errno.h13
-rw-r--r--lib/ktl/include-after/wchar.h30
-rw-r--r--lib/ktl/include/__chrono/system_clock.h15
-rw-r--r--lib/ktl/include/__config53
-rw-r--r--lib/ktl/include/__config_site81
-rw-r--r--lib/ktl/include/__configuration/platform.h23
-rw-r--r--lib/ktl/include/__external_threading35
-rw-r--r--lib/ktl/include/climits15
-rw-r--r--lib/ktl/include/cmath53
-rw-r--r--lib/ktl/include/cstdint18
-rw-r--r--lib/ktl/include/cstdio21
-rw-r--r--lib/ktl/include/cstdlib30
-rw-r--r--lib/ktl/include/cwchar62
-rw-r--r--lib/ktl/include/ktl/algorithm.h116
-rw-r--r--lib/ktl/include/ktl/array.h19
-rw-r--r--lib/ktl/include/ktl/atomic.h40
-rw-r--r--lib/ktl/include/ktl/bit.h30
-rw-r--r--lib/ktl/include/ktl/byte.h18
-rw-r--r--lib/ktl/include/ktl/concepts.h46
-rw-r--r--lib/ktl/include/ktl/declval.h18
-rw-r--r--lib/ktl/include/ktl/enforce.h37
-rw-r--r--lib/ktl/include/ktl/forward.h18
-rw-r--r--lib/ktl/include/ktl/functional.h19
-rw-r--r--lib/ktl/include/ktl/initializer_list.h18
-rw-r--r--lib/ktl/include/ktl/inplace_vector.h18
-rw-r--r--lib/ktl/include/ktl/iterator.h38
-rw-r--r--lib/ktl/include/ktl/limits.h18
-rw-r--r--lib/ktl/include/ktl/memory.h41
-rw-r--r--lib/ktl/include/ktl/new.h25
-rw-r--r--lib/ktl/include/ktl/numeric.h20
-rw-r--r--lib/ktl/include/ktl/optional.h23
-rw-r--r--lib/ktl/include/ktl/ranges.h25
-rw-r--r--lib/ktl/include/ktl/ref.h19
-rw-r--r--lib/ktl/include/ktl/source_location.h18
-rw-r--r--lib/ktl/include/ktl/span.h26
-rw-r--r--lib/ktl/include/ktl/string_view.h22
-rw-r--r--lib/ktl/include/ktl/tuple.h30
-rw-r--r--lib/ktl/include/ktl/type_traits.h165
-rw-r--r--lib/ktl/include/ktl/unique_ptr.h37
-rw-r--r--lib/ktl/include/ktl/utility.h41
-rw-r--r--lib/ktl/include/ktl/variant.h31
-rw-r--r--lib/ktl/include/limits110
-rw-r--r--lib/ktl/include/time.h39
-rw-r--r--lib/ktl/include/version14
-rw-r--r--lib/ktl/include/wchar.h23
-rw-r--r--lib/ktl/popcount.cc135
-rw-r--r--lib/ktl/stub-new.cc25
50 files changed, 0 insertions, 1836 deletions
diff --git a/lib/ktl/LICENSE b/lib/ktl/LICENSE
deleted file mode 100644
index 8580f02..0000000
--- a/lib/ktl/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright 2016 The Fuchsia Authors
-Copyright (c) 2008-2015 Travis Geiselbrecht
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files
-(the "Software"), to deal in the Software without restriction,
-including without limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of the Software,
-and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/lib/ktl/README.lume b/lib/ktl/README.lume
deleted file mode 100644
index 7e7c8a4..0000000
--- a/lib/ktl/README.lume
+++ /dev/null
@@ -1,8 +0,0 @@
-KTL configuration overlay imported from Zircon
-
-Source: zircon/kernel/lib/ktl
-Fuchsia revision: f8d670ab4bbb71bfb4d569893ba12fbb8a83bacd
-
-The complete KTL header overlay and its two implementation files, popcount.cc
-and stub-new.cc, are imported. The KTL target is built together with the
-Zircon kernel libc header layer and the version-matched libc++ snapshot.
diff --git a/lib/ktl/README.md b/lib/ktl/README.md
deleted file mode 100644
index 667c678..0000000
--- a/lib/ktl/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# Kernel Template Library
-
-The Kernel Template Library is a curated subset of the C++ standard library API
-using the `ktl` namespace rather than the `std` namespace. When a specific
-interface is deemed useful, safe, and appropriate for use in the kernel, it can
-be added here. No `std` APIs are ever used directly in the kernel, only `ktl`.
-
-The API is a strict subset of the standard C++ library API aside from the
-namespace. The header file names are mostly directly mapped as well:
-
- <foo> -> <ktl/foo.h>
-
-There can be exceptions. For example, <memory> is a very broad collection of
-APIs and the ktl subset is more focused. So instead of <ktl/memory.h> there
-are specific headers for the standard APIs from <memory> that are included, such
-as <ktl/unique_ptr.h> for `ktl::unique_ptr` (`std::unique_ptr` in <memory>).
-
-The implementation here simply leverages the libc++ implementation and defines
-`using` aliases in the `ktl` namespace. It's expected that ktl will only ever
-provide "header only" APIs.
-
-## ktl enforcement
-
-The [`<ktl/enforce.h>`](include/ktl/enforce.h) header file should be used in
-most `.cc` files (but not `.h`) files meant only for the kernel environment.
-That is, in `.cc` files that use the `<ktl/*.h>` headers or use kernel-only
-headers that use them.
-
-This file must appear last in the `#include` list and `clang-format` will
-arrange that automatically.
-
-After this `#include` any use of the `std` identifier in C++ code will cause a
-compile-time error. When such errors are encountered, the kernel code should
-be checked for use of C++ standard library headers (with no `.h` in the name,
-like `<memory>, etc.) that should be replaced with `<ktl/*.h>` headers and for
-`std::` names that should be replaced with `ktl::` names.
diff --git a/lib/ktl/include-after/errno.h b/lib/ktl/include-after/errno.h
deleted file mode 100644
index 52edc9c..0000000
--- a/lib/ktl/include-after/errno.h
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2020 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_ERRNO_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_ERRNO_H_
-
-// The kernel doesn't want this file but some libc++ headers we need
-// wind up including it.
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_ERRNO_H_
diff --git a/lib/ktl/include-after/wchar.h b/lib/ktl/include-after/wchar.h
deleted file mode 100644
index 41d11ae..0000000
--- a/lib/ktl/include-after/wchar.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2018 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_AFTER_WCHAR_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_AFTER_WCHAR_H_
-
-#include <stddef.h>
-
-// The kernel doesn't want this file but some libc++ headers we need wind up
-// including it and they need these declarations.
-//
-// **NOTE** This file is include-after because libc++ headers get it via
-// #include_next so as to get the "system" <wchar.h> rather than libc++'s
-// own wrapper.
-
-typedef struct {
-} mbstate_t;
-
-typedef unsigned int wint_t;
-#define WEOF (~wint_t{0})
-
-// <string_view> refers to these in code that's never actually used in ktl.
-wchar_t* wmemcpy(wchar_t* __restrict, const wchar_t* __restrict, size_t);
-wchar_t* wmemmove(wchar_t*, const wchar_t*, size_t);
-wchar_t* wmemset(wchar_t*, wchar_t, size_t);
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_AFTER_WCHAR_H_
diff --git a/lib/ktl/include/__chrono/system_clock.h b/lib/ktl/include/__chrono/system_clock.h
deleted file mode 100644
index 5d39243..0000000
--- a/lib/ktl/include/__chrono/system_clock.h
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2023 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE___CHRONO_SYSTEM_CLOCK_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE___CHRONO_SYSTEM_CLOCK_H_
-
-// libc++'s <atomic> includes this file via various internal headers.
-// The declarations it provides aren't needed for the kernel and rely
-// on other things stubbed out by the kernel. So this placeholder file
-// just prevents compiling the libc++ code that doesn't work.
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE___CHRONO_SYSTEM_CLOCK_H_
diff --git a/lib/ktl/include/__config b/lib/ktl/include/__config
deleted file mode 100644
index e04573e..0000000
--- a/lib/ktl/include/__config
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2022 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE___CONFIG_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE___CONFIG_
-
-// The libc++ internal header <__config> unconditionally responds to some
-// predefines set in the EFI environment. So this header wraps it and then
-// undoes the damage that our __config_site header can't prevent.
-
-#include_next <__config>
-
-#undef _LIBCPP_WIN32API
-#undef _LIBCPP_MSVCRT_LIKE
-#undef _LIBCPP_MSVCRT
-#undef _LIBCPP_HAS_OPEN_WITH_WCHAR
-
-// This prevents libc++ from doing fallback to spin locks and the like for
-// cases where is_always_lock_free is not true. In the kernel, we don't want
-// any behind-the-scenes help like that, we want to get link errors from
-// libcalls if atomics can't be lowered to real hardware instructions.
-#undef _LIBCPP_ATOMIC_ONLY_USE_BUILTINS
-
-// These are used by <__configuration/availability.h> to decide when headers
-// should expect things to be defined in the library. For the kernel, there is
-// no library and so everything must be defined in headers.
-#undef _LIBCPP_INTRODUCED_IN_LLVM_21
-#define _LIBCPP_INTRODUCED_IN_LLVM_21 0
-#undef _LIBCPP_INTRODUCED_IN_LLVM_20
-#define _LIBCPP_INTRODUCED_IN_LLVM_20 0
-#undef _LIBCPP_INTRODUCED_IN_LLVM_19
-#define _LIBCPP_INTRODUCED_IN_LLVM_19 0
-#undef _LIBCPP_INTRODUCED_IN_LLVM_18
-#define _LIBCPP_INTRODUCED_IN_LLVM_18 0
-#undef _LIBCPP_INTRODUCED_IN_LLVM_16
-#define _LIBCPP_INTRODUCED_IN_LLVM_16 0
-#undef _LIBCPP_INTRODUCED_IN_LLVM_15
-#define _LIBCPP_INTRODUCED_IN_LLVM_15 0
-#undef _LIBCPP_INTRODUCED_IN_LLVM_14
-#define _LIBCPP_INTRODUCED_IN_LLVM_14 0
-#undef _LIBCPP_INTRODUCED_IN_LLVM_12
-#define _LIBCPP_INTRODUCED_IN_LLVM_12 0
-#undef _LIBCPP_INTRODUCED_IN_LLVM_11
-#define _LIBCPP_INTRODUCED_IN_LLVM_11 0
-#undef _LIBCPP_INTRODUCED_IN_LLVM_9
-#define _LIBCPP_INTRODUCED_IN_LLVM_9 0
-#undef _LIBCPP_INTRODUCED_IN_LLVM_4
-#define _LIBCPP_INTRODUCED_IN_LLVM_4 0
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE___CONFIG_
diff --git a/lib/ktl/include/__config_site b/lib/ktl/include/__config_site
deleted file mode 100644
index 4d2236b..0000000
--- a/lib/ktl/include/__config_site
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2021 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE___CONFIG_SITE_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE___CONFIG_SITE_
-
-// The libc++ internal header <__config> does #include <__config_site> to get
-// definitions that vary by operating system, machine, or configuration. The
-// toolchain's libc++ installation provides include/$triple/.../__config_site
-// files for each $cpu-fuchsia appropriate for normal userland. But the ktl
-// abuse of libc++ is different from public userland libc++, so provide special
-// kernel-appropriate definitions here. This file will be in the include path
-// ahead of any toolchain-supplied header. Also, some special bare-metal build
-// environments such as phys32 or efi that reuse ktl and kernel libc code may
-// use settings that cause the compiler to change the $triple it injects into
-// the include path to one for which no runtimes are built and so there is no
-// __config_site file to be found at all.
-
-// These two are what <__config_site> for Fuchsia userland defines.
-#define _LIBCPP_ABI_VERSION 2
-#define _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS 1
-
-// This has to be defined to some `__*` string but what doesn't really matter.
-#define _LIBCPP_ABI_NAMESPACE __ktl
-
-// When compiling in the UEFI environment, the predefines look like Windows
-// but there is no Windows runtime environment to use.
-#define _LIBCPP_NO_VCRUNTIME 1
-
-// This tells the headers not to use `extern template` declarations that
-// expect specific instantiations/specializations to come from the libc++
-// library rather than the headers. In the kernel, only the headers are
-// ever going to be available.
-#define _LIBCPP_DISABLE_EXTERN_TEMPLATE 1
-
-// This tells <atomic> not to use threading APIs.
-#define _LIBCPP_HAS_NO_PLATFORM_WAIT 1
-
-// This tells <atomic> et al to use <__external_threading> instead
-// of expecting either POSIX or C11 threading APIs.
-#define _LIBCPP_HAS_THREAD_API_EXTERNAL 1
-#define _LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL 1
-
-// <__config> requires that these be set if _LIBCPP_HAS_THREAD_API_EXTERNAL is.
-#define _LIBCPP_HAS_THREADS 1
-#define _LIBCPP_HAS_MONOTONIC_CLOCK 1
-
-// This tells <new> not to use `aligned_alloc` from <stdlib.h>.
-#define _LIBCPP_HAS_NO_C11_ALIGNED_ALLOC 1
-
-// This tells various headers to be strict about what includes what.
-#define _LIBCPP_REMOVE_TRANSITIVE_INCLUDES 1
-
-// This tells libc++ not to expect full locale APIs in some places.
-#define _LIBCPP_HAS_NO_LOCALIZATION 1
-
-// This is unfortunately required even though the kernel does not use wide
-// characters.
-#define _LIBCPP_HAS_WIDE_CHARACTERS 1
-
-// This tells pstl headers to use serial algorithms and not try to
-// do any multithreading.
-#define _LIBCPP_PSTL_CPU_BACKEND_SERIAL 1
-
-// This will probably never be used in code that ktl actually uses.
-// But define it for completeness.
-#define _LIBCPP_INSTRUMENTED_WITH_ASAN __has_feature(address_sanitizer)
-
-// TODO(https://fxbug.dev/42082322): make the hardening mode selectable through build
-// configurations.
-// This sets the default to tell libc++ to not enable assertions to prevent
-// undefined behavior, but may be overridden if _LIBCPP_HARDENING_MODE is
-// defined elsewhere.
-#define _LIBCPP_HARDENING_MODE_DEFAULT _LIBCPP_HARDENING_MODE_NONE
-
-#define _LIBCPP_ASSERTION_SEMANTIC_DEFAULT _LIBCPP_ASSERTION_SEMANTIC_HARDENING_DEPENDENT
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE___CONFIG_SITE_
diff --git a/lib/ktl/include/__configuration/platform.h b/lib/ktl/include/__configuration/platform.h
deleted file mode 100644
index b15e1e0..0000000
--- a/lib/ktl/include/__configuration/platform.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2025 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE___CONFIGURATION_PLATFORM_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE___CONFIGURATION_PLATFORM_H_
-
-// Other libc++ headers use <__configuration/platform.h> but libc++'s
-// <__configuration/platform.h> does not yet recognize the `__PE_COFF__`
-// predefine. Until we support this new predefine upstream,
-// we must define _LIBCPP_OBJECT_FORMAT_COFF for UEFI targets here.
-// TODO(https://fxbug.dev/435771251) -- Support `__PE_COFF__` predefine
-// upstream.
-
-#if defined(__PE_COFF__)
-#define _LIBCPP_OBJECT_FORMAT_COFF 2 // Tell libc++ this is PE-COFF.
-#endif // __PE_COFF__
-
-#include_next <__configuration/platform.h>
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE___CONFIGURATION_PLATFORM_H_
diff --git a/lib/ktl/include/__external_threading b/lib/ktl/include/__external_threading
deleted file mode 100644
index 9cec903..0000000
--- a/lib/ktl/include/__external_threading
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2020 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE___EXTERNAL_THREADING
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE___EXTERNAL_THREADING
-
-// libc++'s <atomic> includes this file via <__threading_support>. It needs
-// these types and functions declared, but only for use in interfaces that
-// aren't supported in the kernel, so stub declarations are all they need.
-
-_LIBCPP_BEGIN_NAMESPACE_STD
-
-struct __libcpp_timespec_t {
- long int tv_sec, tv_nsec;
-};
-
-using __libcpp_thread_id = int;
-
-bool __libcpp_thread_id_equal(__libcpp_thread_id, __libcpp_thread_id);
-bool __libcpp_thread_id_less(__libcpp_thread_id, __libcpp_thread_id);
-__libcpp_thread_id __libcpp_thread_get_current_id();
-
-void __libcpp_thread_sleep_for(chrono::nanoseconds);
-void __libcpp_thread_yield();
-
-// This macro is used unconditionally in <__threading_support> but defined
-// there only conditionally on when <__external_threading> is not used.
-#define _LIBCPP_THREAD_ABI_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY
-
-_LIBCPP_END_NAMESPACE_STD
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE___EXTERNAL_THREADING
diff --git a/lib/ktl/include/climits b/lib/ktl/include/climits
deleted file mode 100644
index 86e537d..0000000
--- a/lib/ktl/include/climits
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2022 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#pragma once
-
-// Other libc++ headers use <climits> but libc++'s <climits> complains if it
-// thinks <limits.h> is not its own wrapper, which we do not need. We always
-// get the kernel's <limits.h> before the libc++ with the way the include paths
-// are set up, which is necessary because of other headers where preempting
-// libc++'s header is unavoidable for the kernel environment.
-
-#include <limits.h>
diff --git a/lib/ktl/include/cmath b/lib/ktl/include/cmath
deleted file mode 100644
index 13b8e6b..0000000
--- a/lib/ktl/include/cmath
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2021 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_CMATH_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_CMATH_
-
-// The kernel doesn't want this file but some libc++ headers we need
-// wind up including it. They don't actually most of the math
-// declarations except under #if conditions that aren't true.
-
-#include <__config>
-#include <type_traits>
-
-_LIBCPP_BEGIN_NAMESPACE_STD
-
-// These are used in templates that won't ever be instantiated in kernel code.
-
-template <typename T>
-constexpr bool isinf(T&& x) {
- static_assert(!is_same_v<T, T>, "must not be instantiated in kernel code");
- return false;
-}
-
-template <typename T>
-constexpr bool isnan(T&& x) {
- static_assert(!is_same_v<T, T>, "must not be instantiated in kernel code");
- return false;
-}
-
-template <typename T>
-constexpr bool signbit(T&& x) {
- static_assert(!is_same_v<T, T>, "must not be instantiated in kernel code");
- return false;
-}
-
-template <typename T>
-constexpr T frexp(T&& x, int* exponent) {
- static_assert(!is_same_v<T, T>, "must not be instantiated in kernel code");
- return x;
-}
-
-template <typename T>
-constexpr auto ceil(T&& x) {
- static_assert(!is_same_v<T, T>, "must not be instantiated in kernel code");
- return x;
-}
-
-_LIBCPP_END_NAMESPACE_STD
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_CMATH_
diff --git a/lib/ktl/include/cstdint b/lib/ktl/include/cstdint
deleted file mode 100644
index 0ab922c..0000000
--- a/lib/ktl/include/cstdint
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2022 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#pragma once
-
-// Other libc++ headers use <cstdint> but libc++'s <cstdint> complains if it
-// thinks <stdint.h> is not its own wrapper, so we define _LIBCPP_STDINT_H. We
-// always get the real <stdint.h> before the libc++ with the way the include
-// paths are set up, which is necessary because of other headers where
-// preempting libc++'s header is unavoidable for the kernel environment.
-
-#include <stdint.h>
-
-#define _LIBCPP_STDINT_H
-#include_next <cstdint>
diff --git a/lib/ktl/include/cstdio b/lib/ktl/include/cstdio
deleted file mode 100644
index 349e736..0000000
--- a/lib/ktl/include/cstdio
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2020 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_CSTDIO_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_CSTDIO_
-
-// The kernel doesn't want this file but some libc++ headers we need
-// wind up including it and they need these declarations.
-//
-// Note this specifically avoids <stdio.h> because libc++ doesn't need that
-// but <string_view> indirectly reaches <cstdio> and the kernel's <stdio.h>
-// uses <ktl/string_view.h> so there would be a circularity.
-
-#include <wchar.h>
-
-#define EOF (-1)
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_CSTDIO_
diff --git a/lib/ktl/include/cstdlib b/lib/ktl/include/cstdlib
deleted file mode 100644
index 25ad762..0000000
--- a/lib/ktl/include/cstdlib
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2018 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#pragma once
-
-// This is used by libc++'s <new> just for std::abort, ::posix_memalign, and
-// ::free.
-
-#include <stdlib.h>
-
-#include <__config>
-
-#define _LIBCPP_UNREACHABLE() __builtin_unreachable()
-
-// This is used by the __libcpp_aligned_alloc inline. Since it always fails
-// that inline will trivially always return nullptr.
-inline int posix_memalign(void** ptr, size_t align, size_t size) { return 1; }
-
-// This is used by the __libcpp_aligned_free inline, which won't really ever be
-// called. The kernel does have a real free declared elsewhere.
-void free(void* ptr);
-
-_LIBCPP_BEGIN_NAMESPACE_STD
-
-using ::abort;
-
-_LIBCPP_END_NAMESPACE_STD
diff --git a/lib/ktl/include/cwchar b/lib/ktl/include/cwchar
deleted file mode 100644
index 4f24c73..0000000
--- a/lib/ktl/include/cwchar
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2020 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_CWCHAR
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_CWCHAR
-
-// The kernel doesn't want this file but some libc++ headers we need
-// wind up including it and they need these declarations.
-
-#include <wchar.h>
-
-#include <__config>
-
-_LIBCPP_BEGIN_NAMESPACE_STD
-
-using ::wmemcpy;
-using ::wmemmove;
-using ::wmemset;
-
-// These are called by libc++ header code. The first two should never actually
-// be called by anything that really gets instantiated in kernel code since
-// wchar_t is never used. However, __constexpr_wmemchr is used by places like
-// std::find not just for wchar_t per se but for any trivial type of the same
-// size, e.g. uint32_t. So its code must be correct. The other two are filled
-// out just in case of an unexpected use.
-
-constexpr size_t __constexpr_wcslen(const wchar_t* str) {
- size_t len = 0;
- while (*str++ != L'\0') {
- ++len;
- }
- return len;
-}
-
-constexpr int __constexpr_wmemcmp(const wchar_t* lhs, const wchar_t* rhs, size_t count) {
- while (count-- > 0) {
- if (*lhs != *rhs) {
- return static_cast<int>(*lhs - *rhs);
- }
- ++lhs;
- ++rhs;
- }
- return 0;
-}
-
-template <class Tp, class Up>
-constexpr Tp* __constexpr_wmemchr(Tp* str, Up wc, size_t count) {
- while (count-- > 0) {
- if (*str == wc) {
- return str;
- }
- ++str;
- }
- return nullptr;
-}
-
-_LIBCPP_END_NAMESPACE_STD
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_CWCHAR
diff --git a/lib/ktl/include/ktl/algorithm.h b/lib/ktl/include/ktl/algorithm.h
deleted file mode 100644
index 7b7baed..0000000
--- a/lib/ktl/include/ktl/algorithm.h
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright 2020 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_ALGORITHM_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_ALGORITHM_H_
-
-#include <algorithm>
-
-namespace ktl {
-
-// "Non-modifying sequence operations"
-using std::adjacent_find;
-using std::all_of;
-using std::any_of;
-using std::count;
-using std::count_if;
-using std::find;
-using std::find_end;
-using std::find_first_of;
-using std::find_if;
-using std::find_if_not;
-using std::for_each;
-using std::for_each_n;
-using std::none_of;
-using std::search;
-using std::search_n;
-
-namespace ranges {
-using std::ranges::adjacent_find;
-using std::ranges::all_of;
-using std::ranges::any_of;
-using std::ranges::count;
-using std::ranges::count_if;
-using std::ranges::find;
-using std::ranges::find_end;
-using std::ranges::find_first_of;
-using std::ranges::find_if;
-using std::ranges::find_if_not;
-using std::ranges::for_each;
-using std::ranges::for_each_n;
-using std::ranges::none_of;
-using std::ranges::search;
-using std::ranges::search_n;
-} // namespace ranges
-
-// "Modifying sequence operations" (subset)
-using std::copy;
-using std::copy_if;
-using std::fill;
-using std::fill_n;
-using std::reverse;
-using std::shuffle;
-using std::transform;
-
-namespace ranges {
-using std::ranges::copy;
-using std::ranges::copy_if;
-using std::ranges::fill;
-using std::ranges::fill_n;
-using std::ranges::reverse;
-using std::ranges::shuffle;
-using std::ranges::transform;
-} // namespace ranges
-
-// "Sorting operations" (subset)
-using std::is_sorted;
-using std::is_sorted_until;
-using std::sort;
-using std::stable_sort;
-
-namespace ranges {
-using std::ranges::is_sorted;
-using std::ranges::is_sorted_until;
-using std::ranges::sort;
-using std::ranges::stable_sort;
-} // namespace ranges
-
-// "Binary search operations (on sorted ranges)"
-using std::binary_search;
-using std::equal_range;
-using std::lower_bound;
-using std::upper_bound;
-
-namespace ranges {
-using std::ranges::binary_search;
-using std::ranges::equal_range;
-using std::ranges::lower_bound;
-using std::ranges::upper_bound;
-} // namespace ranges
-
-// "Minimum/maximum operations"
-using std::clamp;
-using std::equal;
-using std::max;
-using std::max_element;
-using std::min;
-using std::min_element;
-using std::minmax;
-using std::minmax_element;
-
-namespace ranges {
-using std::ranges::clamp;
-using std::ranges::max;
-using std::ranges::max_element;
-using std::ranges::min;
-using std::ranges::min_element;
-using std::ranges::minmax;
-using std::ranges::minmax_element;
-} // namespace ranges
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_ALGORITHM_H_
diff --git a/lib/ktl/include/ktl/array.h b/lib/ktl/include/ktl/array.h
deleted file mode 100644
index 90d445a..0000000
--- a/lib/ktl/include/ktl/array.h
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2019 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_ARRAY_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_ARRAY_H_
-
-#include <array>
-
-namespace ktl {
-
-using std::array;
-using std::to_array;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_ARRAY_H_
diff --git a/lib/ktl/include/ktl/atomic.h b/lib/ktl/include/ktl/atomic.h
deleted file mode 100644
index 017db6b..0000000
--- a/lib/ktl/include/ktl/atomic.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2019 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_ATOMIC_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_ATOMIC_H_
-
-#include <atomic>
-
-// On arm64 and x86-64, lock-free 128-bit (16-byte) atomics are available.
-// But riscv64 does not support them.
-#ifdef __riscv
-#define HAVE_ATOMIC_128 0
-#else
-#define HAVE_ATOMIC_128 1
-#endif
-
-namespace ktl {
-
-using std::atomic;
-using std::atomic_init;
-using std::atomic_ref;
-
-using std::memory_order;
-
-using std::memory_order_acq_rel;
-using std::memory_order_acquire;
-using std::memory_order_consume;
-using std::memory_order_relaxed;
-using std::memory_order_release;
-using std::memory_order_seq_cst;
-
-using std::atomic_signal_fence;
-using std::atomic_thread_fence;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_ATOMIC_H_
diff --git a/lib/ktl/include/ktl/bit.h b/lib/ktl/include/ktl/bit.h
deleted file mode 100644
index c3ccb7e..0000000
--- a/lib/ktl/include/ktl/bit.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2021 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_BIT_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_BIT_H_
-
-#include <bit>
-
-namespace ktl {
-
-using std::bit_cast;
-using std::bit_ceil;
-using std::bit_floor;
-using std::bit_width;
-using std::countl_one;
-using std::countl_zero;
-using std::countr_one;
-using std::countr_zero;
-using std::endian;
-using std::has_single_bit;
-using std::popcount;
-using std::rotl;
-using std::rotr;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_BIT_H_
diff --git a/lib/ktl/include/ktl/byte.h b/lib/ktl/include/ktl/byte.h
deleted file mode 100644
index 26b1294..0000000
--- a/lib/ktl/include/ktl/byte.h
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2020 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_BYTE_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_BYTE_H_
-
-#include <cstddef>
-
-namespace ktl {
-
-using std::byte;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_BYTE_H_
diff --git a/lib/ktl/include/ktl/concepts.h b/lib/ktl/include/ktl/concepts.h
deleted file mode 100644
index 93b3f62..0000000
--- a/lib/ktl/include/ktl/concepts.h
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2025 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_CONCEPTS_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_CONCEPTS_H_
-
-#include <concepts>
-
-namespace ktl {
-
-using std::assignable_from;
-using std::common_reference_with;
-using std::common_with;
-using std::constructible_from;
-using std::copy_constructible;
-using std::copyable;
-using std::default_initializable;
-using std::derived_from;
-using std::destructible;
-using std::equality_comparable;
-using std::equality_comparable_with;
-using std::equivalence_relation;
-using std::integral;
-using std::invocable;
-using std::movable;
-using std::move_constructible;
-using std::predicate;
-using std::regular;
-using std::regular_invocable;
-using std::relation;
-using std::same_as;
-using std::semiregular;
-using std::signed_integral;
-using std::strict_weak_order;
-using std::swappable;
-using std::swappable_with;
-using std::totally_ordered;
-using std::totally_ordered_with;
-using std::unsigned_integral;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_CONCEPTS_H_
diff --git a/lib/ktl/include/ktl/declval.h b/lib/ktl/include/ktl/declval.h
deleted file mode 100644
index 925fe9c..0000000
--- a/lib/ktl/include/ktl/declval.h
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2021 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_DECLVAL_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_DECLVAL_H_
-
-#include <utility>
-
-namespace ktl {
-
-using std::declval;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_DECLVAL_H_
diff --git a/lib/ktl/include/ktl/enforce.h b/lib/ktl/include/ktl/enforce.h
deleted file mode 100644
index 9c948d2..0000000
--- a/lib/ktl/include/ktl/enforce.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2021 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_ENFORCE_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_ENFORCE_H_
-
-// `#include <ktl/enforce.h>` should appear last in the include list of any
-// kernel .cc file that uses `ktl` headers. Since many other kernel headers
-// use ktl headers and this must appear after *all* uses of any ktl headers,
-// whether direct or indirect, it's a good idea to just make sure that
-// `#include <ktl/enforce.h>` in each .cc file of kernel-only code (i.e. code
-// that might ever use ktl directly).
-//
-// The //.clang-format file has a rule to ensure this file is placed last and
-// separate from the other #include lines, so just adding the `#include` line
-// to each source file should make sure its placement stays correct.
-
-// This directive tells the preprocessor that the identifier `std` cannot
-// appear in any context (except the expansion of a macro already defined
-// before now). This ensures that any stray use of std::name in kernel code
-// can get caught at compile time so people remember to use ktl::name instead
-// and ensure that what they're using is in the approved ktl subset of std.
-//
-// It also affects harmless use of `std` as a local variable name or whatever,
-// but we can live without kernel code being able to use that one name.
-#pragma GCC poison std
-
-// Also poison the stdcompat namespaces, as the same rules for ktl wrappers
-// apply to those as std proper.
-#pragma GCC poison cpp17
-#pragma GCC poison cpp20
-#pragma GCC poison cpp23
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_ENFORCE_H_
diff --git a/lib/ktl/include/ktl/forward.h b/lib/ktl/include/ktl/forward.h
deleted file mode 100644
index 62874e6..0000000
--- a/lib/ktl/include/ktl/forward.h
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2018 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_INCLUDE_KTL_FORWARD_H_
-#define ZIRCON_KERNEL_INCLUDE_KTL_FORWARD_H_
-
-#include <utility>
-
-namespace ktl {
-
-using std::forward;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_INCLUDE_KTL_FORWARD_H_
diff --git a/lib/ktl/include/ktl/functional.h b/lib/ktl/include/ktl/functional.h
deleted file mode 100644
index 026f4cf..0000000
--- a/lib/ktl/include/ktl/functional.h
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2023 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_FUNCTIONAL_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_FUNCTIONAL_H_
-
-#include <functional>
-
-namespace ktl {
-
-using std::bind_front;
-using std::invoke;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_FUNCTIONAL_H_
diff --git a/lib/ktl/include/ktl/initializer_list.h b/lib/ktl/include/ktl/initializer_list.h
deleted file mode 100644
index 3a69abb..0000000
--- a/lib/ktl/include/ktl/initializer_list.h
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2021 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_INITIALIZER_LIST_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_INITIALIZER_LIST_H_
-
-#include <initializer_list>
-
-namespace ktl {
-
-using std::initializer_list;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_INITIALIZER_LIST_H_
diff --git a/lib/ktl/include/ktl/inplace_vector.h b/lib/ktl/include/ktl/inplace_vector.h
deleted file mode 100644
index 4eaf92b..0000000
--- a/lib/ktl/include/ktl/inplace_vector.h
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2025 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_INPLACE_VECTOR_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_INPLACE_VECTOR_H_
-
-#include <lib/stdcompat/inplace_vector.h>
-
-namespace ktl {
-
-using cpp26::inplace_vector;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_INPLACE_VECTOR_H_
diff --git a/lib/ktl/include/ktl/iterator.h b/lib/ktl/include/ktl/iterator.h
deleted file mode 100644
index 58d92be..0000000
--- a/lib/ktl/include/ktl/iterator.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2020 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_ITERATOR_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_ITERATOR_H_
-
-#include <iterator>
-
-namespace ktl {
-
-// This includes only the "iterator operations" and "range access" subsets
-// of the <iterator> API. These are useful for treating all sorts of
-// container types, raw arrays, pointers, and {...} literal lists uniformly.
-// It leaves out iterator_traits and the "iterator adaptors" subset, which
-// have not yet seemed desirable to employ in kernel code.
-
-using std::advance;
-using std::begin;
-using std::cbegin;
-using std::cend;
-using std::crbegin;
-using std::crend;
-using std::data;
-using std::distance;
-using std::empty;
-using std::end;
-using std::next;
-using std::prev;
-using std::rbegin;
-using std::rend;
-using std::size;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_ITERATOR_H_
diff --git a/lib/ktl/include/ktl/limits.h b/lib/ktl/include/ktl/limits.h
deleted file mode 100644
index 8f6adf4..0000000
--- a/lib/ktl/include/ktl/limits.h
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2019 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_INCLUDE_KTL_LIMITS_H_
-#define ZIRCON_KERNEL_INCLUDE_KTL_LIMITS_H_
-
-#include <limits>
-
-namespace ktl {
-
-using std::numeric_limits;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_INCLUDE_KTL_LIMITS_H_
diff --git a/lib/ktl/include/ktl/memory.h b/lib/ktl/include/ktl/memory.h
deleted file mode 100644
index caf8d47..0000000
--- a/lib/ktl/include/ktl/memory.h
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2024 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_MEMORY_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_MEMORY_H_
-
-#include <memory>
-
-namespace ktl {
-
-using std::addressof;
-using std::to_address;
-
-using std::align;
-using std::assume_aligned;
-
-using std::default_delete;
-
-using std::pointer_traits;
-
-using std::construct_at;
-using std::destroy;
-using std::destroy_at;
-using std::destroy_n;
-using std::uninitialized_copy;
-using std::uninitialized_copy_n;
-using std::uninitialized_default_construct;
-using std::uninitialized_default_construct_n;
-using std::uninitialized_fill;
-using std::uninitialized_fill_n;
-using std::uninitialized_move;
-using std::uninitialized_move_n;
-using std::uninitialized_value_construct;
-using std::uninitialized_value_construct_n;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_MEMORY_H_
diff --git a/lib/ktl/include/ktl/new.h b/lib/ktl/include/ktl/new.h
deleted file mode 100644
index 12def96..0000000
--- a/lib/ktl/include/ktl/new.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2026 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_NEW_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_NEW_H_
-
-#include <new>
-
-namespace ktl {
-
-using std::align_val_t;
-
-using std::destroying_delete;
-using std::destroying_delete_t;
-using std::nothrow;
-using std::nothrow_t;
-
-using std::launder;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_NEW_H_
diff --git a/lib/ktl/include/ktl/numeric.h b/lib/ktl/include/ktl/numeric.h
deleted file mode 100644
index 18cad1f..0000000
--- a/lib/ktl/include/ktl/numeric.h
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2023 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_NUMERIC_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_NUMERIC_H_
-
-#include <numeric>
-
-namespace ktl {
-
-// "Numeric operations"
-using std::accumulate;
-using std::reduce;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_NUMERIC_H_
diff --git a/lib/ktl/include/ktl/optional.h b/lib/ktl/include/ktl/optional.h
deleted file mode 100644
index e08451d..0000000
--- a/lib/ktl/include/ktl/optional.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2020 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_OPTIONAL_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_OPTIONAL_H_
-
-#include <optional>
-
-namespace ktl {
-
-using std::in_place;
-using std::in_place_t;
-using std::make_optional;
-using std::nullopt;
-using std::nullopt_t;
-using std::optional;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_OPTIONAL_H_
diff --git a/lib/ktl/include/ktl/ranges.h b/lib/ktl/include/ktl/ranges.h
deleted file mode 100644
index 8e3ee09..0000000
--- a/lib/ktl/include/ktl/ranges.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2025 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_RANGES_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_RANGES_H_
-
-#include <ranges>
-
-namespace ktl {
-
-// This can't be a namespace alias like `views` because <ktl/algorithm.h> also
-// adds things to ktl::ranges and redundant namespace aliases aren't allowed.
-namespace ranges {
-using namespace std::ranges;
-} // namespace ranges
-
-// Only this header defines this namespace, so a simple namespace alias works.
-namespace views = std::views;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_RANGES_H_
diff --git a/lib/ktl/include/ktl/ref.h b/lib/ktl/include/ktl/ref.h
deleted file mode 100644
index fdaddc4..0000000
--- a/lib/ktl/include/ktl/ref.h
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2023 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_REF_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_REF_H_
-
-#include <functional>
-
-namespace ktl {
-
-using std::cref;
-using std::ref;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_REF_H_
diff --git a/lib/ktl/include/ktl/source_location.h b/lib/ktl/include/ktl/source_location.h
deleted file mode 100644
index 121668d..0000000
--- a/lib/ktl/include/ktl/source_location.h
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2025 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_SOURCE_LOCATION_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_SOURCE_LOCATION_H_
-
-#include <source_location>
-
-namespace ktl {
-
-using std::source_location;
-
-}
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_SOURCE_LOCATION_H_
diff --git a/lib/ktl/include/ktl/span.h b/lib/ktl/include/ktl/span.h
deleted file mode 100644
index deb1df3..0000000
--- a/lib/ktl/include/ktl/span.h
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2020 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_SPAN_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_SPAN_H_
-
-#include <span>
-
-namespace ktl {
-
-using std::span;
-
-using std::as_bytes;
-using std::as_writable_bytes;
-
-using std::dynamic_extent;
-
-using std::data;
-using std::size;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_SPAN_H_
diff --git a/lib/ktl/include/ktl/string_view.h b/lib/ktl/include/ktl/string_view.h
deleted file mode 100644
index 9ba949f..0000000
--- a/lib/ktl/include/ktl/string_view.h
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2020 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_STRING_VIEW_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_STRING_VIEW_H_
-
-#include <string_view>
-
-namespace ktl {
-
-using std::basic_string_view;
-using std::string_view;
-
-} // namespace ktl
-
-// Just including <ktl/string_view.h> enables "foo"sv literals.
-using namespace std::literals::string_view_literals;
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_STRING_VIEW_H_
diff --git a/lib/ktl/include/ktl/tuple.h b/lib/ktl/include/ktl/tuple.h
deleted file mode 100644
index b00c7e0..0000000
--- a/lib/ktl/include/ktl/tuple.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2024 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_TUPLE_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_TUPLE_H_
-
-#include <tuple>
-
-namespace ktl {
-
-using std::apply;
-using std::forward_as_tuple;
-using std::get;
-using std::ignore;
-using std::make_from_tuple;
-using std::make_tuple;
-using std::tie;
-using std::tuple;
-using std::tuple_cat;
-using std::tuple_element;
-using std::tuple_element_t;
-using std::tuple_size;
-using std::tuple_size_v;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_TUPLE_H_
diff --git a/lib/ktl/include/ktl/type_traits.h b/lib/ktl/include/ktl/type_traits.h
deleted file mode 100644
index fc0a2f0..0000000
--- a/lib/ktl/include/ktl/type_traits.h
+++ /dev/null
@@ -1,165 +0,0 @@
-// Copyright 2019 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_TYPE_TRAITS_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_TYPE_TRAITS_H_
-
-#include <type_traits>
-
-namespace ktl {
-
-using std::add_const;
-using std::add_const_t;
-
-using std::is_array;
-using std::is_array_v;
-using std::is_bounded_array;
-using std::is_bounded_array_v;
-using std::is_unbounded_array;
-using std::is_unbounded_array_v;
-
-using std::false_type;
-using std::true_type;
-
-using std::conjunction;
-using std::conjunction_v;
-
-using std::disjunction;
-using std::disjunction_v;
-
-using std::conditional;
-using std::conditional_t;
-
-using std::decay;
-using std::decay_t;
-
-using std::void_t;
-
-using std::enable_if;
-using std::enable_if_t;
-
-using std::has_unique_object_representations;
-using std::has_unique_object_representations_v;
-
-using std::is_base_of;
-using std::is_base_of_v;
-
-using std::is_const;
-using std::is_const_v;
-
-using std::is_constructible;
-using std::is_constructible_v;
-
-using std::is_copy_constructible;
-using std::is_copy_constructible_v;
-
-using std::is_copy_assignable;
-using std::is_copy_assignable_v;
-
-using std::is_default_constructible;
-using std::is_default_constructible_v;
-
-using std::is_class;
-using std::is_class_v;
-
-using std::is_enum;
-using std::is_enum_v;
-
-using std::is_floating_point;
-using std::is_floating_point_v;
-
-using std::is_function;
-using std::is_function_v;
-
-using std::is_integral;
-using std::is_integral_v;
-
-using std::invoke_result_t;
-using std::is_invocable;
-using std::is_invocable_r;
-using std::is_invocable_r_v;
-using std::is_invocable_v;
-
-using std::is_lvalue_reference;
-using std::is_lvalue_reference_v;
-
-using std::is_move_constructible;
-using std::is_move_constructible_v;
-
-using std::is_move_assignable;
-using std::is_move_assignable_v;
-
-using std::is_pod;
-using std::is_pod_v;
-
-using std::is_same;
-using std::is_same_v;
-
-using std::is_signed;
-using std::is_signed_v;
-
-using std::is_standard_layout;
-using std::is_standard_layout_v;
-
-using std::is_empty;
-using std::is_empty_v;
-
-using std::is_trivial;
-using std::is_trivial_v;
-
-using std::is_trivially_copy_assignable;
-using std::is_trivially_copy_assignable_v;
-
-using std::is_trivially_copy_constructible;
-using std::is_trivially_copy_constructible_v;
-
-using std::is_trivially_constructible;
-using std::is_trivially_constructible_v;
-
-using std::is_trivially_destructible;
-using std::is_trivially_destructible_v;
-
-using std::is_trivially_move_assignable;
-using std::is_trivially_move_assignable_v;
-
-using std::is_trivially_move_constructible;
-using std::is_trivially_move_constructible_v;
-
-using std::is_member_object_pointer;
-using std::is_member_object_pointer_v;
-
-using std::is_unsigned;
-using std::is_unsigned_v;
-
-using std::is_void;
-using std::is_void_v;
-
-using std::make_signed;
-using std::make_signed_t;
-using std::make_unsigned;
-using std::make_unsigned_t;
-
-using std::remove_all_extents;
-using std::remove_all_extents_t;
-
-using std::remove_const;
-using std::remove_const_t;
-
-using std::remove_extent;
-using std::remove_extent_t;
-
-using std::remove_pointer;
-using std::remove_pointer_t;
-
-using std::remove_reference;
-using std::remove_reference_t;
-
-using std::underlying_type;
-using std::underlying_type_t;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_TYPE_TRAITS_H_
diff --git a/lib/ktl/include/ktl/unique_ptr.h b/lib/ktl/include/ktl/unique_ptr.h
deleted file mode 100644
index e2d2f39..0000000
--- a/lib/ktl/include/ktl/unique_ptr.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2018 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_INCLUDE_KTL_UNIQUE_PTR_H_
-#define ZIRCON_KERNEL_INCLUDE_KTL_UNIQUE_PTR_H_
-
-#include <memory>
-#include <new>
-
-#include <fbl/alloc_checker.h>
-#include <ktl/type_traits.h>
-
-namespace ktl {
-
-using std::align_val_t;
-using std::unique_ptr;
-
-template <typename T, typename... Args>
-ktl::enable_if_t<!ktl::is_array_v<T>, unique_ptr<T>> make_unique(fbl::AllocChecker* ac,
- Args&&... args) {
- return unique_ptr<T>(new (ac) T(std::forward<Args>(args)...));
-}
-
-// For an unbounded array of given size, each element is value-initialized.
-// This is different from plain `new (ac) T[n]`, which performs default-initialization.
-template <typename T, typename... Args>
-ktl::enable_if_t<ktl::is_unbounded_array_v<T>, unique_ptr<T>> make_unique(fbl::AllocChecker* ac,
- size_t n) {
- return unique_ptr<T>(new (ac) ktl::remove_extent_t<T>[n]());
-}
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_INCLUDE_KTL_UNIQUE_PTR_H_
diff --git a/lib/ktl/include/ktl/utility.h b/lib/ktl/include/ktl/utility.h
deleted file mode 100644
index 1e699e2..0000000
--- a/lib/ktl/include/ktl/utility.h
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2018 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_UTILITY_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_UTILITY_H_
-
-#include <utility>
-
-namespace ktl {
-
-using std::declval;
-using std::exchange;
-using std::forward;
-using std::move;
-using std::swap;
-
-using std::in_place;
-using std::in_place_index;
-using std::in_place_index_t;
-using std::in_place_t;
-
-using std::index_sequence;
-using std::index_sequence_for;
-using std::integer_sequence;
-using std::make_index_sequence;
-using std::make_integer_sequence;
-
-using std::get;
-using std::make_pair;
-using std::pair;
-using std::piecewise_construct;
-using std::piecewise_construct_t;
-
-using std::ignore;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_UTILITY_H_
diff --git a/lib/ktl/include/ktl/variant.h b/lib/ktl/include/ktl/variant.h
deleted file mode 100644
index 68ef362..0000000
--- a/lib/ktl/include/ktl/variant.h
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2020 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_VARIANT_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_VARIANT_H_
-
-#include <utility>
-#include <variant>
-
-namespace ktl {
-
-using std::get;
-using std::get_if;
-using std::holds_alternative;
-using std::in_place_type;
-using std::in_place_type_t;
-using std::monostate;
-using std::variant;
-using std::variant_alternative;
-using std::variant_alternative_t;
-using std::variant_npos;
-using std::variant_size;
-using std::variant_size_v;
-using std::visit;
-
-} // namespace ktl
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_KTL_VARIANT_H_
diff --git a/lib/ktl/include/limits b/lib/ktl/include/limits
deleted file mode 100644
index d8ea37d..0000000
--- a/lib/ktl/include/limits
+++ /dev/null
@@ -1,110 +0,0 @@
-// Copyright 2018 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#pragma once
-
-// TODO(https://fxbug.dev/42106615): The libc++ <limits> defines specializations for
-// floating-point types, which in GCC is incompatible with the command-line
-// switches used for the kernel. So this header fakes out the other libc++
-// headers with a std::numeric_limits that is close enough.
-
-#include <limits.h>
-
-namespace std {
-
-template <class T>
-class numeric_limits {};
-
-#define SPECIALIZE_INT(type, sign, modulo, digits_, min_, max_) \
- template <> \
- class numeric_limits<type> { \
- public: \
- static constexpr bool is_specialized = true; \
- static constexpr bool is_signed = (sign); \
- static constexpr bool is_integer = true; \
- static constexpr bool is_exact = true; \
- static constexpr bool has_infinity = false; \
- static constexpr bool has_quiet_NaN = false; \
- static constexpr bool has_signaling_NaN = false; \
- static constexpr bool has_denorm = false; \
- static constexpr bool has_denorm_loss = false; \
- static constexpr bool round_style = false; \
- static constexpr bool is_iec559 = false; \
- static constexpr bool is_bounded = true; \
- static constexpr bool is_modulo = (modulo); \
- static constexpr int digits = (digits_); \
- static constexpr int digits10 = (digits_) * 3 / 10; \
- static constexpr int max_digits10 = 0; \
- static constexpr int radix = 2; \
- static constexpr int min_exponent = 0; \
- static constexpr int min_exponent10 = 0; \
- static constexpr int max_exponent = 0; \
- static constexpr int max_exponent10 = 0; \
- static constexpr bool traps = false; \
- static constexpr bool tinyness_before = false; \
- static constexpr type min() { \
- return (min_); \
- } \
- static constexpr type lowest() { \
- return (min_); \
- } \
- static constexpr type max() { \
- return (max_); \
- } \
- static constexpr type epsilon() { \
- return 0; \
- } \
- static constexpr type round_error() { \
- return 0; \
- } \
- static constexpr type infinity() { \
- return 0; \
- } \
- static constexpr type quiet_NaN() { \
- return 0; \
- } \
- static constexpr type signaling_NaN() { \
- return 0; \
- } \
- static constexpr type denorm_min() { \
- return 0; \
- } \
- }
-
-#define SPECIALIZE_SIGNED(type, min, max) \
- SPECIALIZE_INT(type, true, false, CHAR_BIT * sizeof(type) - 1, min, max)
-
-#define SPECIALIZE_UNSIGNED(type, min, max) \
- SPECIALIZE_INT(type, false, true, CHAR_BIT * sizeof(type), min, max)
-
-SPECIALIZE_INT(bool, false, true, 1, false, true);
-#if CHAR_MIN == 0
-SPECIALIZE_UNSIGNED(char, CHAR_MIN, CHAR_MAX);
-#else
-SPECIALIZE_SIGNED(char, CHAR_MIN, CHAR_MAX);
-#endif
-SPECIALIZE_SIGNED(signed char, SCHAR_MIN, SCHAR_MAX);
-SPECIALIZE_UNSIGNED(unsigned char, 0, UCHAR_MAX);
-
-SPECIALIZE_SIGNED(short, SHRT_MIN, SHRT_MAX);
-SPECIALIZE_UNSIGNED(unsigned short, 0, USHRT_MAX);
-SPECIALIZE_SIGNED(int, INT_MIN, INT_MAX);
-SPECIALIZE_UNSIGNED(unsigned int, 0, UINT_MAX);
-SPECIALIZE_SIGNED(long, LONG_MIN, LONG_MAX);
-SPECIALIZE_UNSIGNED(unsigned long, 0, ULONG_MAX);
-SPECIALIZE_SIGNED(long long, (-__LONG_LONG_MAX__ - 1LL), __LONG_LONG_MAX__);
-SPECIALIZE_UNSIGNED(unsigned long long, 0, (__LONG_LONG_MAX__ * 2ULL + 1ULL));
-
-#ifdef __SIZEOF_INT128__
-SPECIALIZE_SIGNED(__int128_t, (__int128_t{1} << 127), (~__uint128_t{0} ^ (__int128_t{1} << 127)));
-SPECIALIZE_UNSIGNED(__uint128_t, 0, (~__uint128_t{0}));
-#endif
-
-#undef SPECIALIZE_SIGNED
-#undef SPECIALIZE_UNSIGNED
-#undef SPECIALIZE_INT
-
-} // namespace std
diff --git a/lib/ktl/include/time.h b/lib/ktl/include/time.h
deleted file mode 100644
index 138801f..0000000
--- a/lib/ktl/include/time.h
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2020 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_TIME_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_TIME_H_
-
-#include <stddef.h>
-
-// <zircon/time.h> uses these when __has_include(<time.h>).
-typedef long int time_t;
-struct timespec {
- time_t tv_sec;
- long int tv_nsec;
-};
-
-// The kernel doesn't want this file but some libc++ headers we need
-// wind up including it and they need these declarations.
-
-#ifdef __cplusplus
-
-using clock_t = long int;
-struct tm {};
-char* asctime(tm*) noexcept;
-clock_t clock() noexcept;
-char* ctime(const time_t*) noexcept;
-double difftime(time_t, time_t) noexcept;
-tm* gmtime(const time_t*) noexcept;
-tm* localtime(const time_t*) noexcept;
-time_t mktime(tm*) noexcept;
-size_t strftime(char*, size_t, const char*, const tm*) noexcept;
-time_t time(time_t*) noexcept;
-int timespec_get(timespec* ts, int) noexcept;
-
-#endif // __cplusplus
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_TIME_H_
diff --git a/lib/ktl/include/version b/lib/ktl/include/version
deleted file mode 100644
index ba04749..0000000
--- a/lib/ktl/include/version
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2024 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#pragma once
-
-#include_next <version>
-
-// We want to be able to implement specialization for std::formatter in common libraries for kernel
-// and userspace. By undefing it here, we allow those libraries to avoid exposing that code to the
-// kernel where it's not supported.
-#undef __cpp_lib_format
diff --git a/lib/ktl/include/wchar.h b/lib/ktl/include/wchar.h
deleted file mode 100644
index b3f2ccb..0000000
--- a/lib/ktl/include/wchar.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2023 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#ifndef ZIRCON_KERNEL_LIB_KTL_INCLUDE_WCHAR_H_
-#define ZIRCON_KERNEL_LIB_KTL_INCLUDE_WCHAR_H_
-
-// This file is included by <cstdio> and the like that are used from other
-// libc++ headers that are wrapped by ktl. This file exists to preempt those
-// inclusions so that libc++'s <wchar.h> wrapper header won't be used, since
-// it's not compatible with the kernel environment. However, other libc++
-// headers also use `#include_next <wchar.h>` to get to "the system libc"
-// version of the header. To satisfy those, include-after/wchar.h provides the
-// actual declarations needed from the standard C <wchar.h> API. So this
-// header just defers to that one, but must exist separately in this directory
-// so that it preempt's libc++'s wrapper. This can't itself use #include_next
-// because that would reach libc++'s wrapper before the include-after file.
-
-#include "../include-after/wchar.h"
-
-#endif // ZIRCON_KERNEL_LIB_KTL_INCLUDE_WCHAR_H_
diff --git a/lib/ktl/popcount.cc b/lib/ktl/popcount.cc
deleted file mode 100644
index 07b7888..0000000
--- a/lib/ktl/popcount.cc
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright 2019 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#include <stdint.h>
-
-// When the compiler doesn't inline __builtin_popcount{,l}, it calls these.
-extern "C" int __popcountsi2(uint32_t val);
-extern "C" int __popcountdi2(uint64_t val);
-// If the compiler doesn't inline __builtin_popcount % 2 it calls this.
-extern "C" int __paritydi2(uint64_t val);
-
-extern "C" int __popcountsi2(uint32_t val) {
- // Implement a log2(bits) popcount, with a few tricks to save some
- // instructions.
- //
- // The general idea here is to simply add up the bits in the word in
- // parallel, storing intermediate results in different bit positions in
- // the word as we go, and eventually arriving at a sum which is the
- // popcount of the word.
- //
- // For example, consider an 8 bit integer written as
- //
- // b7 b6 b5 b4 b3 b2 b1 b0
- //
- // Each of the bits in the word represent a partial sum that, when added
- // together, produce our result. We can compute...
- //
- // (
- // b7 b6 b5 b4 b3 b2 b1 b0 &
- // 0 1 0 1 0 1 0 1 =
- // 0 b6 0 b4 0 b2 0 b0
- // ) + (
- // b7 b6 b5 b4 b3 b2 b1 b0 >> 1 =
- // 0 b7 b6 b5 b4 b3 b2 b1 &
- // 0 1 0 1 0 1 0 1 =
- // 0 b7 0 b5 0 b3 0 b1
- // ) =
- // b7+b6 b5+b4 b3+b2 b1+b0
- //
- // And now we have 4 partial sums, each of which takes two bits of
- // storage instead of one. Repeating this process with appropriate
- // masks and shifts will eventually give us the answer we are looking
- // for. After the next step, we will have partial sums which require 3
- // bits of storage, but aligned to 4 bit boundaries; so...
- //
- // 0 (b7+b6+b5+b4) 0 (b3+b2+b1+b0)
- //
- // After the last step, we will get the final sum stored in 4 bits, with
- // guaranteed 0s for the upper bits.
- // aligned to ...
- //
- // 0 0 0 0 (b7+b6+b5+b4+b3+b2+b1+b0)
- //
- // While this is the general idea, it turns out that we only need to
- // follow this exact process during step #2. For each of the other
- // steps (there will be 5 for a 32 bit integer) we can shave a few
- // cycles by taking advantage of some of the particular properties of
- // each step. See the comments below.
- constexpr uint32_t mask1 = 0x55555555;
- constexpr uint32_t mask2 = 0x33333333;
- constexpr uint32_t mask3 = 0x0F0F0F0F;
- constexpr uint32_t mult1 = 0x01010101;
-
- // Step 1:
- // While we could compute (val & mask) + ((val >> 1) & mask), we can
- // actually save one of the mask operations by subtracting instead of
- // adding. Consider the following truth table...
- //
- // In | >>1 | & | - |
- // X00 | XX0 | X00 | X00 |
- // X01 | XX0 | X00 | X01 |
- // X10 | XX1 | X01 | X01 |
- // X11 | XX1 | X01 | X10 |
- //
- val = val - ((val >> 1) & mask1);
-
- // Step 2:
- // This is simply the operation described in the overview, adding a
- // bunch of 2 bit partials to produce a 3 bit result, but which is
- // aligned on 4 bit boundaries (where the MSB of each 4 bit nibble is
- // guaranteed to be 0)
- val = (val & mask2) + ((val >> 2) & mask2);
-
- // Step 3:
- // Again, we can save a mask operation here. This time, it is because
- // the we know that all bit positions ((i * 4) + 3) are guaranteed to be
- // zero. We can simply shift by 4 and add the partial sums. Any
- // overflow will go into the ((i * 4) + 3) position and not interfere
- // with any of the other partial sums.
- val = (val + (val >> 4)) & mask3;
-
- // Step 4 + 5:
- // Finally, we can combine steps 4 and 5 using a multiply. We have 4
- // remaining partial sums, each of which is contained in 4 bits and
- // aligned to 8 bit boundaries (with 4 bits of zero in-between each
- // sum). Now, we have enough space that if we could perform all 4 sums
- // at once, we know that the result would fit in (at most) 6 bits, which
- // easily fits in our 8 bits of space.
- //
- // At its heart, multiplying is the equivalent of repeated shifting, and
- // conditional adding. IOW - if I multiply by 0101b, it is basically
- // the same as saying "shift X left by 0, then add that to shift X left
- // by 2" (because bits 0 and bits 2 are the only bits set).
- //
- // So, we have, 0x0A0B0C0D, and want to compute (A+B+C+D). Multiplying
- // our register by 0x01010101 basically does this for us. We are
- // summing our register shifted left by 0 (A), 8 (B), 16 (C) and 24 (D),
- // which puts A+B+C+D into the upper 8 bits of the register. The lower
- // 24 bits are junk, but we know (because of the 0s which separate A-D)
- // that this junk is not going to overflow into our result. All we need
- // to do is right shift by 24, and we are done.
- return (val * mult1) >> 24;
-}
-
-extern "C" int __popcountdi2(uint64_t val) {
- // See notes above for how this works. The 64 bit version of this is
- // identical to the 32 bit version, the only difference is that during
- // the final stage, we use the multiply trick to combine steps 4, 5, and
- // 6 to sum all 8 4-bit partial sums at once, fitting the result into a
- // 7 bit value.
- constexpr uint64_t mask1 = 0x5555555555555555;
- constexpr uint64_t mask2 = 0x3333333333333333;
- constexpr uint64_t mask3 = 0x0F0F0F0F0F0F0F0F;
- constexpr uint64_t mult1 = 0x0101010101010101;
-
- val = val - ((val >> 1) & mask1);
- val = (val & mask2) + ((val >> 2) & mask2);
- val = (val + (val >> 4)) & mask3;
- return static_cast<int>((val * mult1) >> 56);
-}
-
-extern "C" int __paritydi2(uint64_t val) { return __popcountdi2(val) % 2; }
diff --git a/lib/ktl/stub-new.cc b/lib/ktl/stub-new.cc
deleted file mode 100644
index 919d941..0000000
--- a/lib/ktl/stub-new.cc
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2020 The Fuchsia Authors
-//
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT
-
-#include <new>
-
-// std::stable_sort (used as ktl::stable_sort) uses std::get_temporary_buffer,
-// which uses operator new to request a temporary buffer but then works fine
-// if it can't get one. There is no "default" memory allocation in the
-// kernel, so just provide a stub operator new that always fails so
-// std::stable_sort falls back to its no-allocation algorithm.
-
-namespace std {
-
-const nothrow_t nothrow;
-
-} // namespace std
-
-void* operator new(std::size_t, const std::nothrow_t&) noexcept { return nullptr; }
-
-void* operator new(std::size_t, std::align_val_t, const std::nothrow_t&) noexcept {
- return nullptr;
-}