summaryrefslogtreecommitdiffstats
path: root/lldb/source
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2014-09-11 22:22:16 +0000
committerZachary Turner <zturner@google.com>2014-09-11 22:22:16 +0000
commitf5e4f37cb67114cde73bea8befa0187b1c32b4c5 (patch)
tree03a8f491919c25cebd7667ee5dd6b22d875a998c /lldb/source
parent062c406a85a3669931da866728ec0373d88598c9 (diff)
downloadbcm5719-llvm-f5e4f37cb67114cde73bea8befa0187b1c32b4c5.tar.gz
bcm5719-llvm-f5e4f37cb67114cde73bea8befa0187b1c32b4c5.zip
Update HostProcess to use the same facade pattern as HostThread.
llvm-svn: 217632
Diffstat (limited to 'lldb/source')
-rw-r--r--lldb/source/Host/CMakeLists.txt1
-rw-r--r--lldb/source/Host/common/HostProcess.cpp54
-rw-r--r--lldb/source/Host/posix/HostProcessPosix.cpp34
-rw-r--r--lldb/source/Host/windows/HostProcessWindows.cpp53
4 files changed, 81 insertions, 61 deletions
diff --git a/lldb/source/Host/CMakeLists.txt b/lldb/source/Host/CMakeLists.txt
index 0051f902c71..578c9469a06 100644
--- a/lldb/source/Host/CMakeLists.txt
+++ b/lldb/source/Host/CMakeLists.txt
@@ -12,6 +12,7 @@ add_host_subdirectory(common
common/Host.cpp
common/HostInfoBase.cpp
common/HostNativeThreadBase.cpp
+ common/HostProcess.cpp
common/HostThread.cpp
common/IOObject.cpp
common/Mutex.cpp
diff --git a/lldb/source/Host/common/HostProcess.cpp b/lldb/source/Host/common/HostProcess.cpp
new file mode 100644
index 00000000000..97ae6780521
--- /dev/null
+++ b/lldb/source/Host/common/HostProcess.cpp
@@ -0,0 +1,54 @@
+//===-- HostProcess.cpp -----------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "lldb/Host/HostNativeProcess.h"
+#include "lldb/Host/HostProcess.h"
+
+using namespace lldb;
+using namespace lldb_private;
+
+HostProcess::HostProcess()
+ : m_native_process(new HostNativeProcess)
+{
+}
+
+HostProcess::HostProcess(lldb::process_t process)
+ : m_native_process(new HostNativeProcess(process))
+{
+}
+
+Error HostProcess::Terminate()
+{
+ return m_native_process->Terminate();
+}
+
+Error HostProcess::GetMainModule(FileSpec &file_spec) const
+{
+ return m_native_process->GetMainModule(file_spec);
+}
+
+lldb::pid_t HostProcess::GetProcessId() const
+{
+ return m_native_process->GetProcessId();
+}
+
+bool HostProcess::IsRunning() const
+{
+ return m_native_process->IsRunning();
+}
+
+HostNativeProcessBase &HostProcess::GetNativeProcess()
+{
+ return *m_native_process;
+}
+
+const HostNativeProcessBase &HostProcess::GetNativeProcess() const
+{
+ return *m_native_process;
+}
diff --git a/lldb/source/Host/posix/HostProcessPosix.cpp b/lldb/source/Host/posix/HostProcessPosix.cpp
index 4618de4711d..1f909e55820 100644
--- a/lldb/source/Host/posix/HostProcessPosix.cpp
+++ b/lldb/source/Host/posix/HostProcessPosix.cpp
@@ -16,10 +16,13 @@
using namespace lldb_private;
-const lldb::pid_t HostProcessPosix::kInvalidProcessId = 0;
+namespace
+{
+ const int kInvalidPosixProcess = 0;
+}
HostProcessPosix::HostProcessPosix()
-: m_pid(kInvalidProcessId)
+ : HostNativeProcessBase(kInvalidPosixProcess)
{
}
@@ -27,38 +30,33 @@ HostProcessPosix::~HostProcessPosix()
{
}
-Error HostProcessPosix::Create(lldb::pid_t pid)
-{
- Error error;
- if (pid == kInvalidProcessId)
- error.SetErrorString("Attempt to create an invalid process");
-
- m_pid = pid;
- return error;
-}
-
Error HostProcessPosix::Signal(int signo) const
{
- if (m_pid <= 0)
+ if (m_process == kInvalidPosixProcess)
{
Error error;
error.SetErrorString("HostProcessPosix refers to an invalid process");
return error;
}
- return HostProcessPosix::Signal(m_pid, signo);
+ return HostProcessPosix::Signal(m_process, signo);
}
-Error HostProcessPosix::Signal(lldb::pid_t pid, int signo)
+Error HostProcessPosix::Signal(lldb::process_t process, int signo)
{
Error error;
- if (-1 == ::kill(pid, signo))
+ if (-1 == ::kill(process, signo))
error.SetErrorToErrno();
return error;
}
+Error HostProcessPosix::Terminate()
+{
+ return Signal(SIGKILL);
+}
+
Error HostProcessPosix::GetMainModule(FileSpec &file_spec) const
{
Error error;
@@ -66,7 +64,7 @@ Error HostProcessPosix::GetMainModule(FileSpec &file_spec) const
// Use special code here because proc/[pid]/exe is a symbolic link.
char link_path[PATH_MAX];
char exe_path[PATH_MAX] = "";
- if (snprintf (link_path, PATH_MAX, "/proc/%" PRIu64 "/exe", m_pid) <= 0)
+ if (snprintf (link_path, PATH_MAX, "/proc/%" PRIu64 "/exe", m_process) <= 0)
{
error.SetErrorString("Unable to build /proc/<pid>/exe string");
return error;
@@ -92,7 +90,7 @@ Error HostProcessPosix::GetMainModule(FileSpec &file_spec) const
lldb::pid_t HostProcessPosix::GetProcessId() const
{
- return m_pid;
+ return m_process;
}
bool HostProcessPosix::IsRunning() const
diff --git a/lldb/source/Host/windows/HostProcessWindows.cpp b/lldb/source/Host/windows/HostProcessWindows.cpp
index 7a1ad955e3b..bf54e587912 100644
--- a/lldb/source/Host/windows/HostProcessWindows.cpp
+++ b/lldb/source/Host/windows/HostProcessWindows.cpp
@@ -7,19 +7,18 @@
//
//===----------------------------------------------------------------------===//
+#include "lldb/Host/FileSpec.h"
#include "lldb/Host/windows/windows.h"
-
-#include <Psapi.h>
-
#include "lldb/Host/windows/HostProcessWindows.h"
#include "llvm/ADT/STLExtras.h"
+#include <Psapi.h>
+
using namespace lldb_private;
-HostProcessWindows::HostProcessWindows()
- : m_process(NULL)
- , m_pid(0)
+HostProcessWindows::HostProcessWindows(lldb::process_t process)
+ : HostNativeProcessBase(process)
{
}
@@ -28,41 +27,10 @@ HostProcessWindows::~HostProcessWindows()
Close();
}
-Error HostProcessWindows::Create(lldb::pid_t pid)
-{
- Error error;
- if (pid == m_pid)
- return error;
- Close();
-
- m_process = ::OpenProcess(PROCESS_TERMINATE | PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid);
- if (m_process == NULL)
- {
- error.SetError(::GetLastError(), lldb::eErrorTypeWin32);
- return error;
- }
- m_pid = pid;
- return error;
-}
-
-Error HostProcessWindows::Create(lldb::process_t process)
-{
- Error error;
- if (process == m_process)
- return error;
- Close();
-
- m_pid = ::GetProcessId(process);
- if (m_pid == 0)
- error.SetError(::GetLastError(), lldb::eErrorTypeWin32);
- m_process = process;
- return error;
-}
-
Error HostProcessWindows::Terminate()
{
Error error;
- if (m_process == NULL)
+ if (m_process == nullptr)
error.SetError(ERROR_INVALID_HANDLE, lldb::eErrorTypeWin32);
if (!::TerminateProcess(m_process, 0))
@@ -74,7 +42,7 @@ Error HostProcessWindows::Terminate()
Error HostProcessWindows::GetMainModule(FileSpec &file_spec) const
{
Error error;
- if (m_process == NULL)
+ if (m_process == nullptr)
error.SetError(ERROR_INVALID_HANDLE, lldb::eErrorTypeWin32);
char path[MAX_PATH] = { 0 };
@@ -88,12 +56,12 @@ Error HostProcessWindows::GetMainModule(FileSpec &file_spec) const
lldb::pid_t HostProcessWindows::GetProcessId() const
{
- return m_pid;
+ return ::GetProcessId(m_process);
}
bool HostProcessWindows::IsRunning() const
{
- if (m_process == NULL)
+ if (m_process == nullptr)
return false;
DWORD code = 0;
@@ -105,8 +73,7 @@ bool HostProcessWindows::IsRunning() const
void HostProcessWindows::Close()
{
- if (m_process != NULL)
+ if (m_process != nullptr)
::CloseHandle(m_process);
m_process = nullptr;
- m_pid = 0;
}
OpenPOWER on IntegriCloud