1 //===-- ThreadKDP.h ---------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef liblldb_ThreadKDP_h_ 11 #define liblldb_ThreadKDP_h_ 12 13 #include <string> 14 15 #include "lldb/Target/Process.h" 16 #include "lldb/Target/Thread.h" 17 18 class ProcessKDP; 19 20 class ThreadKDP : public lldb_private::Thread { 21 public: 22 ThreadKDP(lldb_private::Process &process, lldb::tid_t tid); 23 24 virtual ~ThreadKDP(); 25 26 virtual void RefreshStateAfterStop(); 27 28 virtual const char *GetName(); 29 30 virtual const char *GetQueueName(); 31 32 virtual lldb::RegisterContextSP GetRegisterContext(); 33 34 virtual lldb::RegisterContextSP 35 CreateRegisterContextForFrame(lldb_private::StackFrame *frame); 36 37 void Dump(lldb_private::Log *log, uint32_t index); 38 39 static bool ThreadIDIsValid(lldb::tid_t thread); 40 41 bool ShouldStop(bool &step_more); 42 43 const char *GetBasicInfoAsString(); 44 45 void SetName(const char *name) { 46 if (name && name[0]) 47 m_thread_name.assign(name); 48 else 49 m_thread_name.clear(); 50 } 51 52 lldb::addr_t GetThreadDispatchQAddr() { return m_thread_dispatch_qaddr; } 53 54 void SetThreadDispatchQAddr(lldb::addr_t thread_dispatch_qaddr) { 55 m_thread_dispatch_qaddr = thread_dispatch_qaddr; 56 } 57 58 void SetStopInfoFrom_KDP_EXCEPTION( 59 const lldb_private::DataExtractor &exc_reply_packet); 60 61 protected: 62 friend class ProcessKDP; 63 64 //------------------------------------------------------------------ 65 // Member variables. 66 //------------------------------------------------------------------ 67 std::string m_thread_name; 68 std::string m_dispatch_queue_name; 69 lldb::addr_t m_thread_dispatch_qaddr; 70 lldb::StopInfoSP m_cached_stop_info_sp; 71 //------------------------------------------------------------------ 72 // Protected member functions. 73 //------------------------------------------------------------------ 74 virtual bool CalculateStopInfo(); 75 }; 76 77 #endif // liblldb_ThreadKDP_h_ 78