blob: 31ceddfa3ef210221360c46543e344b3ba140dac [file] [log] [blame]
Zachary Turner35ed1322014-07-28 16:45:18 +00001//===-- ProcessWindows.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_Plugins_Process_Windows_ProcessWindows_H_
11#define liblldb_Plugins_Process_Windows_ProcessWindows_H_
12
13// C Includes
14
15// C++ Includes
Zachary Turner8f211742014-11-04 00:00:12 +000016#include <map>
Zachary Turner35ed1322014-07-28 16:45:18 +000017#include <queue>
18
19// Other libraries and framework includes
Zachary Turner8f211742014-11-04 00:00:12 +000020#include "lldb/Host/HostThread.h"
Zachary Turner35ed1322014-07-28 16:45:18 +000021#include "lldb/Target/Process.h"
22
23class ProcessMonitor;
24
Zachary Turner8f211742014-11-04 00:00:12 +000025namespace lldb_private
26{
27class HostProcess;
28}
29
Zachary Turner35ed1322014-07-28 16:45:18 +000030class ProcessWindows :
31 public lldb_private::Process
32{
33public:
34 //------------------------------------------------------------------
35 // Static functions.
36 //------------------------------------------------------------------
37 static lldb::ProcessSP
38 CreateInstance(lldb_private::Target& target,
39 lldb_private::Listener &listener,
40 const lldb_private::FileSpec *);
41
42 static void
43 Initialize();
44
45 static void
46 Terminate();
47
48 static lldb_private::ConstString
49 GetPluginNameStatic();
50
51 static const char *
52 GetPluginDescriptionStatic();
53
54 //------------------------------------------------------------------
55 // Constructors and destructors
56 //------------------------------------------------------------------
57 ProcessWindows(lldb_private::Target& target,
58 lldb_private::Listener &listener);
59
Zachary Turner8f211742014-11-04 00:00:12 +000060 ~ProcessWindows();
61
Zachary Turner35ed1322014-07-28 16:45:18 +000062 virtual lldb_private::Error
63 DoDetach(bool keep_stopped);
64
65 virtual bool
66 DetachRequiresHalt() { return true; }
67
68 virtual bool
69 UpdateThreadList(lldb_private::ThreadList &old_thread_list, lldb_private::ThreadList &new_thread_list);
70
71 virtual lldb_private::Error
72 DoLaunch (lldb_private::Module *exe_module,
73 lldb_private::ProcessLaunchInfo &launch_info);
74
75 virtual lldb_private::Error
76 DoResume ();
77
78 //------------------------------------------------------------------
79 // PluginInterface protocol
80 //------------------------------------------------------------------
81 virtual lldb_private::ConstString
82 GetPluginName();
83
84 virtual uint32_t
85 GetPluginVersion();
86
87 virtual void
88 GetPluginCommandHelp(const char *command, lldb_private::Stream *strm);
89
90 virtual lldb_private::Error
91 ExecutePluginCommand(lldb_private::Args &command,
92 lldb_private::Stream *strm);
93
94 virtual lldb_private::Log *
95 EnablePluginLogging(lldb_private::Stream *strm,
96 lldb_private::Args &command);
97
98
99 virtual bool
100 CanDebug(lldb_private::Target &target, bool plugin_specified_by_name);
101
102 virtual lldb_private::Error
103 DoDestroy ();
104
105 virtual void
106 RefreshStateAfterStop ();
107
108 virtual bool
109 IsAlive ();
110
Zachary Turner8f211742014-11-04 00:00:12 +0000111 virtual size_t DoReadMemory(lldb::addr_t vm_addr, void *buf, size_t size, lldb_private::Error &error);
Zachary Turner35ed1322014-07-28 16:45:18 +0000112};
113
114#endif // liblldb_Plugins_Process_Windows_ProcessWindows_H_