
Unused since d792094c26dc6b40136f1e6c2e393c041062e371. [2571/6469] Building CXX object tools/lldb/sourc...iles/lldbHost.dir/windows/ProcessRunLock.cpp.obj C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/llvm-project/lldb/source/Host/windows/ProcessRunLock.cpp(31,13): warning: unused function 'WriteTryLock' [-Wunused-function] 31 | static bool WriteTryLock(lldb::rwlock_t rwlock) { | ^~~~~~~~~~~~ 1 warning generated.
70 lines
1.7 KiB
C++
70 lines
1.7 KiB
C++
//===-- ProcessRunLock.cpp ------------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "lldb/Host/ProcessRunLock.h"
|
|
#include "lldb/Host/windows/windows.h"
|
|
|
|
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 ReadUnlock(lldb::rwlock_t rwlock) {
|
|
::ReleaseSRWLockShared(GetLock(rwlock));
|
|
return true;
|
|
}
|
|
|
|
static bool WriteLock(lldb::rwlock_t rwlock) {
|
|
::AcquireSRWLockExclusive(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() { 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::ReadUnlock() { return ::ReadUnlock(m_rwlock); }
|
|
|
|
bool ProcessRunLock::SetRunning() {
|
|
WriteLock(m_rwlock);
|
|
bool was_stopped = !m_running;
|
|
m_running = true;
|
|
WriteUnlock(m_rwlock);
|
|
return was_stopped;
|
|
}
|
|
|
|
bool ProcessRunLock::SetStopped() {
|
|
WriteLock(m_rwlock);
|
|
bool was_running = m_running;
|
|
m_running = false;
|
|
WriteUnlock(m_rwlock);
|
|
return was_running;
|
|
}
|