| // 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 |