diff options
author | Zachary Turner <zturner@google.com> | 2014-09-11 22:22:16 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2014-09-11 22:22:16 +0000 |
commit | f5e4f37cb67114cde73bea8befa0187b1c32b4c5 (patch) | |
tree | 03a8f491919c25cebd7667ee5dd6b22d875a998c /lldb/source | |
parent | 062c406a85a3669931da866728ec0373d88598c9 (diff) | |
download | bcm5719-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.txt | 1 | ||||
-rw-r--r-- | lldb/source/Host/common/HostProcess.cpp | 54 | ||||
-rw-r--r-- | lldb/source/Host/posix/HostProcessPosix.cpp | 34 | ||||
-rw-r--r-- | lldb/source/Host/windows/HostProcessWindows.cpp | 53 |
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; } |