0610a25a85
This is a polymorphic class, copying it is a bad idea. This was not a problem because most classes inheriting from it were deleting their copy operations themselves. However, this enables us to delete those explicit deletions, and ensure noone forgets to add them in the future.
53 lines
1.7 KiB
C++
53 lines
1.7 KiB
C++
//===-- OperatingSystem.cpp -----------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "lldb/Target/OperatingSystem.h"
|
|
#include "lldb/Core/PluginManager.h"
|
|
#include "lldb/Target/Thread.h"
|
|
|
|
using namespace lldb;
|
|
using namespace lldb_private;
|
|
|
|
OperatingSystem *OperatingSystem::FindPlugin(Process *process,
|
|
const char *plugin_name) {
|
|
OperatingSystemCreateInstance create_callback = nullptr;
|
|
if (plugin_name) {
|
|
ConstString const_plugin_name(plugin_name);
|
|
create_callback =
|
|
PluginManager::GetOperatingSystemCreateCallbackForPluginName(
|
|
const_plugin_name);
|
|
if (create_callback) {
|
|
std::unique_ptr<OperatingSystem> instance_up(
|
|
create_callback(process, true));
|
|
if (instance_up)
|
|
return instance_up.release();
|
|
}
|
|
} else {
|
|
for (uint32_t idx = 0;
|
|
(create_callback =
|
|
PluginManager::GetOperatingSystemCreateCallbackAtIndex(idx)) !=
|
|
nullptr;
|
|
++idx) {
|
|
std::unique_ptr<OperatingSystem> instance_up(
|
|
create_callback(process, false));
|
|
if (instance_up)
|
|
return instance_up.release();
|
|
}
|
|
}
|
|
return nullptr;
|
|
}
|
|
|
|
OperatingSystem::OperatingSystem(Process *process) : m_process(process) {}
|
|
|
|
bool OperatingSystem::IsOperatingSystemPluginThread(
|
|
const lldb::ThreadSP &thread_sp) {
|
|
if (thread_sp)
|
|
return thread_sp->IsOperatingSystemPluginThread();
|
|
return false;
|
|
}
|