blob: 2feb46ffa5e1d1cb53d4fb99c600e677d24e514f [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
16#include <queue>
17
18// Other libraries and framework includes
19#include "lldb/Target/Process.h"
20
21class ProcessMonitor;
22
23class ProcessWindows :
24 public lldb_private::Process
25{
26public:
27 //------------------------------------------------------------------
28 // Static functions.
29 //------------------------------------------------------------------
30 static lldb::ProcessSP
31 CreateInstance(lldb_private::Target& target,
32 lldb_private::Listener &listener,
33 const lldb_private::FileSpec *);
34
35 static void
36 Initialize();
37
38 static void
39 Terminate();
40
41 static lldb_private::ConstString
42 GetPluginNameStatic();
43
44 static const char *
45 GetPluginDescriptionStatic();
46
47 //------------------------------------------------------------------
48 // Constructors and destructors
49 //------------------------------------------------------------------
50 ProcessWindows(lldb_private::Target& target,
51 lldb_private::Listener &listener);
52
53 virtual lldb_private::Error
54 DoDetach(bool keep_stopped);
55
56 virtual bool
57 DetachRequiresHalt() { return true; }
58
59 virtual bool
60 UpdateThreadList(lldb_private::ThreadList &old_thread_list, lldb_private::ThreadList &new_thread_list);
61
62 virtual lldb_private::Error
63 DoLaunch (lldb_private::Module *exe_module,
64 lldb_private::ProcessLaunchInfo &launch_info);
65
66 virtual lldb_private::Error
67 DoResume ();
68
69 //------------------------------------------------------------------
70 // PluginInterface protocol
71 //------------------------------------------------------------------
72 virtual lldb_private::ConstString
73 GetPluginName();
74
75 virtual uint32_t
76 GetPluginVersion();
77
78 virtual void
79 GetPluginCommandHelp(const char *command, lldb_private::Stream *strm);
80
81 virtual lldb_private::Error
82 ExecutePluginCommand(lldb_private::Args &command,
83 lldb_private::Stream *strm);
84
85 virtual lldb_private::Log *
86 EnablePluginLogging(lldb_private::Stream *strm,
87 lldb_private::Args &command);
88
89
90 virtual bool
91 CanDebug(lldb_private::Target &target, bool plugin_specified_by_name);
92
93 virtual lldb_private::Error
94 DoDestroy ();
95
96 virtual void
97 RefreshStateAfterStop ();
98
99 virtual bool
100 IsAlive ();
101
102 virtual size_t
103 DoReadMemory (lldb::addr_t vm_addr,
104 void *buf,
105 size_t size,
106 lldb_private::Error &error);
107};
108
109#endif // liblldb_Plugins_Process_Windows_ProcessWindows_H_