1dda28197Spatrick //===-- OperatingSystem.cpp -----------------------------------------------===// 2061da546Spatrick // 3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information. 5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6061da546Spatrick // 7061da546Spatrick //===----------------------------------------------------------------------===// 8061da546Spatrick 9061da546Spatrick #include "lldb/Target/OperatingSystem.h" 10061da546Spatrick #include "lldb/Core/PluginManager.h" 11061da546Spatrick #include "lldb/Target/Thread.h" 12061da546Spatrick 13061da546Spatrick using namespace lldb; 14061da546Spatrick using namespace lldb_private; 15061da546Spatrick FindPlugin(Process * process,const char * plugin_name)16061da546SpatrickOperatingSystem *OperatingSystem::FindPlugin(Process *process, 17061da546Spatrick const char *plugin_name) { 18061da546Spatrick OperatingSystemCreateInstance create_callback = nullptr; 19061da546Spatrick if (plugin_name) { 20061da546Spatrick create_callback = 21061da546Spatrick PluginManager::GetOperatingSystemCreateCallbackForPluginName( 22*f6aab3d8Srobert plugin_name); 23061da546Spatrick if (create_callback) { 24061da546Spatrick std::unique_ptr<OperatingSystem> instance_up( 25061da546Spatrick create_callback(process, true)); 26061da546Spatrick if (instance_up) 27061da546Spatrick return instance_up.release(); 28061da546Spatrick } 29061da546Spatrick } else { 30061da546Spatrick for (uint32_t idx = 0; 31061da546Spatrick (create_callback = 32061da546Spatrick PluginManager::GetOperatingSystemCreateCallbackAtIndex(idx)) != 33061da546Spatrick nullptr; 34061da546Spatrick ++idx) { 35061da546Spatrick std::unique_ptr<OperatingSystem> instance_up( 36061da546Spatrick create_callback(process, false)); 37061da546Spatrick if (instance_up) 38061da546Spatrick return instance_up.release(); 39061da546Spatrick } 40061da546Spatrick } 41061da546Spatrick return nullptr; 42061da546Spatrick } 43061da546Spatrick OperatingSystem(Process * process)44061da546SpatrickOperatingSystem::OperatingSystem(Process *process) : m_process(process) {} 45061da546Spatrick IsOperatingSystemPluginThread(const lldb::ThreadSP & thread_sp)46061da546Spatrickbool OperatingSystem::IsOperatingSystemPluginThread( 47061da546Spatrick const lldb::ThreadSP &thread_sp) { 48061da546Spatrick if (thread_sp) 49061da546Spatrick return thread_sp->IsOperatingSystemPluginThread(); 50061da546Spatrick return false; 51061da546Spatrick } 52