1*af245d11STodd Fiala //===-- NativeThreadLinux.h ----------------------------------- -*- C++ -*-===//
2*af245d11STodd Fiala //
3*af245d11STodd Fiala //                     The LLVM Compiler Infrastructure
4*af245d11STodd Fiala //
5*af245d11STodd Fiala // This file is distributed under the University of Illinois Open Source
6*af245d11STodd Fiala // License. See LICENSE.TXT for details.
7*af245d11STodd Fiala //
8*af245d11STodd Fiala //===----------------------------------------------------------------------===//
9*af245d11STodd Fiala 
10*af245d11STodd Fiala #ifndef liblldb_NativeThreadLinux_H_
11*af245d11STodd Fiala #define liblldb_NativeThreadLinux_H_
12*af245d11STodd Fiala 
13*af245d11STodd Fiala #include "lldb/lldb-private-forward.h"
14*af245d11STodd Fiala #include "../../../Host/common/NativeThreadProtocol.h"
15*af245d11STodd Fiala 
16*af245d11STodd Fiala namespace lldb_private
17*af245d11STodd Fiala {
18*af245d11STodd Fiala     class NativeProcessLinux;
19*af245d11STodd Fiala 
20*af245d11STodd Fiala     class NativeThreadLinux : public NativeThreadProtocol
21*af245d11STodd Fiala     {
22*af245d11STodd Fiala         friend class NativeProcessLinux;
23*af245d11STodd Fiala 
24*af245d11STodd Fiala     public:
25*af245d11STodd Fiala         NativeThreadLinux (NativeProcessLinux *process, lldb::tid_t tid);
26*af245d11STodd Fiala 
27*af245d11STodd Fiala         // ---------------------------------------------------------------------
28*af245d11STodd Fiala         // NativeThreadProtocol Interface
29*af245d11STodd Fiala         // ---------------------------------------------------------------------
30*af245d11STodd Fiala         const char *
31*af245d11STodd Fiala         GetName() override;
32*af245d11STodd Fiala 
33*af245d11STodd Fiala         lldb::StateType
34*af245d11STodd Fiala         GetState () override;
35*af245d11STodd Fiala 
36*af245d11STodd Fiala         bool
37*af245d11STodd Fiala         GetStopReason (ThreadStopInfo &stop_info) override;
38*af245d11STodd Fiala 
39*af245d11STodd Fiala         NativeRegisterContextSP
40*af245d11STodd Fiala         GetRegisterContext () override;
41*af245d11STodd Fiala 
42*af245d11STodd Fiala         Error
43*af245d11STodd Fiala         SetWatchpoint (lldb::addr_t addr, size_t size, uint32_t watch_flags, bool hardware) override;
44*af245d11STodd Fiala 
45*af245d11STodd Fiala         Error
46*af245d11STodd Fiala         RemoveWatchpoint (lldb::addr_t addr) override;
47*af245d11STodd Fiala 
48*af245d11STodd Fiala         uint32_t
49*af245d11STodd Fiala         TranslateStopInfoToGdbSignal (const ThreadStopInfo &stop_info) const override;
50*af245d11STodd Fiala 
51*af245d11STodd Fiala     private:
52*af245d11STodd Fiala         // ---------------------------------------------------------------------
53*af245d11STodd Fiala         // Interface for friend classes
54*af245d11STodd Fiala         // ---------------------------------------------------------------------
55*af245d11STodd Fiala         void
56*af245d11STodd Fiala         SetLaunching ();
57*af245d11STodd Fiala 
58*af245d11STodd Fiala         void
59*af245d11STodd Fiala         SetRunning ();
60*af245d11STodd Fiala 
61*af245d11STodd Fiala         void
62*af245d11STodd Fiala         SetStepping ();
63*af245d11STodd Fiala 
64*af245d11STodd Fiala         void
65*af245d11STodd Fiala         SetStoppedBySignal (uint32_t signo);
66*af245d11STodd Fiala 
67*af245d11STodd Fiala         void
68*af245d11STodd Fiala         SetStoppedByBreakpoint ();
69*af245d11STodd Fiala 
70*af245d11STodd Fiala         bool
71*af245d11STodd Fiala         IsStoppedAtBreakpoint ();
72*af245d11STodd Fiala 
73*af245d11STodd Fiala         void
74*af245d11STodd Fiala         SetCrashedWithException (uint64_t exception_type, lldb::addr_t exception_addr);
75*af245d11STodd Fiala 
76*af245d11STodd Fiala         void
77*af245d11STodd Fiala         SetSuspended ();
78*af245d11STodd Fiala 
79*af245d11STodd Fiala         void
80*af245d11STodd Fiala         SetExited ();
81*af245d11STodd Fiala 
82*af245d11STodd Fiala         // ---------------------------------------------------------------------
83*af245d11STodd Fiala         // Private interface
84*af245d11STodd Fiala         // ---------------------------------------------------------------------
85*af245d11STodd Fiala         void
86*af245d11STodd Fiala         MaybeLogStateChange (lldb::StateType new_state);
87*af245d11STodd Fiala 
88*af245d11STodd Fiala         // ---------------------------------------------------------------------
89*af245d11STodd Fiala         // Member Variables
90*af245d11STodd Fiala         // ---------------------------------------------------------------------
91*af245d11STodd Fiala         lldb::StateType m_state;
92*af245d11STodd Fiala         ThreadStopInfo m_stop_info;
93*af245d11STodd Fiala         NativeRegisterContextSP m_reg_context_sp;
94*af245d11STodd Fiala     };
95*af245d11STodd Fiala }
96*af245d11STodd Fiala 
97*af245d11STodd Fiala #endif // #ifndef liblldb_NativeThreadLinux_H_
98