SBProcess.h revision 60a544f23362d4f2fbe1e68b9c5340aa5e11302c
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 lldb::ByteOrder 57 GetByteOrder() const; 58 59 size_t 60 PutSTDIN (const char *src, size_t src_len); 61 62 size_t 63 GetSTDOUT (char *dst, size_t dst_len) const; 64 65 size_t 66 GetSTDERR (char *dst, size_t dst_len) const; 67 68 void 69 ReportEventState (const lldb::SBEvent &event, FILE *out) const; 70 71 void 72 AppendEventStateReport (const lldb::SBEvent &event, lldb::SBCommandReturnObject &result); 73 74 //------------------------------------------------------------------ 75 // Thread related functions 76 //------------------------------------------------------------------ 77 uint32_t 78 GetNumThreads (); 79 80 lldb::SBThread 81 GetThreadAtIndex (size_t index); 82 83 lldb::SBThread 84 GetThreadByID (lldb::tid_t sb_thread_id); 85 86 lldb::SBThread 87 GetSelectedThread () const; 88 89 bool 90 SetSelectedThread (const lldb::SBThread &thread); 91 92 bool 93 SetSelectedThreadByID (uint32_t tid); 94 95 //------------------------------------------------------------------ 96 // Stepping related functions 97 //------------------------------------------------------------------ 98 99 lldb::StateType 100 GetState (); 101 102 int 103 GetExitStatus (); 104 105 const char * 106 GetExitDescription (); 107 108 lldb::pid_t 109 GetProcessID (); 110 111 uint32_t 112 GetAddressByteSize() const; 113 114 lldb::SBError 115 Destroy (); 116 117 lldb::SBError 118 Continue (); 119 120 lldb::SBError 121 Stop (); 122 123 lldb::SBError 124 Kill (); 125 126 lldb::SBError 127 Detach (); 128 129 lldb::SBError 130 Signal (int signal); 131 132 size_t 133 ReadMemory (addr_t addr, void *buf, size_t size, lldb::SBError &error); 134 135 size_t 136 WriteMemory (addr_t addr, const void *buf, size_t size, lldb::SBError &error); 137 138 // Events 139 static lldb::StateType 140 GetStateFromEvent (const lldb::SBEvent &event); 141 142 static bool 143 GetRestartedFromEvent (const lldb::SBEvent &event); 144 145 static lldb::SBProcess 146 GetProcessFromEvent (const lldb::SBEvent &event); 147 148 lldb::SBBroadcaster 149 GetBroadcaster () const; 150 151 bool 152 GetDescription (lldb::SBStream &description); 153 154 uint32_t 155 LoadImage (lldb::SBFileSpec &image_spec, lldb::SBError &error); 156 157 lldb::SBError 158 UnloadImage (uint32_t image_token); 159 160protected: 161 friend class SBAddress; 162 friend class SBBreakpoint; 163 friend class SBBreakpointLocation; 164 friend class SBCommandInterpreter; 165 friend class SBDebugger; 166 friend class SBFunction; 167 friend class SBTarget; 168 friend class SBThread; 169 friend class SBValue; 170 171#ifndef SWIG 172 173 lldb_private::Process * 174 operator->() const; 175 176 // Mimic shared pointer... 177 lldb_private::Process * 178 get() const; 179 180#endif 181 182 183 SBProcess (const lldb::ProcessSP &process_sp); 184 185 void 186 SetProcess (const lldb::ProcessSP &process_sp); 187 188 lldb::ProcessSP m_opaque_sp; 189}; 190 191} // namespace lldb 192 193#endif // LLDB_SBProcess_h_ 194