blob: 742627f37a253f2658f77a1be14b83a611b4b9af [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);
Michael Sartain9f822cd2013-07-31 23:27:46 +000059
Stephen Wilsone6f9f662010-07-24 02:19:04 +000060 //------------------------------------------------------------------
61 // PluginInterface protocol
62 //------------------------------------------------------------------
Greg Clayton57abc5d2013-05-10 21:47:16 +000063 virtual lldb_private::ConstString
Stephen Wilsone6f9f662010-07-24 02:19:04 +000064 GetPluginName();
65
Stephen Wilsone6f9f662010-07-24 02:19:04 +000066 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
Matt Kopec841a5482013-05-17 22:21:08 +000080 //------------------------------------------------------------------
81 // Plug-in process overrides
82 //------------------------------------------------------------------
83 virtual lldb_private::UnixSignals &
84 GetUnixSignals ()
85 {
86 return m_linux_signals;
87 }
88
Ashok Thirumurthi4f01ff82013-07-17 16:06:12 +000089 virtual bool
90 CanDebug(lldb_private::Target &target, bool plugin_specified_by_name);
91
Andrew Kaylor93132f52013-05-28 23:04:25 +000092 //------------------------------------------------------------------
93 // ProcessPOSIX overrides
94 //------------------------------------------------------------------
95 virtual void
96 StopAllThreads(lldb::tid_t stop_tid);
97
Michael Sartain9f822cd2013-07-31 23:27:46 +000098 virtual POSIXThread *
99 CreateNewPOSIXThread(lldb_private::Process &process, lldb::tid_t tid);
100
Stephen Wilsone6f9f662010-07-24 02:19:04 +0000101private:
Stephen Wilson84ffe702011-03-30 15:55:52 +0000102
103 /// Linux-specific signal set.
104 LinuxSignals m_linux_signals;
105
Ashok Thirumurthi4f01ff82013-07-17 16:06:12 +0000106 lldb_private::FileSpec *m_core_file;
107
Andrew Kaylor93132f52013-05-28 23:04:25 +0000108 // Flag to avoid recursion when stopping all threads.
109 bool m_stopping_threads;
Stephen Wilsone6f9f662010-07-24 02:19:04 +0000110};
111
112#endif // liblldb_MacOSXProcess_H_