diff options
Diffstat (limited to 'source/Host/windows/ProcessRunLock.cpp')
-rw-r--r-- | source/Host/windows/ProcessRunLock.cpp | 130 |
1 files changed, 53 insertions, 77 deletions
diff --git a/source/Host/windows/ProcessRunLock.cpp b/source/Host/windows/ProcessRunLock.cpp index 1f21552a3062..64276917fc81 100644 --- a/source/Host/windows/ProcessRunLock.cpp +++ b/source/Host/windows/ProcessRunLock.cpp @@ -1,106 +1,82 @@ +//===-- ProcessRunLock.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/ProcessRunLock.h" #include "lldb/Host/windows/windows.h" -namespace -{ -#if defined(__MINGW32__) -// Taken from WinNT.h -typedef struct _RTL_SRWLOCK { - PVOID Ptr; -} RTL_SRWLOCK, *PRTL_SRWLOCK; - -// Taken from WinBase.h -typedef RTL_SRWLOCK SRWLOCK, *PSRWLOCK; -#endif +static PSRWLOCK GetLock(lldb::rwlock_t lock) { + return static_cast<PSRWLOCK>(lock); } - -static PSRWLOCK GetLock(lldb::rwlock_t lock) -{ - return static_cast<PSRWLOCK>(lock); +static bool ReadLock(lldb::rwlock_t rwlock) { + ::AcquireSRWLockShared(GetLock(rwlock)); + return true; } -static bool ReadLock(lldb::rwlock_t rwlock) -{ - ::AcquireSRWLockShared(GetLock(rwlock)); - return true; +static bool ReadUnlock(lldb::rwlock_t rwlock) { + ::ReleaseSRWLockShared(GetLock(rwlock)); + return true; } -static bool ReadUnlock(lldb::rwlock_t rwlock) -{ - ::ReleaseSRWLockShared(GetLock(rwlock)); - return true; +static bool WriteLock(lldb::rwlock_t rwlock) { + ::AcquireSRWLockExclusive(GetLock(rwlock)); + return true; } -static bool WriteLock(lldb::rwlock_t rwlock) -{ - ::AcquireSRWLockExclusive(GetLock(rwlock)); - return true; -} - -static bool WriteTryLock(lldb::rwlock_t rwlock) -{ - return !!::TryAcquireSRWLockExclusive(GetLock(rwlock)); +static bool WriteTryLock(lldb::rwlock_t rwlock) { + return !!::TryAcquireSRWLockExclusive(GetLock(rwlock)); } -static bool WriteUnlock(lldb::rwlock_t rwlock) -{ - ::ReleaseSRWLockExclusive(GetLock(rwlock)); - return true; +static bool WriteUnlock(lldb::rwlock_t rwlock) { + ::ReleaseSRWLockExclusive(GetLock(rwlock)); + return true; } using namespace lldb_private; -ProcessRunLock::ProcessRunLock() - : m_running(false) -{ - m_rwlock = new SRWLOCK; - InitializeSRWLock(GetLock(m_rwlock)); +ProcessRunLock::ProcessRunLock() : m_running(false) { + m_rwlock = new SRWLOCK; + InitializeSRWLock(GetLock(m_rwlock)); } -ProcessRunLock::~ProcessRunLock() -{ - delete m_rwlock; -} +ProcessRunLock::~ProcessRunLock() { delete static_cast<SRWLOCK *>(m_rwlock); } -bool ProcessRunLock::ReadTryLock() -{ - ::ReadLock(m_rwlock); - if (m_running == false) - return true; - ::ReadUnlock(m_rwlock); - return false; +bool ProcessRunLock::ReadTryLock() { + ::ReadLock(m_rwlock); + if (m_running == false) + return true; + ::ReadUnlock(m_rwlock); + return false; } -bool ProcessRunLock::ReadUnlock() -{ - return ::ReadUnlock(m_rwlock); +bool ProcessRunLock::ReadUnlock() { return ::ReadUnlock(m_rwlock); } + +bool ProcessRunLock::SetRunning() { + WriteLock(m_rwlock); + m_running = true; + WriteUnlock(m_rwlock); + return true; } -bool ProcessRunLock::SetRunning () -{ - WriteLock(m_rwlock); +bool ProcessRunLock::TrySetRunning() { + if (WriteTryLock(m_rwlock)) { + bool was_running = m_running; m_running = true; WriteUnlock(m_rwlock); - return true; + return !was_running; + } + return false; } -bool ProcessRunLock::TrySetRunning () -{ - if (WriteTryLock(m_rwlock)) - { - bool was_running = m_running; - m_running = true; - WriteUnlock(m_rwlock); - return !was_running; - } - return false; -} - -bool ProcessRunLock::SetStopped () -{ - WriteLock(m_rwlock); - m_running = false; - WriteUnlock(m_rwlock); - return true; +bool ProcessRunLock::SetStopped() { + WriteLock(m_rwlock); + m_running = false; + WriteUnlock(m_rwlock); + return true; } |