1 //===-- ThreadGDBRemote.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_ThreadGDBRemote_h_ 11 #define liblldb_ThreadGDBRemote_h_ 12 13 #include <string> 14 15 #include "lldb/Target/Process.h" 16 #include "lldb/Target/Thread.h" 17 18 class StringExtractor; 19 class ProcessGDBRemote; 20 21 class ThreadGDBRemote : public lldb_private::Thread 22 { 23 public: 24 ThreadGDBRemote (lldb_private::Process &process, lldb::tid_t tid); 25 26 virtual 27 ~ThreadGDBRemote (); 28 29 virtual void 30 WillResume (lldb::StateType resume_state); 31 32 virtual void 33 RefreshStateAfterStop(); 34 35 virtual const char * 36 GetName (); 37 38 virtual const char * 39 GetQueueName (); 40 41 virtual lldb::queue_id_t 42 GetQueueID (); 43 44 lldb::addr_t 45 GetQueueLibdispatchQueueAddress (); 46 47 virtual lldb::RegisterContextSP 48 GetRegisterContext (); 49 50 virtual lldb::RegisterContextSP 51 CreateRegisterContextForFrame (lldb_private::StackFrame *frame); 52 53 void 54 Dump (lldb_private::Log *log, uint32_t index); 55 56 static bool 57 ThreadIDIsValid (lldb::tid_t thread); 58 59 bool 60 ShouldStop (bool &step_more); 61 62 const char * 63 GetBasicInfoAsString (); 64 65 void 66 SetName (const char *name) 67 { 68 if (name && name[0]) 69 m_thread_name.assign (name); 70 else 71 m_thread_name.clear(); 72 } 73 74 lldb::addr_t 75 GetThreadDispatchQAddr () 76 { 77 return m_thread_dispatch_qaddr; 78 } 79 80 void 81 SetThreadDispatchQAddr (lldb::addr_t thread_dispatch_qaddr) 82 { 83 m_thread_dispatch_qaddr = thread_dispatch_qaddr; 84 } 85 86 protected: 87 88 friend class ProcessGDBRemote; 89 90 bool 91 PrivateSetRegisterValue (uint32_t reg, 92 StringExtractor &response); 93 94 //------------------------------------------------------------------ 95 // Member variables. 96 //------------------------------------------------------------------ 97 std::string m_thread_name; 98 std::string m_dispatch_queue_name; 99 lldb::addr_t m_thread_dispatch_qaddr; 100 //------------------------------------------------------------------ 101 // Member variables. 102 //------------------------------------------------------------------ 103 104 void 105 SetStopInfoFromPacket (StringExtractor &stop_packet, uint32_t stop_id); 106 107 virtual bool 108 CalculateStopInfo (); 109 110 111 }; 112 113 #endif // liblldb_ThreadGDBRemote_h_ 114