1*97a14e60SZachary Turner //===-- HostInfoBase.cpp ----------------------------------------*- C++ -*-===// 2*97a14e60SZachary Turner // 3*97a14e60SZachary Turner // The LLVM Compiler Infrastructure 4*97a14e60SZachary Turner // 5*97a14e60SZachary Turner // This file is distributed under the University of Illinois Open Source 6*97a14e60SZachary Turner // License. See LICENSE.TXT for details. 7*97a14e60SZachary Turner // 8*97a14e60SZachary Turner //===----------------------------------------------------------------------===// 9*97a14e60SZachary Turner 10*97a14e60SZachary Turner #include "lldb/Host/Config.h" 11*97a14e60SZachary Turner 12*97a14e60SZachary Turner #include "lldb/Core/ArchSpec.h" 13*97a14e60SZachary Turner #include "lldb/Host/HostInfoBase.h" 14*97a14e60SZachary Turner #include "lldb/Host/Host.h" 15*97a14e60SZachary Turner 16*97a14e60SZachary Turner #include <thread> 17*97a14e60SZachary Turner 18*97a14e60SZachary Turner using namespace lldb; 19*97a14e60SZachary Turner using namespace lldb_private; 20*97a14e60SZachary Turner 21*97a14e60SZachary Turner uint32_t HostInfoBase::m_number_cpus = 0; 22*97a14e60SZachary Turner std::string HostInfoBase::m_vendor_string; 23*97a14e60SZachary Turner std::string HostInfoBase::m_os_string; 24*97a14e60SZachary Turner std::string HostInfoBase::m_host_triple; 25*97a14e60SZachary Turner 26*97a14e60SZachary Turner uint32_t 27*97a14e60SZachary Turner HostInfoBase::GetNumberCPUS() 28*97a14e60SZachary Turner { 29*97a14e60SZachary Turner static bool is_initialized = false; 30*97a14e60SZachary Turner if (!is_initialized) 31*97a14e60SZachary Turner { 32*97a14e60SZachary Turner m_number_cpus = std::thread::hardware_concurrency(); 33*97a14e60SZachary Turner is_initialized = true; 34*97a14e60SZachary Turner } 35*97a14e60SZachary Turner 36*97a14e60SZachary Turner return m_number_cpus; 37*97a14e60SZachary Turner } 38*97a14e60SZachary Turner 39*97a14e60SZachary Turner llvm::StringRef 40*97a14e60SZachary Turner HostInfoBase::GetVendorString() 41*97a14e60SZachary Turner { 42*97a14e60SZachary Turner static bool is_initialized = false; 43*97a14e60SZachary Turner if (!is_initialized) 44*97a14e60SZachary Turner { 45*97a14e60SZachary Turner const ArchSpec &host_arch = Host::GetArchitecture(); 46*97a14e60SZachary Turner const llvm::StringRef &str_ref = host_arch.GetTriple().getVendorName(); 47*97a14e60SZachary Turner m_vendor_string.assign(str_ref.begin(), str_ref.end()); 48*97a14e60SZachary Turner is_initialized = true; 49*97a14e60SZachary Turner } 50*97a14e60SZachary Turner return m_vendor_string; 51*97a14e60SZachary Turner } 52*97a14e60SZachary Turner 53*97a14e60SZachary Turner llvm::StringRef 54*97a14e60SZachary Turner HostInfoBase::GetOSString() 55*97a14e60SZachary Turner { 56*97a14e60SZachary Turner static bool is_initialized = false; 57*97a14e60SZachary Turner if (!is_initialized) 58*97a14e60SZachary Turner { 59*97a14e60SZachary Turner const ArchSpec &host_arch = Host::GetArchitecture(); 60*97a14e60SZachary Turner const llvm::StringRef &str_ref = host_arch.GetTriple().getOSName(); 61*97a14e60SZachary Turner m_os_string.assign(str_ref.begin(), str_ref.end()); 62*97a14e60SZachary Turner is_initialized = true; 63*97a14e60SZachary Turner } 64*97a14e60SZachary Turner return m_os_string; 65*97a14e60SZachary Turner } 66*97a14e60SZachary Turner 67*97a14e60SZachary Turner llvm::StringRef 68*97a14e60SZachary Turner HostInfoBase::GetTargetTriple() 69*97a14e60SZachary Turner { 70*97a14e60SZachary Turner static bool is_initialized = false; 71*97a14e60SZachary Turner if (!is_initialized) 72*97a14e60SZachary Turner { 73*97a14e60SZachary Turner const ArchSpec &host_arch = Host::GetArchitecture(); 74*97a14e60SZachary Turner m_host_triple = host_arch.GetTriple().getTriple(); 75*97a14e60SZachary Turner is_initialized = true; 76*97a14e60SZachary Turner } 77*97a14e60SZachary Turner return m_host_triple; 78*97a14e60SZachary Turner } 79