forked from OSchip/llvm-project
111 lines
2.9 KiB
C++
111 lines
2.9 KiB
C++
//===-- ProcessLinux.h ------------------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef liblldb_ProcessLinux_H_
|
|
#define liblldb_ProcessLinux_H_
|
|
|
|
// C Includes
|
|
|
|
// C++ Includes
|
|
#include <queue>
|
|
|
|
// Other libraries and framework includes
|
|
#include "lldb/Target/Process.h"
|
|
#include "Plugins/Process/POSIX/ProcessMessage.h"
|
|
#include "Plugins/Process/POSIX/ProcessPOSIX.h"
|
|
|
|
class ProcessMonitor;
|
|
|
|
namespace lldb_private {
|
|
namespace process_linux {
|
|
|
|
class ProcessLinux : public ProcessPOSIX
|
|
{
|
|
public:
|
|
//------------------------------------------------------------------
|
|
// Static functions.
|
|
//------------------------------------------------------------------
|
|
static lldb::ProcessSP
|
|
CreateInstance(Target& target,
|
|
Listener &listener,
|
|
const FileSpec *);
|
|
|
|
static void
|
|
Initialize();
|
|
|
|
static void
|
|
Terminate();
|
|
|
|
static ConstString
|
|
GetPluginNameStatic();
|
|
|
|
static const char *
|
|
GetPluginDescriptionStatic();
|
|
|
|
//------------------------------------------------------------------
|
|
// Constructors and destructors
|
|
//------------------------------------------------------------------
|
|
ProcessLinux(Target& target,
|
|
Listener &listener,
|
|
const FileSpec *core_file);
|
|
|
|
Error
|
|
DoDetach(bool keep_stopped) override;
|
|
|
|
bool
|
|
DetachRequiresHalt() override { return true; }
|
|
|
|
bool
|
|
UpdateThreadList(ThreadList &old_thread_list, ThreadList &new_thread_list) override;
|
|
|
|
//------------------------------------------------------------------
|
|
// PluginInterface protocol
|
|
//------------------------------------------------------------------
|
|
ConstString
|
|
GetPluginName() override;
|
|
|
|
uint32_t
|
|
GetPluginVersion() override;
|
|
|
|
virtual void
|
|
GetPluginCommandHelp(const char *command, Stream *strm);
|
|
|
|
virtual Error
|
|
ExecutePluginCommand(Args &command,
|
|
Stream *strm);
|
|
|
|
virtual Log *
|
|
EnablePluginLogging(Stream *strm,
|
|
Args &command);
|
|
|
|
bool
|
|
CanDebug(Target &target, bool plugin_specified_by_name) override;
|
|
|
|
//------------------------------------------------------------------
|
|
// ProcessPOSIX overrides
|
|
//------------------------------------------------------------------
|
|
void
|
|
StopAllThreads(lldb::tid_t stop_tid) override;
|
|
|
|
POSIXThread *
|
|
CreateNewPOSIXThread(Process &process, lldb::tid_t tid) override;
|
|
|
|
private:
|
|
|
|
const FileSpec *m_core_file;
|
|
|
|
// Flag to avoid recursion when stopping all threads.
|
|
bool m_stopping_threads;
|
|
};
|
|
|
|
} // namespace process_linux
|
|
} // namespace lldb_private
|
|
|
|
#endif // liblldb_ProcessLinux_H_
|