xref: /openbsd-src/gnu/llvm/lldb/source/Host/common/HostNativeThreadBase.cpp (revision f6aab3d83b51b91c24247ad2c2573574de475a82)
1dda28197Spatrick //===-- HostNativeThreadBase.cpp ------------------------------------------===//
2061da546Spatrick //
3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information.
5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6061da546Spatrick //
7061da546Spatrick //===----------------------------------------------------------------------===//
8061da546Spatrick 
9061da546Spatrick #include "lldb/Host/HostNativeThreadBase.h"
10061da546Spatrick #include "lldb/Host/HostInfo.h"
11061da546Spatrick #include "lldb/Host/ThreadLauncher.h"
12*f6aab3d8Srobert #include "lldb/Utility/LLDBLog.h"
13061da546Spatrick #include "lldb/Utility/Log.h"
14061da546Spatrick 
15061da546Spatrick #include "llvm/ADT/StringExtras.h"
16061da546Spatrick #include "llvm/Support/Threading.h"
17061da546Spatrick 
18061da546Spatrick using namespace lldb;
19061da546Spatrick using namespace lldb_private;
20061da546Spatrick 
HostNativeThreadBase(thread_t thread)21061da546Spatrick HostNativeThreadBase::HostNativeThreadBase(thread_t thread)
22*f6aab3d8Srobert     : m_thread(thread) {}
23061da546Spatrick 
GetSystemHandle() const24061da546Spatrick lldb::thread_t HostNativeThreadBase::GetSystemHandle() const {
25061da546Spatrick   return m_thread;
26061da546Spatrick }
27061da546Spatrick 
GetResult() const28061da546Spatrick lldb::thread_result_t HostNativeThreadBase::GetResult() const {
29061da546Spatrick   return m_result;
30061da546Spatrick }
31061da546Spatrick 
IsJoinable() const32061da546Spatrick bool HostNativeThreadBase::IsJoinable() const {
33061da546Spatrick   return m_thread != LLDB_INVALID_HOST_THREAD;
34061da546Spatrick }
35061da546Spatrick 
Reset()36061da546Spatrick void HostNativeThreadBase::Reset() {
37061da546Spatrick   m_thread = LLDB_INVALID_HOST_THREAD;
38*f6aab3d8Srobert   m_result = 0; // NOLINT(modernize-use-nullptr)
39061da546Spatrick }
40061da546Spatrick 
EqualsThread(lldb::thread_t thread) const41061da546Spatrick bool HostNativeThreadBase::EqualsThread(lldb::thread_t thread) const {
42061da546Spatrick   return m_thread == thread;
43061da546Spatrick }
44061da546Spatrick 
Release()45061da546Spatrick lldb::thread_t HostNativeThreadBase::Release() {
46061da546Spatrick   lldb::thread_t result = m_thread;
47061da546Spatrick   m_thread = LLDB_INVALID_HOST_THREAD;
48*f6aab3d8Srobert   m_result = 0; // NOLINT(modernize-use-nullptr)
49061da546Spatrick 
50061da546Spatrick   return result;
51061da546Spatrick }
52061da546Spatrick 
53061da546Spatrick lldb::thread_result_t
ThreadCreateTrampoline(lldb::thread_arg_t arg)54061da546Spatrick HostNativeThreadBase::ThreadCreateTrampoline(lldb::thread_arg_t arg) {
55*f6aab3d8Srobert   std::unique_ptr<ThreadLauncher::HostThreadCreateInfo> info_up(
56*f6aab3d8Srobert       (ThreadLauncher::HostThreadCreateInfo *)arg);
57*f6aab3d8Srobert   llvm::set_thread_name(info_up->thread_name);
58061da546Spatrick 
59*f6aab3d8Srobert   Log *log = GetLog(LLDBLog::Thread);
60061da546Spatrick   LLDB_LOGF(log, "thread created");
61061da546Spatrick 
62*f6aab3d8Srobert   return info_up->impl();
63061da546Spatrick }
64