blob: aaa517d5321724672eb8a5023ee095b36ddadb2d [file] [log] [blame]
Andrew Walbran3d2c1972020-04-07 12:24:26 +01001//===-- HostNativeProcessBase.h ---------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef lldb_Host_HostNativeProcessBase_h_
10#define lldb_Host_HostNativeProcessBase_h_
11
12#include "lldb/Host/HostProcess.h"
13#include "lldb/Utility/Status.h"
14#include "lldb/lldb-defines.h"
15#include "lldb/lldb-types.h"
16
17namespace lldb_private {
18
19class HostThread;
20
21class HostNativeProcessBase {
22 DISALLOW_COPY_AND_ASSIGN(HostNativeProcessBase);
23
24public:
25 HostNativeProcessBase() : m_process(LLDB_INVALID_PROCESS) {}
26 explicit HostNativeProcessBase(lldb::process_t process)
27 : m_process(process) {}
28 virtual ~HostNativeProcessBase() {}
29
30 virtual Status Terminate() = 0;
31 virtual Status GetMainModule(FileSpec &file_spec) const = 0;
32
33 virtual lldb::pid_t GetProcessId() const = 0;
34 virtual bool IsRunning() const = 0;
35
36 lldb::process_t GetSystemHandle() const { return m_process; }
37
38 virtual llvm::Expected<HostThread>
39 StartMonitoring(const Host::MonitorChildProcessCallback &callback,
40 bool monitor_signals) = 0;
41
42protected:
43 lldb::process_t m_process;
44};
45}
46
47#endif