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 FindPlugin(Process * process,const char * plugin_name)16OperatingSystem *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 OperatingSystem(Process * process)44OperatingSystem::OperatingSystem(Process *process) : m_process(process) {} 45 IsOperatingSystemPluginThread(const lldb::ThreadSP & thread_sp)46bool OperatingSystem::IsOperatingSystemPluginThread( 47 const lldb::ThreadSP &thread_sp) { 48 if (thread_sp) 49 return thread_sp->IsOperatingSystemPluginThread(); 50 return false; 51 } 52