blob: 7e8b593d6031678bf0199256074995038e011da5 [file] [log] [blame]
Stephen Wilsone6f9f662010-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 Wilson84ffe702011-03-30 15:55:52 +000020#include "LinuxSignals.h"
Stephen Wilsone6f9f662010-07-24 02:19:04 +000021#include "ProcessMessage.h"
Johnny Chen30213ff2012-01-05 19:17:38 +000022#include "ProcessPOSIX.h"
Stephen Wilsone6f9f662010-07-24 02:19:04 +000023
24class ProcessMonitor;
25
26class ProcessLinux :
Johnny Chen30213ff2012-01-05 19:17:38 +000027 public ProcessPOSIX
Stephen Wilsone6f9f662010-07-24 02:19:04 +000028{
29public:
30 //------------------------------------------------------------------
31 // Static functions.
32 //------------------------------------------------------------------
Greg Clayton0c90ef42012-02-21 18:40:07 +000033 static lldb::ProcessSP
Stephen Wilsone6f9f662010-07-24 02:19:04 +000034 CreateInstance(lldb_private::Target& target,
Greg Clayton0c90ef42012-02-21 18:40:07 +000035 lldb_private::Listener &listener,
36 const lldb_private::FileSpec *);
Stephen Wilsone6f9f662010-07-24 02:19:04 +000037
38 static void
39 Initialize();
40
41 static void
42 Terminate();
43
Greg Clayton57abc5d2013-05-10 21:47:16 +000044 static lldb_private::ConstString
Stephen Wilsone6f9f662010-07-24 02:19:04 +000045 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
Greg Claytonc3c0b0e2012-04-12 19:04:34 +000056 virtual bool
Johnny Chen30213ff2012-01-05 19:17:38 +000057 UpdateThreadList(lldb_private::ThreadList &old_thread_list, lldb_private::ThreadList &new_thread_list);
Stephen Wilsone6f9f662010-07-24 02:19:04 +000058 //------------------------------------------------------------------
59 // PluginInterface protocol
60 //------------------------------------------------------------------
Greg Clayton57abc5d2013-05-10 21:47:16 +000061 virtual lldb_private::ConstString
Stephen Wilsone6f9f662010-07-24 02:19:04 +000062 GetPluginName();
63
Stephen Wilsone6f9f662010-07-24 02:19:04 +000064 virtual uint32_t
65 GetPluginVersion();
66
67 virtual void
68 GetPluginCommandHelp(const char *command, lldb_private::Stream *strm);
69
70 virtual lldb_private::Error
71 ExecutePluginCommand(lldb_private::Args &command,
72 lldb_private::Stream *strm);
73
74 virtual lldb_private::Log *
75 EnablePluginLogging(lldb_private::Stream *strm,
76 lldb_private::Args &command);
77
Matt Kopec841a5482013-05-17 22:21:08 +000078 //------------------------------------------------------------------
79 // Plug-in process overrides
80 //------------------------------------------------------------------
81 virtual lldb_private::UnixSignals &
82 GetUnixSignals ()
83 {
84 return m_linux_signals;
85 }
86
Stephen Wilsone6f9f662010-07-24 02:19:04 +000087private:
Stephen Wilson84ffe702011-03-30 15:55:52 +000088
89 /// Linux-specific signal set.
90 LinuxSignals m_linux_signals;
91
Stephen Wilsone6f9f662010-07-24 02:19:04 +000092};
93
94#endif // liblldb_MacOSXProcess_H_