blob: 49fdb45151cd6607cea8ef755f9deaf45b88ff2e [file] [log] [blame]
Stephen Wilsonf6f40332010-07-24 02:19:04 +00001//===-- ProcessLinux.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_ProcessLinux_H_
11#define liblldb_ProcessLinux_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"
Stephen Wilson67d9f7e2011-03-30 15:55:52 +000020#include "LinuxSignals.h"
Stephen Wilsonf6f40332010-07-24 02:19:04 +000021#include "ProcessMessage.h"
Johnny Chen7e996472012-01-05 19:17:38 +000022#include "ProcessPOSIX.h"
Stephen Wilsonf6f40332010-07-24 02:19:04 +000023
24class ProcessMonitor;
25
26class ProcessLinux :
Johnny Chen7e996472012-01-05 19:17:38 +000027 public ProcessPOSIX
Stephen Wilsonf6f40332010-07-24 02:19:04 +000028{
29public:
30 //------------------------------------------------------------------
31 // Static functions.
32 //------------------------------------------------------------------
Greg Claytone5eaa302012-02-21 18:40:07 +000033 static lldb::ProcessSP
Stephen Wilsonf6f40332010-07-24 02:19:04 +000034 CreateInstance(lldb_private::Target& target,
Greg Claytone5eaa302012-02-21 18:40:07 +000035 lldb_private::Listener &listener,
36 const lldb_private::FileSpec *);
Stephen Wilsonf6f40332010-07-24 02:19:04 +000037
38 static void
39 Initialize();
40
41 static void
42 Terminate();
43
44 static const char *
45 GetPluginNameStatic();
46
47 static const char *
48 GetPluginDescriptionStatic();
49
50 //------------------------------------------------------------------
51 // Constructors and destructors
52 //------------------------------------------------------------------
53 ProcessLinux(lldb_private::Target& target,
54 lldb_private::Listener &listener);
55
Stephen Wilsonf6f40332010-07-24 02:19:04 +000056 virtual uint32_t
Johnny Chen7e996472012-01-05 19:17:38 +000057 UpdateThreadList(lldb_private::ThreadList &old_thread_list, lldb_private::ThreadList &new_thread_list);
Stephen Wilsonf6f40332010-07-24 02:19:04 +000058 //------------------------------------------------------------------
59 // PluginInterface protocol
60 //------------------------------------------------------------------
61 virtual const char *
62 GetPluginName();
63
64 virtual const char *
65 GetShortPluginName();
66
67 virtual uint32_t
68 GetPluginVersion();
69
70 virtual void
71 GetPluginCommandHelp(const char *command, lldb_private::Stream *strm);
72
73 virtual lldb_private::Error
74 ExecutePluginCommand(lldb_private::Args &command,
75 lldb_private::Stream *strm);
76
77 virtual lldb_private::Log *
78 EnablePluginLogging(lldb_private::Stream *strm,
79 lldb_private::Args &command);
80
Stephen Wilsonf6f40332010-07-24 02:19:04 +000081private:
Stephen Wilson67d9f7e2011-03-30 15:55:52 +000082
83 /// Linux-specific signal set.
84 LinuxSignals m_linux_signals;
85
Stephen Wilsonf6f40332010-07-24 02:19:04 +000086};
87
88#endif // liblldb_MacOSXProcess_H_