1269f91e066c5991a4d4aa2945ea2c285f8589b12Greg Clayton//===-- ProcessKDP.h --------------------------------------------*- C++ -*-===// 2363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton// 3363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton// The LLVM Compiler Infrastructure 4363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton// 5363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton// This file is distributed under the University of Illinois Open Source 6363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton// License. See LICENSE.TXT for details. 7363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton// 8363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton//===----------------------------------------------------------------------===// 9363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 10363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton#ifndef liblldb_ProcessKDP_h_ 11363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton#define liblldb_ProcessKDP_h_ 12363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 13363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton// C Includes 14363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 15363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton// C++ Includes 16363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton#include <list> 17363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton#include <vector> 18363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 19363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton// Other libraries and framework includes 20363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton#include "lldb/Core/ArchSpec.h" 21363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton#include "lldb/Core/Broadcaster.h" 22f0c0882ff3fd98456c1814b495888092da2f13f6Jason Molenda#include "lldb/Core/ConstString.h" 23363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton#include "lldb/Core/Error.h" 24363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton#include "lldb/Core/InputReader.h" 25363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton#include "lldb/Core/StreamString.h" 26363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton#include "lldb/Core/StringList.h" 27363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton#include "lldb/Core/ThreadSafeValue.h" 28363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton#include "lldb/Target/Process.h" 29363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton#include "lldb/Target/Thread.h" 30363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 31363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton#include "CommunicationKDP.h" 32363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton#include "Utility/StringExtractor.h" 33363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 34363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Claytonclass ThreadKDP; 35363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 36363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Claytonclass ProcessKDP : public lldb_private::Process 37363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton{ 38363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Claytonpublic: 39363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 40363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton // Constructors and Destructors 41363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 4246c9a355af9b39db78c006b2a5cbf97d3c58d947Greg Clayton static lldb::ProcessSP 4346c9a355af9b39db78c006b2a5cbf97d3c58d947Greg Clayton CreateInstance (lldb_private::Target& target, 4446c9a355af9b39db78c006b2a5cbf97d3c58d947Greg Clayton lldb_private::Listener &listener, 4546c9a355af9b39db78c006b2a5cbf97d3c58d947Greg Clayton const lldb_private::FileSpec *crash_file_path); 46363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 47363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton static void 48363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton Initialize(); 49363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 50363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton static void 5197abb6ddae805a91ccf28a3a91fa68252dcf1fe2Greg Clayton DebuggerInitialize (lldb_private::Debugger &debugger); 5297abb6ddae805a91ccf28a3a91fa68252dcf1fe2Greg Clayton 5397abb6ddae805a91ccf28a3a91fa68252dcf1fe2Greg Clayton static void 54363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton Terminate(); 55363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 560e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton static lldb_private::ConstString 57363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton GetPluginNameStatic(); 58363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 59363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton static const char * 60363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton GetPluginDescriptionStatic(); 61363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 62363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 63363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton // Constructors and Destructors 64363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 65363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton ProcessKDP(lldb_private::Target& target, lldb_private::Listener &listener); 66363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 67363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual 68363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton ~ProcessKDP(); 69363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 70363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 71363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton // Check if a given Process 72363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 73363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual bool 748d2ea2888a4acb7f140f9af64ddd2b16b2dee870Greg Clayton CanDebug (lldb_private::Target &target, 758d2ea2888a4acb7f140f9af64ddd2b16b2dee870Greg Clayton bool plugin_specified_by_name); 76363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 77307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton virtual lldb_private::CommandObject * 78307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton GetPluginCommandObject(); 79363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 80363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 81363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton // Creating a new process, or attaching to an existing one 82363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 83363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 84363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton WillLaunch (lldb_private::Module* module); 85363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 86363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 8736bc5ea5a48c19421d44f559e2165c105657b809Greg Clayton DoLaunch (lldb_private::Module *exe_module, 8836bc5ea5a48c19421d44f559e2165c105657b809Greg Clayton const lldb_private::ProcessLaunchInfo &launch_info); 89363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 90363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 91363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton WillAttachToProcessWithID (lldb::pid_t pid); 92363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 93363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 94363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton WillAttachToProcessWithName (const char *process_name, bool wait_for_launch); 95363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 96363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 97fac2e62f08719ba800a440b7ad0d5a55a26dc620Jason Molenda DoConnectRemote (lldb_private::Stream *strm, const char *remote_url); 98363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 99363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 100363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton DoAttachToProcessWithID (lldb::pid_t pid); 101363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 102363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 103d1040dd360c07305a30d33b5d4501cb9dfb03114Han Ming Ong DoAttachToProcessWithID (lldb::pid_t pid, const lldb_private::ProcessAttachInfo &attach_info); 104d1040dd360c07305a30d33b5d4501cb9dfb03114Han Ming Ong 105d1040dd360c07305a30d33b5d4501cb9dfb03114Han Ming Ong virtual lldb_private::Error 106d1040dd360c07305a30d33b5d4501cb9dfb03114Han Ming Ong DoAttachToProcessWithName (const char *process_name, bool wait_for_launch, const lldb_private::ProcessAttachInfo &attach_info); 107363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 108363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual void 109363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton DidAttach (); 110363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 111b46937c86ca4551b2fc9813d848b1a0a2bf2e636Jason Molenda lldb::addr_t 112b46937c86ca4551b2fc9813d848b1a0a2bf2e636Jason Molenda GetImageInfoAddress(); 113b46937c86ca4551b2fc9813d848b1a0a2bf2e636Jason Molenda 114b46937c86ca4551b2fc9813d848b1a0a2bf2e636Jason Molenda lldb_private::DynamicLoader * 115b46937c86ca4551b2fc9813d848b1a0a2bf2e636Jason Molenda GetDynamicLoader (); 116b46937c86ca4551b2fc9813d848b1a0a2bf2e636Jason Molenda 117363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 118363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton // PluginInterface protocol 119363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 1200e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton virtual lldb_private::ConstString 121363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton GetPluginName(); 122363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 123363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual uint32_t 124363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton GetPluginVersion(); 125363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 126363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 127363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton // Process Control 128363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 129363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 130363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton WillResume (); 131363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 132363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 133363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton DoResume (); 134363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 135363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 136363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton DoHalt (bool &caused_stop); 137363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 138363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 139761afb822b18c46b2ad84be03f372e90ac1e6143Jim Ingham DoDetach (bool keep_stopped); 140363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 141363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 142363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton DoSignal (int signal); 143363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 144363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 145363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton DoDestroy (); 146363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 147363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual void 148363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton RefreshStateAfterStop(); 149363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 150363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 151363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton // Process Queries 152363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 153363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual bool 154363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton IsAlive (); 155363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 156363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 157363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton // Process Memory 158363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 159363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual size_t 160363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton DoReadMemory (lldb::addr_t addr, void *buf, size_t size, lldb_private::Error &error); 161363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 162363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual size_t 163363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton DoWriteMemory (lldb::addr_t addr, const void *buf, size_t size, lldb_private::Error &error); 164363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 165363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb::addr_t 166363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton DoAllocateMemory (size_t size, uint32_t permissions, lldb_private::Error &error); 167363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 168363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 169363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton DoDeallocateMemory (lldb::addr_t ptr); 170363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 171363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //---------------------------------------------------------------------- 172363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton // Process Breakpoints 173363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //---------------------------------------------------------------------- 174363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 175efb4aeba2bd8411ac0aee9934f08959094d50711Jim Ingham EnableBreakpointSite (lldb_private::BreakpointSite *bp_site); 176363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 177363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 178efb4aeba2bd8411ac0aee9934f08959094d50711Jim Ingham DisableBreakpointSite (lldb_private::BreakpointSite *bp_site); 179363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 180363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //---------------------------------------------------------------------- 181363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton // Process Watchpoints 182363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //---------------------------------------------------------------------- 183363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 1849c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham EnableWatchpoint (lldb_private::Watchpoint *wp, bool notify = true); 185363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 186363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton virtual lldb_private::Error 1879c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham DisableWatchpoint (lldb_private::Watchpoint *wp, bool notify = true); 188363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 1890fa512447e00da09d300fbabd18b5ce94f52fdaaGreg Clayton CommunicationKDP & 1900fa512447e00da09d300fbabd18b5ce94f52fdaaGreg Clayton GetCommunication() 1910fa512447e00da09d300fbabd18b5ce94f52fdaaGreg Clayton { 1920fa512447e00da09d300fbabd18b5ce94f52fdaaGreg Clayton return m_comm; 1930fa512447e00da09d300fbabd18b5ce94f52fdaaGreg Clayton } 1940fa512447e00da09d300fbabd18b5ce94f52fdaaGreg Clayton 195363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Claytonprotected: 196363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton friend class ThreadKDP; 197363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton friend class CommunicationKDP; 198363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 199363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //---------------------------------------------------------------------- 200363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton // Accessors 201363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //---------------------------------------------------------------------- 202363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton bool 203363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton IsRunning ( lldb::StateType state ) 204363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton { 205363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton return state == lldb::eStateRunning || IsStepping(state); 206363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton } 207363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 208363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton bool 209363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton IsStepping ( lldb::StateType state) 210363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton { 211363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton return state == lldb::eStateStepping; 212363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton } 213363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 214363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton bool 215363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton CanResume ( lldb::StateType state) 216363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton { 217363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton return state == lldb::eStateStopped; 218363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton } 219363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 220363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton bool 221363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton HasExited (lldb::StateType state) 222363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton { 223363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton return state == lldb::eStateExited; 224363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton } 225363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 226363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton bool 227363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton ProcessIDIsValid ( ) const; 228363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 229363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton void 230363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton Clear ( ); 231363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 232ae932359b80098532f3c3766fa9e6527352fbb67Greg Clayton virtual bool 23337f962e785be99dc4f0c5e9d02416992ff03bbd0Greg Clayton UpdateThreadList (lldb_private::ThreadList &old_thread_list, 23437f962e785be99dc4f0c5e9d02416992ff03bbd0Greg Clayton lldb_private::ThreadList &new_thread_list); 235363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 236363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton enum 237363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton { 238363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton eBroadcastBitAsyncContinue = (1 << 0), 239363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton eBroadcastBitAsyncThreadShouldExit = (1 << 1) 240363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton }; 241e76f8c408632e2479cbaa1abdcd10a7958fa4846Greg Clayton 2423acaa926c8f0d32da48db61a5fcb95276e6a4006Greg Clayton lldb::ThreadSP 2434e75e3533bddc7cf7264c6c7f7b4d812d4466e96Andrew Kaylor GetKernelThread (); 244363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 245363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 246363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton /// Broadcaster event bits definitions. 247363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 248363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton CommunicationKDP m_comm; 249363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton lldb_private::Broadcaster m_async_broadcaster; 250363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton lldb::thread_t m_async_thread; 251f0c0882ff3fd98456c1814b495888092da2f13f6Jason Molenda lldb_private::ConstString m_dyld_plugin_name; 252b46937c86ca4551b2fc9813d848b1a0a2bf2e636Jason Molenda lldb::addr_t m_kernel_load_addr; 253307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton lldb::CommandObjectSP m_command_sp; 2544e75e3533bddc7cf7264c6c7f7b4d812d4466e96Andrew Kaylor lldb::ThreadWP m_kernel_thread_wp; 255307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton 256363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 257363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton bool 258363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton StartAsyncThread (); 259363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 260363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton void 261363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton StopAsyncThread (); 262363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 263363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton static void * 264363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton AsyncThread (void *arg); 265363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 266363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Claytonprivate: 267363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 268363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton // For ProcessKDP only 269363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton //------------------------------------------------------------------ 270363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 271363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton DISALLOW_COPY_AND_ASSIGN (ProcessKDP); 272363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 273363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton}; 274363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton 275363be3fc515bea8baf2c5031f3c62f6326d9e1b8Greg Clayton#endif // liblldb_ProcessKDP_h_ 276