summaryrefslogtreecommitdiff
path: root/lib/ktl/include/__external_threading
blob: 9cec9032360c9c26fb8af6c6a81ed2121b03a8a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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