blob: 9cec9032360c9c26fb8af6c6a81ed2121b03a8a3 [file] [log] [blame]
// 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