Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / lldb / source / Target / OperatingSystem.cpp
blob75762c05151d14aaa7312cdb927b046772c389e9
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 //===----------------------------------------------------------------------===//
9 #include "lldb/Target/OperatingSystem.h"
10 #include "lldb/Core/PluginManager.h"
11 #include "lldb/Target/Thread.h"
13 using namespace lldb;
14 using namespace lldb_private;
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();
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();
41 return nullptr;
44 OperatingSystem::OperatingSystem(Process *process) : m_process(process) {}
46 bool OperatingSystem::IsOperatingSystemPluginThread(
47 const lldb::ThreadSP &thread_sp) {
48 if (thread_sp)
49 return thread_sp->IsOperatingSystemPluginThread();
50 return false;