Path: blob/main/contrib/llvm-project/lldb/source/API/SBProcessInfo.cpp
39587 views
//===-- SBProcessInfo.cpp -------------------------------------------------===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#include "lldb/API/SBProcessInfo.h"9#include "Utils.h"10#include "lldb/API/SBFileSpec.h"11#include "lldb/Utility/Instrumentation.h"12#include "lldb/Utility/ProcessInfo.h"1314using namespace lldb;15using namespace lldb_private;1617SBProcessInfo::SBProcessInfo() { LLDB_INSTRUMENT_VA(this); }1819SBProcessInfo::SBProcessInfo(const SBProcessInfo &rhs) {20LLDB_INSTRUMENT_VA(this, rhs);2122m_opaque_up = clone(rhs.m_opaque_up);23}2425SBProcessInfo::~SBProcessInfo() = default;2627SBProcessInfo &SBProcessInfo::operator=(const SBProcessInfo &rhs) {28LLDB_INSTRUMENT_VA(this, rhs);2930if (this != &rhs)31m_opaque_up = clone(rhs.m_opaque_up);32return *this;33}3435ProcessInstanceInfo &SBProcessInfo::ref() {36if (m_opaque_up == nullptr) {37m_opaque_up = std::make_unique<ProcessInstanceInfo>();38}39return *m_opaque_up;40}4142void SBProcessInfo::SetProcessInfo(const ProcessInstanceInfo &proc_info_ref) {43ref() = proc_info_ref;44}4546bool SBProcessInfo::IsValid() const {47LLDB_INSTRUMENT_VA(this);48return this->operator bool();49}50SBProcessInfo::operator bool() const {51LLDB_INSTRUMENT_VA(this);5253return m_opaque_up != nullptr;54}5556const char *SBProcessInfo::GetName() {57LLDB_INSTRUMENT_VA(this);5859if (!m_opaque_up)60return nullptr;6162return ConstString(m_opaque_up->GetName()).GetCString();63}6465SBFileSpec SBProcessInfo::GetExecutableFile() {66LLDB_INSTRUMENT_VA(this);6768SBFileSpec file_spec;69if (m_opaque_up) {70file_spec.SetFileSpec(m_opaque_up->GetExecutableFile());71}72return file_spec;73}7475lldb::pid_t SBProcessInfo::GetProcessID() {76LLDB_INSTRUMENT_VA(this);7778lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID;79if (m_opaque_up) {80proc_id = m_opaque_up->GetProcessID();81}82return proc_id;83}8485uint32_t SBProcessInfo::GetUserID() {86LLDB_INSTRUMENT_VA(this);8788uint32_t user_id = UINT32_MAX;89if (m_opaque_up) {90user_id = m_opaque_up->GetUserID();91}92return user_id;93}9495uint32_t SBProcessInfo::GetGroupID() {96LLDB_INSTRUMENT_VA(this);9798uint32_t group_id = UINT32_MAX;99if (m_opaque_up) {100group_id = m_opaque_up->GetGroupID();101}102return group_id;103}104105bool SBProcessInfo::UserIDIsValid() {106LLDB_INSTRUMENT_VA(this);107108bool is_valid = false;109if (m_opaque_up) {110is_valid = m_opaque_up->UserIDIsValid();111}112return is_valid;113}114115bool SBProcessInfo::GroupIDIsValid() {116LLDB_INSTRUMENT_VA(this);117118bool is_valid = false;119if (m_opaque_up) {120is_valid = m_opaque_up->GroupIDIsValid();121}122return is_valid;123}124125uint32_t SBProcessInfo::GetEffectiveUserID() {126LLDB_INSTRUMENT_VA(this);127128uint32_t user_id = UINT32_MAX;129if (m_opaque_up) {130user_id = m_opaque_up->GetEffectiveUserID();131}132return user_id;133}134135uint32_t SBProcessInfo::GetEffectiveGroupID() {136LLDB_INSTRUMENT_VA(this);137138uint32_t group_id = UINT32_MAX;139if (m_opaque_up) {140group_id = m_opaque_up->GetEffectiveGroupID();141}142return group_id;143}144145bool SBProcessInfo::EffectiveUserIDIsValid() {146LLDB_INSTRUMENT_VA(this);147148bool is_valid = false;149if (m_opaque_up) {150is_valid = m_opaque_up->EffectiveUserIDIsValid();151}152return is_valid;153}154155bool SBProcessInfo::EffectiveGroupIDIsValid() {156LLDB_INSTRUMENT_VA(this);157158bool is_valid = false;159if (m_opaque_up) {160is_valid = m_opaque_up->EffectiveGroupIDIsValid();161}162return is_valid;163}164165lldb::pid_t SBProcessInfo::GetParentProcessID() {166LLDB_INSTRUMENT_VA(this);167168lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID;169if (m_opaque_up) {170proc_id = m_opaque_up->GetParentProcessID();171}172return proc_id;173}174175const char *SBProcessInfo::GetTriple() {176LLDB_INSTRUMENT_VA(this);177178if (!m_opaque_up)179return nullptr;180181const auto &arch = m_opaque_up->GetArchitecture();182if (!arch.IsValid())183return nullptr;184185return ConstString(arch.GetTriple().getTriple().c_str()).GetCString();186}187188189