ProcessFreeBSD.h revision 269024
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
24class ProcessMonitor;
25
26class ProcessFreeBSD :
27    public ProcessPOSIX
28{
29
30public:
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
92protected:
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_
105