LLDB
mainline
llvm-project
lldb
source
Initialization
SystemLifetimeManager.cpp
Go to the documentation of this file.
1
//===-- SystemLifetimeManager.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
#include "
lldb/Initialization/SystemLifetimeManager.h
"
10
11
#include "
lldb/Initialization/SystemInitializer.h
"
12
13
#include <utility>
14
15
using namespace
lldb_private
;
16
17
SystemLifetimeManager::SystemLifetimeManager
() :
m_mutex
() {}
18
19
SystemLifetimeManager::~SystemLifetimeManager
() {
20
assert(
m_initialized
!= 0 &&
21
"SystemLifetimeManager destroyed without calling Initialize!"
);
22
assert(
m_initialized
==
m_terminated
&&
23
"SystemLifetimeManager destroyed without calling Terminate!"
);
24
}
25
26
llvm::Error
SystemLifetimeManager::Initialize
(
27
std::unique_ptr<SystemInitializer> initializer) {
28
std::lock_guard<std::recursive_mutex> guard(
m_mutex
);
29
if
(!
m_initializer
) {
30
m_initialized
++;
31
m_initializer
= std::move(initializer);
32
33
if
(
auto
e =
m_initializer
->Initialize())
34
return
e;
35
}
36
37
return
llvm::Error::success();
38
}
39
40
void
SystemLifetimeManager::Terminate
() {
41
std::lock_guard<std::recursive_mutex> guard(
m_mutex
);
42
43
if
(
m_initializer
) {
44
m_initializer
->Terminate();
45
m_initializer
.reset();
46
m_terminated
++;
47
}
48
}
SystemInitializer.h
SystemLifetimeManager.h
lldb_private::SystemLifetimeManager::m_mutex
std::recursive_mutex m_mutex
Definition
SystemLifetimeManager.h:29
lldb_private::SystemLifetimeManager::Initialize
llvm::Error Initialize(std::unique_ptr< SystemInitializer > initializer)
Definition
SystemLifetimeManager.cpp:26
lldb_private::SystemLifetimeManager::Terminate
void Terminate()
Definition
SystemLifetimeManager.cpp:40
lldb_private::SystemLifetimeManager::~SystemLifetimeManager
~SystemLifetimeManager()
Definition
SystemLifetimeManager.cpp:19
lldb_private::SystemLifetimeManager::m_initializer
std::unique_ptr< SystemInitializer > m_initializer
Definition
SystemLifetimeManager.h:30
lldb_private::SystemLifetimeManager::SystemLifetimeManager
SystemLifetimeManager()
Definition
SystemLifetimeManager.cpp:17
lldb_private::SystemLifetimeManager::m_initialized
uint8_t m_initialized
Definition
SystemLifetimeManager.h:31
lldb_private::SystemLifetimeManager::m_terminated
uint8_t m_terminated
Definition
SystemLifetimeManager.h:32
lldb_private
A class that represents a running process on the host machine.
Definition
SBAddressRange.h:14
Generated on
for LLDB by
1.14.0