]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / llvm / tools / lldb / source / Plugins / Process / FreeBSD / ProcessFreeBSD.h
1 //===-- ProcessFreeBSD.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_ProcessFreeBSD_H_
11 #define liblldb_ProcessFreeBSD_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 "lldb/Target/ThreadList.h"
21 #include "ProcessMessage.h"
22 #include "ProcessPOSIX.h"
23
24 class ProcessMonitor;
25
26 class ProcessFreeBSD :
27     public ProcessPOSIX
28 {
29
30 public:
31     //------------------------------------------------------------------
32     // Static functions.
33     //------------------------------------------------------------------
34     static lldb::ProcessSP
35     CreateInstance(lldb_private::Target& target,
36                    lldb_private::Listener &listener,
37                    const lldb_private::FileSpec *crash_file_path);
38
39     static void
40     Initialize();
41
42     static void
43     Terminate();
44
45     static lldb_private::ConstString
46     GetPluginNameStatic();
47
48     static const char *
49     GetPluginDescriptionStatic();
50
51     //------------------------------------------------------------------
52     // Constructors and destructors
53     //------------------------------------------------------------------
54     ProcessFreeBSD(lldb_private::Target& target,
55                    lldb_private::Listener &listener);
56
57     virtual lldb_private::Error
58     DoDetach(bool keep_stopped);
59
60     virtual bool
61     UpdateThreadList(lldb_private::ThreadList &old_thread_list, lldb_private::ThreadList &new_thread_list);
62
63     virtual lldb_private::Error
64     DoResume();
65
66     virtual lldb_private::Error
67     WillResume();
68
69     virtual void
70     SendMessage(const ProcessMessage &message);
71
72     //------------------------------------------------------------------
73     // PluginInterface protocol
74     //------------------------------------------------------------------
75     virtual lldb_private::ConstString
76     GetPluginName();
77
78     virtual uint32_t
79     GetPluginVersion();
80
81     virtual void
82     GetPluginCommandHelp(const char *command, lldb_private::Stream *strm);
83
84     virtual lldb_private::Error
85     ExecutePluginCommand(lldb_private::Args &command,
86                          lldb_private::Stream *strm);
87
88     virtual lldb_private::Log *
89     EnablePluginLogging(lldb_private::Stream *strm,
90                         lldb_private::Args &command);
91
92 protected:
93     friend class FreeBSDThread;
94
95     typedef std::vector<lldb::tid_t> tid_collection;
96     tid_collection m_suspend_tids;
97     tid_collection m_run_tids;
98     tid_collection m_step_tids;
99
100     int m_resume_signo;
101
102 };
103
104 #endif  // liblldb_ProcessFreeBSD_H_