summaryrefslogtreecommitdiff
path: root/lib/ktl/include/__external_threading
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ktl/include/__external_threading')
-rw-r--r--lib/ktl/include/__external_threading35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/ktl/include/__external_threading b/lib/ktl/include/__external_threading
new file mode 100644
index 0000000..9cec903
--- /dev/null
+++ b/lib/ktl/include/__external_threading
@@ -0,0 +1,35 @@
+// 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