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
&&
21
"SystemLifetimeManager destroyed without calling Terminate!"
);
22
}
23
24
llvm::Error
SystemLifetimeManager::Initialize
(
25
std::unique_ptr<SystemInitializer> initializer) {
26
std::lock_guard<std::recursive_mutex> guard(
m_mutex
);
27
if
(!
m_initialized
) {
28
assert(!
m_initializer
&&
"Attempting to call "
29
"SystemLifetimeManager::Initialize() when it is "
30
"already initialized"
);
31
m_initialized
=
true
;
32
m_initializer
= std::move(initializer);
33
34
if
(
auto
e =
m_initializer
->Initialize())
35
return
e;
36
}
37
38
return
llvm::Error::success();
39
}
40
41
void
SystemLifetimeManager::Terminate
() {
42
std::lock_guard<std::recursive_mutex> guard(
m_mutex
);
43
44
if
(
m_initialized
) {
45
m_initializer
->Terminate();
46
47
m_initializer
.reset();
48
m_initialized
=
false
;
49
}
50
}
SystemInitializer.h
SystemLifetimeManager.h
lldb_private::SystemLifetimeManager::m_mutex
std::recursive_mutex m_mutex
Definition
SystemLifetimeManager.h:30
lldb_private::SystemLifetimeManager::Initialize
llvm::Error Initialize(std::unique_ptr< SystemInitializer > initializer)
Definition
SystemLifetimeManager.cpp:24
lldb_private::SystemLifetimeManager::Terminate
void Terminate()
Definition
SystemLifetimeManager.cpp:41
lldb_private::SystemLifetimeManager::m_initialized
bool m_initialized
Definition
SystemLifetimeManager.h:32
lldb_private::SystemLifetimeManager::~SystemLifetimeManager
~SystemLifetimeManager()
Definition
SystemLifetimeManager.cpp:19
lldb_private::SystemLifetimeManager::m_initializer
std::unique_ptr< SystemInitializer > m_initializer
Definition
SystemLifetimeManager.h:31
lldb_private::SystemLifetimeManager::SystemLifetimeManager
SystemLifetimeManager()
Definition
SystemLifetimeManager.cpp:17
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