blob: 95c2f0577e467110d01f5bc540859ac9b983d5c8 [file] [log] [blame]
Greg Claytona63d08c2011-07-19 03:57:15 +00001//===-- 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
18class ProcessKDP;
19
20class ThreadKDP : public lldb_private::Thread
21{
22public:
23 ThreadKDP (ProcessKDP &process,
24 lldb::tid_t tid);
25
26 virtual
27 ~ThreadKDP ();
28
29 virtual bool
30 WillResume (lldb::StateType resume_state);
31
32 virtual void
33 RefreshStateAfterStop();
34
35 virtual const char *
36 GetInfo ();
37
38 virtual const char *
39 GetName ();
40
41 virtual const char *
42 GetQueueName ();
43
44 virtual lldb::RegisterContextSP
45 GetRegisterContext ();
46
47 virtual lldb::RegisterContextSP
48 CreateRegisterContextForFrame (lldb_private::StackFrame *frame);
49
50 virtual void
51 ClearStackFrames ();
52
53 ProcessKDP &
54 GetKDPProcess ()
55 {
56 return (ProcessKDP &)m_process;
57 }
58
59 void
60 Dump (lldb_private::Log *log, uint32_t index);
61
62 static bool
63 ThreadIDIsValid (lldb::tid_t thread);
64
65 bool
66 ShouldStop (bool &step_more);
67
68 const char *
69 GetBasicInfoAsString ();
70
71 void
72 SetName (const char *name)
73 {
74 if (name && name[0])
75 m_thread_name.assign (name);
76 else
77 m_thread_name.clear();
78 }
79
80 lldb::addr_t
81 GetThreadDispatchQAddr ()
82 {
83 return m_thread_dispatch_qaddr;
84 }
85
86 void
87 SetThreadDispatchQAddr (lldb::addr_t thread_dispatch_qaddr)
88 {
89 m_thread_dispatch_qaddr = thread_dispatch_qaddr;
90 }
91
92protected:
93
94 friend class ProcessKDP;
95
96 //------------------------------------------------------------------
97 // Member variables.
98 //------------------------------------------------------------------
99 std::string m_thread_name;
100 std::string m_dispatch_queue_name;
101 lldb::addr_t m_thread_dispatch_qaddr;
102 //------------------------------------------------------------------
103 // Member variables.
104 //------------------------------------------------------------------
105
106 virtual lldb_private::Unwind *
107 GetUnwinder ();
108
109 virtual lldb::StopInfoSP
110 GetPrivateStopReason ();
111
112
113};
114
115#endif // liblldb_ThreadKDP_h_