1 //===-- SystemLifetimeManager.cpp ------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "lldb/Initialization/SystemLifetimeManager.h"
12 #include "lldb/Core/Debugger.h"
13 #include "lldb/Initialization/SystemInitializer.h"
17 using namespace lldb_private;
19 SystemLifetimeManager::SystemLifetimeManager()
20 : m_mutex(), m_initialized(false) {}
22 SystemLifetimeManager::~SystemLifetimeManager() {
23 assert(!m_initialized &&
24 "SystemLifetimeManager destroyed without calling Terminate!");
27 void SystemLifetimeManager::Initialize(
28 std::unique_ptr<SystemInitializer> initializer,
29 LoadPluginCallbackType plugin_callback) {
30 std::lock_guard<std::recursive_mutex> guard(m_mutex);
32 assert(!m_initializer && "Attempting to call "
33 "SystemLifetimeManager::Initialize() when it is "
34 "already initialized");
36 m_initializer = std::move(initializer);
38 m_initializer->Initialize();
39 Debugger::Initialize(plugin_callback);
43 void SystemLifetimeManager::Terminate() {
44 std::lock_guard<std::recursive_mutex> guard(m_mutex);
47 Debugger::Terminate();
48 m_initializer->Terminate();
50 m_initializer.reset();
51 m_initialized = false;