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 "Plugins/Process/POSIX/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_ 105