12341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen//===-- ProcessFreeBSD.h ------------------------------------------*- C++ -*-===//
22341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen//
32341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen//                     The LLVM Compiler Infrastructure
42341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen//
52341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen// This file is distributed under the University of Illinois Open Source
62341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen// License. See LICENSE.TXT for details.
72341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen//
82341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen//===----------------------------------------------------------------------===//
92341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
102341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#ifndef liblldb_ProcessFreeBSD_H_
112341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#define liblldb_ProcessFreeBSD_H_
122341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
132341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen// C Includes
142341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
152341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen// C++ Includes
162341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#include <queue>
172341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
182341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen// Other libraries and framework includes
192341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#include "lldb/Target/Process.h"
202341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#include "lldb/Target/ThreadList.h"
212341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#include "ProcessMessage.h"
222341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#include "ProcessPOSIX.h"
232341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
242341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chenclass ProcessMonitor;
252341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
262341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chenclass ProcessFreeBSD :
272341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    public ProcessPOSIX
282341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen{
292341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
302341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chenpublic:
312341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    //------------------------------------------------------------------
322341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    // Static functions.
332341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    //------------------------------------------------------------------
342b737df3a92e30bb66aec108cb4d09ec1c1e86feGreg Clayton    static lldb::ProcessSP
352341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    CreateInstance(lldb_private::Target& target,
362b737df3a92e30bb66aec108cb4d09ec1c1e86feGreg Clayton                   lldb_private::Listener &listener,
372b737df3a92e30bb66aec108cb4d09ec1c1e86feGreg Clayton                   const lldb_private::FileSpec *crash_file_path);
382341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
392341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    static void
402341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    Initialize();
412341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
422341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    static void
432341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    Terminate();
442341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
450e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton    static lldb_private::ConstString
462341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    GetPluginNameStatic();
472341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
482341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    static const char *
492341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    GetPluginDescriptionStatic();
502341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
512341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    //------------------------------------------------------------------
522341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    // Constructors and destructors
532341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    //------------------------------------------------------------------
542341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    ProcessFreeBSD(lldb_private::Target& target,
552b737df3a92e30bb66aec108cb4d09ec1c1e86feGreg Clayton                   lldb_private::Listener &listener);
562341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
57c8dd570dddf0b73b74db5c1ecb8f18f023f864e7Greg Clayton    virtual bool
582341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    UpdateThreadList(lldb_private::ThreadList &old_thread_list, lldb_private::ThreadList &new_thread_list);
592341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
602341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    //------------------------------------------------------------------
612341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    // PluginInterface protocol
622341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    //------------------------------------------------------------------
630e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton    virtual lldb_private::ConstString
642341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    GetPluginName();
652341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
662341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    virtual uint32_t
672341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    GetPluginVersion();
682341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
692341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    virtual void
702341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    GetPluginCommandHelp(const char *command, lldb_private::Stream *strm);
712341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
722341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    virtual lldb_private::Error
732341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    ExecutePluginCommand(lldb_private::Args &command,
742341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen                         lldb_private::Stream *strm);
752341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
762341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    virtual lldb_private::Log *
772341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    EnablePluginLogging(lldb_private::Stream *strm,
782341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen                        lldb_private::Args &command);
792341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
802341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen};
812341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
822341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#endif  // liblldb_MacOSXProcess_H_
83