blob: cef8a662171f71ec39567792851dc5804a982098 [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 //------------------------------------------------------------------
33 static Process*
34 CreateInstance(lldb_private::Target& target,
35 lldb_private::Listener &listener);
36
37 static void
38 Initialize();
39
40 static void
41 Terminate();
42
43 static const char *
44 GetPluginNameStatic();
45
46 static const char *
47 GetPluginDescriptionStatic();
48
49 //------------------------------------------------------------------
50 // Constructors and destructors
51 //------------------------------------------------------------------
52 ProcessLinux(lldb_private::Target& target,
53 lldb_private::Listener &listener);
54
Stephen Wilsonf6f40332010-07-24 02:19:04 +000055 virtual uint32_t
Johnny Chen7e996472012-01-05 19:17:38 +000056 UpdateThreadList(lldb_private::ThreadList &old_thread_list, lldb_private::ThreadList &new_thread_list);
Stephen Wilsonf6f40332010-07-24 02:19:04 +000057 //------------------------------------------------------------------
58 // PluginInterface protocol
59 //------------------------------------------------------------------
60 virtual const char *
61 GetPluginName();
62
63 virtual const char *
64 GetShortPluginName();
65
66 virtual uint32_t
67 GetPluginVersion();
68
69 virtual void
70 GetPluginCommandHelp(const char *command, lldb_private::Stream *strm);
71
72 virtual lldb_private::Error
73 ExecutePluginCommand(lldb_private::Args &command,
74 lldb_private::Stream *strm);
75
76 virtual lldb_private::Log *
77 EnablePluginLogging(lldb_private::Stream *strm,
78 lldb_private::Args &command);
79
Stephen Wilsonf6f40332010-07-24 02:19:04 +000080private:
Stephen Wilson67d9f7e2011-03-30 15:55:52 +000081
82 /// Linux-specific signal set.
83 LinuxSignals m_linux_signals;
84
Stephen Wilsonf6f40332010-07-24 02:19:04 +000085};
86
87#endif // liblldb_MacOSXProcess_H_