SBProcess.h revision 538eb82a89a68dbc57251915080bd5152b333978
1//===-- SBProcess.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 LLDB_SBProcess_h_
11#define LLDB_SBProcess_h_
12
13#include "lldb/API/SBDefines.h"
14#include "lldb/API/SBError.h"
15#include "lldb/API/SBTarget.h"
16#include <stdio.h>
17
18namespace lldb {
19
20class SBEvent;
21
22class SBProcess
23{
24public:
25    //------------------------------------------------------------------
26    /// Broadcaster event bits definitions.
27    //------------------------------------------------------------------
28    enum
29    {
30        eBroadcastBitStateChanged   = (1 << 0),
31        eBroadcastBitInterrupt      = (1 << 1),
32        eBroadcastBitSTDOUT         = (1 << 2),
33        eBroadcastBitSTDERR         = (1 << 3)
34    };
35
36    SBProcess ();
37
38    SBProcess (const lldb::SBProcess& rhs);
39
40#ifndef SWIG
41    const lldb::SBProcess&
42    operator = (const lldb::SBProcess& rhs);
43#endif
44
45    ~SBProcess();
46
47    void
48    Clear ();
49
50    bool
51    IsValid() const;
52
53    lldb::SBTarget
54    GetTarget() const;
55
56    size_t
57    PutSTDIN (const char *src, size_t src_len);
58
59    size_t
60    GetSTDOUT (char *dst, size_t dst_len) const;
61
62    size_t
63    GetSTDERR (char *dst, size_t dst_len) const;
64
65    void
66    ReportEventState (const lldb::SBEvent &event, FILE *out) const;
67
68    void
69    AppendEventStateReport (const lldb::SBEvent &event, lldb::SBCommandReturnObject &result);
70
71    //------------------------------------------------------------------
72    // Thread related functions
73    //------------------------------------------------------------------
74    uint32_t
75    GetNumThreads ();
76
77    lldb::SBThread
78    GetThreadAtIndex (size_t index);
79
80    lldb::SBThread
81    GetThreadByID (lldb::tid_t sb_thread_id);
82
83    lldb::SBThread
84    GetSelectedThread () const;
85
86    bool
87    SetSelectedThread (const lldb::SBThread &thread);
88
89    bool
90    SetSelectedThreadByID (uint32_t tid);
91
92    //------------------------------------------------------------------
93    // Stepping related functions
94    //------------------------------------------------------------------
95
96    lldb::StateType
97    GetState ();
98
99    int
100    GetExitStatus ();
101
102    const char *
103    GetExitDescription ();
104
105    lldb::pid_t
106    GetProcessID ();
107
108    uint32_t
109    GetAddressByteSize() const;
110
111    lldb::SBError
112    Destroy ();
113
114    lldb::pid_t
115    AttachByPID (lldb::pid_t pid);  // DEPRECATED
116
117    // DEPRECATED: relocated to "SBProcess SBTarget::AttachToProcess (lldb::pid_t pid, lldb::SBError& error)"
118    lldb::SBError
119    Attach (lldb::pid_t pid);
120
121    // DEPRECATED: relocated to "SBProcess SBTarget::AttachToProcess (const char *name, bool wait_for_launch, lldb::SBError& error)"
122    lldb::SBError
123    AttachByName (const char *name, bool wait_for_launch);
124
125    lldb::SBError
126    Continue ();
127
128    lldb::SBError
129    Stop ();
130
131    lldb::SBError
132    Kill ();
133
134    lldb::SBError
135    Detach ();
136
137    lldb::SBError
138    Signal (int signal);
139
140    size_t
141    ReadMemory (addr_t addr, void *buf, size_t size, lldb::SBError &error);
142
143    size_t
144    WriteMemory (addr_t addr, const void *buf, size_t size, lldb::SBError &error);
145
146    // Events
147    static lldb::StateType
148    GetStateFromEvent (const lldb::SBEvent &event);
149
150    static bool
151    GetRestartedFromEvent (const lldb::SBEvent &event);
152
153    static lldb::SBProcess
154    GetProcessFromEvent (const lldb::SBEvent &event);
155
156    lldb::SBBroadcaster
157    GetBroadcaster () const;
158
159    bool
160    GetDescription (lldb::SBStream &description);
161
162    uint32_t
163    LoadImage (lldb::SBFileSpec &image_spec, lldb::SBError &error);
164
165    lldb::SBError
166    UnloadImage (uint32_t image_token);
167
168protected:
169    friend class SBAddress;
170    friend class SBBreakpoint;
171    friend class SBBreakpointLocation;
172    friend class SBCommandInterpreter;
173    friend class SBDebugger;
174    friend class SBFunction;
175    friend class SBTarget;
176    friend class SBThread;
177    friend class SBValue;
178
179#ifndef SWIG
180
181    lldb_private::Process *
182    operator->() const;
183
184    // Mimic shared pointer...
185    lldb_private::Process *
186    get() const;
187
188#endif
189
190
191    SBProcess (const lldb::ProcessSP &process_sp);
192
193    void
194    SetProcess (const lldb::ProcessSP &process_sp);
195
196    lldb::ProcessSP m_opaque_sp;
197};
198
199}  // namespace lldb
200
201#endif  // LLDB_SBProcess_h_
202