ProcessLinux.h revision 451a54e89fd311bd908fa0d79b1d8c6d30cd96c0
1//===-- 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"
20#include "LinuxSignals.h"
21#include "ProcessMessage.h"
22#include "ProcessPOSIX.h"
23
24class ProcessMonitor;
25
26class ProcessLinux :
27    public ProcessPOSIX
28{
29public:
30    //------------------------------------------------------------------
31    // Static functions.
32    //------------------------------------------------------------------
33    static lldb::ProcessSP
34    CreateInstance(lldb_private::Target& target,
35                   lldb_private::Listener &listener,
36                   const lldb_private::FileSpec *);
37
38    static void
39    Initialize();
40
41    static void
42    Terminate();
43
44    static lldb_private::ConstString
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
56    virtual bool
57    UpdateThreadList(lldb_private::ThreadList &old_thread_list, lldb_private::ThreadList &new_thread_list);
58    //------------------------------------------------------------------
59    // PluginInterface protocol
60    //------------------------------------------------------------------
61    virtual lldb_private::ConstString
62    GetPluginName();
63
64    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
78    //------------------------------------------------------------------
79    // Plug-in process overrides
80    //------------------------------------------------------------------
81    virtual lldb_private::UnixSignals &
82    GetUnixSignals ()
83    {
84        return m_linux_signals;
85    }
86
87private:
88
89    /// Linux-specific signal set.
90    LinuxSignals m_linux_signals;
91
92};
93
94#endif  // liblldb_MacOSXProcess_H_
95