180814287SRaphael Isemann //===-- HostNativeThreadBase.cpp ------------------------------------------===// 239de3110SZachary Turner // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 639de3110SZachary Turner // 739de3110SZachary Turner //===----------------------------------------------------------------------===// 839de3110SZachary Turner 9b9c1b51eSKate Stone #include "lldb/Host/HostNativeThreadBase.h" 1039de3110SZachary Turner #include "lldb/Host/HostInfo.h" 1139de3110SZachary Turner #include "lldb/Host/ThreadLauncher.h" 12c34698a8SPavel Labath #include "lldb/Utility/LLDBLog.h" 136f9e6901SZachary Turner #include "lldb/Utility/Log.h" 14ed96be99SZachary Turner 1539de3110SZachary Turner #include "llvm/ADT/StringExtras.h" 16ed96be99SZachary Turner #include "llvm/Support/Threading.h" 1739de3110SZachary Turner 1839de3110SZachary Turner using namespace lldb; 1939de3110SZachary Turner using namespace lldb_private; 2039de3110SZachary Turner HostNativeThreadBase(thread_t thread)2139de3110SZachary TurnerHostNativeThreadBase::HostNativeThreadBase(thread_t thread) 22*28c878aeSShafik Yaghmour : m_thread(thread) {} 2339de3110SZachary Turner GetSystemHandle() const24b9c1b51eSKate Stonelldb::thread_t HostNativeThreadBase::GetSystemHandle() const { 2539de3110SZachary Turner return m_thread; 2639de3110SZachary Turner } 2739de3110SZachary Turner GetResult() const28b9c1b51eSKate Stonelldb::thread_result_t HostNativeThreadBase::GetResult() const { 2939de3110SZachary Turner return m_result; 3039de3110SZachary Turner } 3139de3110SZachary Turner IsJoinable() const32b9c1b51eSKate Stonebool HostNativeThreadBase::IsJoinable() const { 33acee96aeSZachary Turner return m_thread != LLDB_INVALID_HOST_THREAD; 34acee96aeSZachary Turner } 35acee96aeSZachary Turner Reset()36b9c1b51eSKate Stonevoid HostNativeThreadBase::Reset() { 3739de3110SZachary Turner m_thread = LLDB_INVALID_HOST_THREAD; 388b649f98SKazu Hirata m_result = 0; // NOLINT(modernize-use-nullptr) 3939de3110SZachary Turner } 4039de3110SZachary Turner EqualsThread(lldb::thread_t thread) const4164c92df7SAleksandr Urakovbool HostNativeThreadBase::EqualsThread(lldb::thread_t thread) const { 4264c92df7SAleksandr Urakov return m_thread == thread; 4364c92df7SAleksandr Urakov } 4464c92df7SAleksandr Urakov Release()45b9c1b51eSKate Stonelldb::thread_t HostNativeThreadBase::Release() { 4639de3110SZachary Turner lldb::thread_t result = m_thread; 4739de3110SZachary Turner m_thread = LLDB_INVALID_HOST_THREAD; 488b649f98SKazu Hirata m_result = 0; // NOLINT(modernize-use-nullptr) 4939de3110SZachary Turner 5039de3110SZachary Turner return result; 5139de3110SZachary Turner } 5239de3110SZachary Turner 5339de3110SZachary Turner lldb::thread_result_t ThreadCreateTrampoline(lldb::thread_arg_t arg)54b9c1b51eSKate StoneHostNativeThreadBase::ThreadCreateTrampoline(lldb::thread_arg_t arg) { 55d0810779SPavel Labath std::unique_ptr<ThreadLauncher::HostThreadCreateInfo> info_up( 56d0810779SPavel Labath (ThreadLauncher::HostThreadCreateInfo *)arg); 57d0810779SPavel Labath llvm::set_thread_name(info_up->thread_name); 5839de3110SZachary Turner 59a007a6d8SPavel Labath Log *log = GetLog(LLDBLog::Thread); 6063e5fb76SJonas Devlieghere LLDB_LOGF(log, "thread created"); 6139de3110SZachary Turner 62d0810779SPavel Labath return info_up->impl(); 6339de3110SZachary Turner } 64