1 //===-- HostThread.h --------------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_HOST_HOSTTHREAD_H 10 #define LLDB_HOST_HOSTTHREAD_H 11 12 #include "lldb/Host/HostNativeThreadForward.h" 13 #include "lldb/Utility/Status.h" 14 #include "lldb/lldb-types.h" 15 16 #include <memory> 17 18 namespace lldb_private { 19 20 class HostNativeThreadBase; 21 22 /// \class HostInfo HostInfo.h "lldb/Host/HostThread.h" 23 /// A class that represents a thread running inside of a process on the 24 /// local machine. 25 /// 26 /// HostThread allows querying and manipulation of threads running on the host 27 /// machine. 28 /// 29 class HostThread { 30 public: 31 HostThread(); 32 HostThread(lldb::thread_t thread); 33 34 Status Join(lldb::thread_result_t *result); 35 Status Cancel(); 36 void Reset(); 37 lldb::thread_t Release(); 38 39 bool IsJoinable() const; 40 HostNativeThread &GetNativeThread(); 41 const HostNativeThread &GetNativeThread() const; 42 lldb::thread_result_t GetResult() const; 43 44 bool EqualsThread(lldb::thread_t thread) const; 45 46 private: 47 std::shared_ptr<HostNativeThreadBase> m_native_thread; 48 }; 49 } 50 51 #endif 52