LLDB mainline
common/ProcessRunLock.cpp
Go to the documentation of this file.
1//===-- ProcessRunLock.cpp ------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef _WIN32
11
12namespace lldb_private {
13
15 int err = ::pthread_rwlock_init(&m_rwlock, nullptr);
16 (void)err;
17}
18
20 int err = ::pthread_rwlock_destroy(&m_rwlock);
21 (void)err;
22}
23
25 ::pthread_rwlock_rdlock(&m_rwlock);
26 if (!m_running) {
27 // coverity[missing_unlock]
28 return true;
29 }
30 ::pthread_rwlock_unlock(&m_rwlock);
31 return false;
32}
33
35 return ::pthread_rwlock_unlock(&m_rwlock) == 0;
36}
37
39 ::pthread_rwlock_wrlock(&m_rwlock);
40 m_running = true;
41 ::pthread_rwlock_unlock(&m_rwlock);
42 return true;
43}
44
46 bool r;
47
48 if (::pthread_rwlock_trywrlock(&m_rwlock) == 0) {
49 r = !m_running;
50 m_running = true;
51 ::pthread_rwlock_unlock(&m_rwlock);
52 return r;
53 }
54 return false;
55}
56
58 ::pthread_rwlock_wrlock(&m_rwlock);
59 m_running = false;
60 ::pthread_rwlock_unlock(&m_rwlock);
61 return true;
62}
63}
64
65#endif
A class that represents a running process on the host machine.