Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/lldb/source/Target/OperatingSystem.cpp
39587 views
1
//===-- OperatingSystem.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/Target/OperatingSystem.h"
10
#include "lldb/Core/PluginManager.h"
11
#include "lldb/Target/Thread.h"
12
13
using namespace lldb;
14
using namespace lldb_private;
15
16
OperatingSystem *OperatingSystem::FindPlugin(Process *process,
17
const char *plugin_name) {
18
OperatingSystemCreateInstance create_callback = nullptr;
19
if (plugin_name) {
20
create_callback =
21
PluginManager::GetOperatingSystemCreateCallbackForPluginName(
22
plugin_name);
23
if (create_callback) {
24
std::unique_ptr<OperatingSystem> instance_up(
25
create_callback(process, true));
26
if (instance_up)
27
return instance_up.release();
28
}
29
} else {
30
for (uint32_t idx = 0;
31
(create_callback =
32
PluginManager::GetOperatingSystemCreateCallbackAtIndex(idx)) !=
33
nullptr;
34
++idx) {
35
std::unique_ptr<OperatingSystem> instance_up(
36
create_callback(process, false));
37
if (instance_up)
38
return instance_up.release();
39
}
40
}
41
return nullptr;
42
}
43
44
OperatingSystem::OperatingSystem(Process *process) : m_process(process) {}
45
46
bool OperatingSystem::IsOperatingSystemPluginThread(
47
const lldb::ThreadSP &thread_sp) {
48
if (thread_sp)
49
return thread_sp->IsOperatingSystemPluginThread();
50
return false;
51
}
52
53