diff options
Diffstat (limited to 'lldb/source/Host/windows/HostThreadWindows.cpp')
-rw-r--r-- | lldb/source/Host/windows/HostThreadWindows.cpp | 103 |
1 files changed, 38 insertions, 65 deletions
diff --git a/lldb/source/Host/windows/HostThreadWindows.cpp b/lldb/source/Host/windows/HostThreadWindows.cpp index d59064f..41be21b 100644 --- a/lldb/source/Host/windows/HostThreadWindows.cpp +++ b/lldb/source/Host/windows/HostThreadWindows.cpp @@ -9,90 +9,63 @@ #include "lldb/Core/Error.h" -#include "lldb/Host/windows/windows.h" #include "lldb/Host/windows/HostThreadWindows.h" +#include "lldb/Host/windows/windows.h" #include "llvm/ADT/STLExtras.h" using namespace lldb; using namespace lldb_private; -namespace -{ -void __stdcall ExitThreadProxy(ULONG_PTR dwExitCode) -{ - ::ExitThread(dwExitCode); +namespace { +void __stdcall ExitThreadProxy(ULONG_PTR dwExitCode) { + ::ExitThread(dwExitCode); } } HostThreadWindows::HostThreadWindows() - : HostNativeThreadBase() - , m_owns_handle(true) -{ -} + : HostNativeThreadBase(), m_owns_handle(true) {} HostThreadWindows::HostThreadWindows(lldb::thread_t thread) - : HostNativeThreadBase(thread) - , m_owns_handle(true) -{ -} - -HostThreadWindows::~HostThreadWindows() -{ - Reset(); -} - -void -HostThreadWindows::SetOwnsHandle(bool owns) -{ - m_owns_handle = owns; -} - -Error -HostThreadWindows::Join(lldb::thread_result_t *result) -{ - Error error; - if (IsJoinable()) - { - DWORD wait_result = ::WaitForSingleObject(m_thread, INFINITE); - if (WAIT_OBJECT_0 == wait_result && result) - { - DWORD exit_code = 0; - if (!::GetExitCodeThread(m_thread, &exit_code)) - *result = 0; - *result = exit_code; - } - else if (WAIT_OBJECT_0 != wait_result) - error.SetError(::GetLastError(), eErrorTypeWin32); - } - else - error.SetError(ERROR_INVALID_HANDLE, eErrorTypeWin32); - - Reset (); - return error; + : HostNativeThreadBase(thread), m_owns_handle(true) {} + +HostThreadWindows::~HostThreadWindows() { Reset(); } + +void HostThreadWindows::SetOwnsHandle(bool owns) { m_owns_handle = owns; } + +Error HostThreadWindows::Join(lldb::thread_result_t *result) { + Error error; + if (IsJoinable()) { + DWORD wait_result = ::WaitForSingleObject(m_thread, INFINITE); + if (WAIT_OBJECT_0 == wait_result && result) { + DWORD exit_code = 0; + if (!::GetExitCodeThread(m_thread, &exit_code)) + *result = 0; + *result = exit_code; + } else if (WAIT_OBJECT_0 != wait_result) + error.SetError(::GetLastError(), eErrorTypeWin32); + } else + error.SetError(ERROR_INVALID_HANDLE, eErrorTypeWin32); + + Reset(); + return error; } -Error -HostThreadWindows::Cancel() -{ - Error error; +Error HostThreadWindows::Cancel() { + Error error; - DWORD result = ::QueueUserAPC(::ExitThreadProxy, m_thread, 0); - error.SetError(result, eErrorTypeWin32); - return error; + DWORD result = ::QueueUserAPC(::ExitThreadProxy, m_thread, 0); + error.SetError(result, eErrorTypeWin32); + return error; } -lldb::tid_t -HostThreadWindows::GetThreadId() const -{ - return ::GetThreadId(m_thread); +lldb::tid_t HostThreadWindows::GetThreadId() const { + return ::GetThreadId(m_thread); } -void -HostThreadWindows::Reset() -{ - if (m_owns_handle && m_thread != LLDB_INVALID_HOST_THREAD) - ::CloseHandle(m_thread); +void HostThreadWindows::Reset() { + if (m_owns_handle && m_thread != LLDB_INVALID_HOST_THREAD) + ::CloseHandle(m_thread); - HostNativeThreadBase::Reset(); + HostNativeThreadBase::Reset(); } |