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)21061da546SpatrickHostNativeThreadBase::HostNativeThreadBase(thread_t thread) 22*f6aab3d8Srobert : m_thread(thread) {} 23061da546Spatrick GetSystemHandle() const24061da546Spatricklldb::thread_t HostNativeThreadBase::GetSystemHandle() const { 25061da546Spatrick return m_thread; 26061da546Spatrick } 27061da546Spatrick GetResult() const28061da546Spatricklldb::thread_result_t HostNativeThreadBase::GetResult() const { 29061da546Spatrick return m_result; 30061da546Spatrick } 31061da546Spatrick IsJoinable() const32061da546Spatrickbool HostNativeThreadBase::IsJoinable() const { 33061da546Spatrick return m_thread != LLDB_INVALID_HOST_THREAD; 34061da546Spatrick } 35061da546Spatrick Reset()36061da546Spatrickvoid 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) const41061da546Spatrickbool HostNativeThreadBase::EqualsThread(lldb::thread_t thread) const { 42061da546Spatrick return m_thread == thread; 43061da546Spatrick } 44061da546Spatrick Release()45061da546Spatricklldb::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)54061da546SpatrickHostNativeThreadBase::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