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 18class StringExtractor; 19class ProcessGDBRemote; 20 21class ThreadGDBRemote : public lldb_private::Thread 22{ 23public: 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 virtual lldb::RegisterContextSP 45 GetRegisterContext (); 46 47 virtual lldb::RegisterContextSP 48 CreateRegisterContextForFrame (lldb_private::StackFrame *frame); 49 50 void 51 Dump (lldb_private::Log *log, uint32_t index); 52 53 static bool 54 ThreadIDIsValid (lldb::tid_t thread); 55 56 bool 57 ShouldStop (bool &step_more); 58 59 const char * 60 GetBasicInfoAsString (); 61 62 void 63 SetName (const char *name) 64 { 65 if (name && name[0]) 66 m_thread_name.assign (name); 67 else 68 m_thread_name.clear(); 69 } 70 71 lldb::addr_t 72 GetThreadDispatchQAddr () 73 { 74 return m_thread_dispatch_qaddr; 75 } 76 77 void 78 SetThreadDispatchQAddr (lldb::addr_t thread_dispatch_qaddr) 79 { 80 m_thread_dispatch_qaddr = thread_dispatch_qaddr; 81 } 82 83protected: 84 85 friend class ProcessGDBRemote; 86 87 bool 88 PrivateSetRegisterValue (uint32_t reg, 89 StringExtractor &response); 90 91 //------------------------------------------------------------------ 92 // Member variables. 93 //------------------------------------------------------------------ 94 std::string m_thread_name; 95 std::string m_dispatch_queue_name; 96 lldb::addr_t m_thread_dispatch_qaddr; 97 //------------------------------------------------------------------ 98 // Member variables. 99 //------------------------------------------------------------------ 100 101 void 102 SetStopInfoFromPacket (StringExtractor &stop_packet, uint32_t stop_id); 103 104 virtual bool 105 CalculateStopInfo (); 106 107 108}; 109 110#endif // liblldb_ThreadGDBRemote_h_ 111