blob: c651351599a55c6d1c7d359c43b8a5215da1fe42 [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,
Ashok Thirumurthi4f01ff82013-07-17 16:06:12 +000054 lldb_private::Listener &listener,
55 lldb_private::FileSpec *core_file);
Stephen Wilsone6f9f662010-07-24 02:19:04 +000056
Greg Claytonc3c0b0e2012-04-12 19:04:34 +000057 virtual bool
Johnny Chen30213ff2012-01-05 19:17:38 +000058 UpdateThreadList(lldb_private::ThreadList &old_thread_list, lldb_private::ThreadList &new_thread_list);
Stephen Wilsone6f9f662010-07-24 02:19:04 +000059 //------------------------------------------------------------------
60 // PluginInterface protocol
61 //------------------------------------------------------------------
Greg Clayton57abc5d2013-05-10 21:47:16 +000062 virtual lldb_private::ConstString
Stephen Wilsone6f9f662010-07-24 02:19:04 +000063 GetPluginName();
64
Stephen Wilsone6f9f662010-07-24 02:19:04 +000065 virtual uint32_t
66 GetPluginVersion();
67
68 virtual void
69 GetPluginCommandHelp(const char *command, lldb_private::Stream *strm);
70
71 virtual lldb_private::Error
72 ExecutePluginCommand(lldb_private::Args &command,
73 lldb_private::Stream *strm);
74
75 virtual lldb_private::Log *
76 EnablePluginLogging(lldb_private::Stream *strm,
77 lldb_private::Args &command);
78
Matt Kopec841a5482013-05-17 22:21:08 +000079 //------------------------------------------------------------------
80 // Plug-in process overrides
81 //------------------------------------------------------------------
82 virtual lldb_private::UnixSignals &
83 GetUnixSignals ()
84 {
85 return m_linux_signals;
86 }
87
Ashok Thirumurthi4f01ff82013-07-17 16:06:12 +000088 virtual bool
89 CanDebug(lldb_private::Target &target, bool plugin_specified_by_name);
90
Andrew Kaylor93132f52013-05-28 23:04:25 +000091 //------------------------------------------------------------------
92 // ProcessPOSIX overrides
93 //------------------------------------------------------------------
94 virtual void
95 StopAllThreads(lldb::tid_t stop_tid);
96
Stephen Wilsone6f9f662010-07-24 02:19:04 +000097private:
Stephen Wilson84ffe702011-03-30 15:55:52 +000098
99 /// Linux-specific signal set.
100 LinuxSignals m_linux_signals;
101
Ashok Thirumurthi4f01ff82013-07-17 16:06:12 +0000102 lldb_private::FileSpec *m_core_file;
103
Andrew Kaylor93132f52013-05-28 23:04:25 +0000104 // Flag to avoid recursion when stopping all threads.
105 bool m_stopping_threads;
Stephen Wilsone6f9f662010-07-24 02:19:04 +0000106};
107
108#endif // liblldb_MacOSXProcess_H_