1141a6263SVadim Macagon //===-- SBProcessInfo.cpp ---------------------------------------*- C++ -*-===// 2141a6263SVadim Macagon // 3*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 5*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6141a6263SVadim Macagon // 7141a6263SVadim Macagon //===----------------------------------------------------------------------===// 8141a6263SVadim Macagon 9141a6263SVadim Macagon #include "lldb/API/SBProcessInfo.h" 10141a6263SVadim Macagon 11141a6263SVadim Macagon #include "lldb/API/SBFileSpec.h" 12141a6263SVadim Macagon #include "lldb/Target/Process.h" 13141a6263SVadim Macagon 14141a6263SVadim Macagon using namespace lldb; 15141a6263SVadim Macagon using namespace lldb_private; 16141a6263SVadim Macagon 17141a6263SVadim Macagon SBProcessInfo::SBProcessInfo() : m_opaque_ap() {} 18141a6263SVadim Macagon 19141a6263SVadim Macagon SBProcessInfo::SBProcessInfo(const SBProcessInfo &rhs) : m_opaque_ap() { 20141a6263SVadim Macagon if (rhs.IsValid()) { 21141a6263SVadim Macagon ref() = *rhs.m_opaque_ap; 22141a6263SVadim Macagon } 23141a6263SVadim Macagon } 24141a6263SVadim Macagon 25141a6263SVadim Macagon SBProcessInfo::~SBProcessInfo() {} 26141a6263SVadim Macagon 27141a6263SVadim Macagon SBProcessInfo &SBProcessInfo::operator=(const SBProcessInfo &rhs) { 28141a6263SVadim Macagon if (this != &rhs) { 29141a6263SVadim Macagon if (rhs.IsValid()) 30141a6263SVadim Macagon ref() = *rhs.m_opaque_ap; 31141a6263SVadim Macagon else 32141a6263SVadim Macagon m_opaque_ap.reset(); 33141a6263SVadim Macagon } 34141a6263SVadim Macagon return *this; 35141a6263SVadim Macagon } 36141a6263SVadim Macagon 37141a6263SVadim Macagon ProcessInstanceInfo &SBProcessInfo::ref() { 383447077aSJonas Devlieghere if (m_opaque_ap == nullptr) { 39141a6263SVadim Macagon m_opaque_ap.reset(new ProcessInstanceInfo()); 40141a6263SVadim Macagon } 41141a6263SVadim Macagon return *m_opaque_ap; 42141a6263SVadim Macagon } 43141a6263SVadim Macagon 44141a6263SVadim Macagon void SBProcessInfo::SetProcessInfo(const ProcessInstanceInfo &proc_info_ref) { 45141a6263SVadim Macagon ref() = proc_info_ref; 46141a6263SVadim Macagon } 47141a6263SVadim Macagon 483447077aSJonas Devlieghere bool SBProcessInfo::IsValid() const { return m_opaque_ap != nullptr; } 49141a6263SVadim Macagon 50141a6263SVadim Macagon const char *SBProcessInfo::GetName() { 51141a6263SVadim Macagon const char *name = nullptr; 52141a6263SVadim Macagon if (m_opaque_ap) { 53141a6263SVadim Macagon name = m_opaque_ap->GetName(); 54141a6263SVadim Macagon } 55141a6263SVadim Macagon return name; 56141a6263SVadim Macagon } 57141a6263SVadim Macagon 58141a6263SVadim Macagon SBFileSpec SBProcessInfo::GetExecutableFile() { 59141a6263SVadim Macagon SBFileSpec file_spec; 60141a6263SVadim Macagon if (m_opaque_ap) { 61141a6263SVadim Macagon file_spec.SetFileSpec(m_opaque_ap->GetExecutableFile()); 62141a6263SVadim Macagon } 63141a6263SVadim Macagon return file_spec; 64141a6263SVadim Macagon } 65141a6263SVadim Macagon 66141a6263SVadim Macagon lldb::pid_t SBProcessInfo::GetProcessID() { 67141a6263SVadim Macagon lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID; 68141a6263SVadim Macagon if (m_opaque_ap) { 69141a6263SVadim Macagon proc_id = m_opaque_ap->GetProcessID(); 70141a6263SVadim Macagon } 71141a6263SVadim Macagon return proc_id; 72141a6263SVadim Macagon } 73141a6263SVadim Macagon 74141a6263SVadim Macagon uint32_t SBProcessInfo::GetUserID() { 75141a6263SVadim Macagon uint32_t user_id = UINT32_MAX; 76141a6263SVadim Macagon if (m_opaque_ap) { 77141a6263SVadim Macagon user_id = m_opaque_ap->GetUserID(); 78141a6263SVadim Macagon } 79141a6263SVadim Macagon return user_id; 80141a6263SVadim Macagon } 81141a6263SVadim Macagon 82141a6263SVadim Macagon uint32_t SBProcessInfo::GetGroupID() { 83141a6263SVadim Macagon uint32_t group_id = UINT32_MAX; 84141a6263SVadim Macagon if (m_opaque_ap) { 85141a6263SVadim Macagon group_id = m_opaque_ap->GetGroupID(); 86141a6263SVadim Macagon } 87141a6263SVadim Macagon return group_id; 88141a6263SVadim Macagon } 89141a6263SVadim Macagon 90141a6263SVadim Macagon bool SBProcessInfo::UserIDIsValid() { 91141a6263SVadim Macagon bool is_valid = false; 92141a6263SVadim Macagon if (m_opaque_ap) { 93141a6263SVadim Macagon is_valid = m_opaque_ap->UserIDIsValid(); 94141a6263SVadim Macagon } 95141a6263SVadim Macagon return is_valid; 96141a6263SVadim Macagon } 97141a6263SVadim Macagon 98141a6263SVadim Macagon bool SBProcessInfo::GroupIDIsValid() { 99141a6263SVadim Macagon bool is_valid = false; 100141a6263SVadim Macagon if (m_opaque_ap) { 101141a6263SVadim Macagon is_valid = m_opaque_ap->GroupIDIsValid(); 102141a6263SVadim Macagon } 103141a6263SVadim Macagon return is_valid; 104141a6263SVadim Macagon } 105141a6263SVadim Macagon 106141a6263SVadim Macagon uint32_t SBProcessInfo::GetEffectiveUserID() { 107141a6263SVadim Macagon uint32_t user_id = UINT32_MAX; 108141a6263SVadim Macagon if (m_opaque_ap) { 109141a6263SVadim Macagon user_id = m_opaque_ap->GetEffectiveUserID(); 110141a6263SVadim Macagon } 111141a6263SVadim Macagon return user_id; 112141a6263SVadim Macagon } 113141a6263SVadim Macagon 114141a6263SVadim Macagon uint32_t SBProcessInfo::GetEffectiveGroupID() { 115141a6263SVadim Macagon uint32_t group_id = UINT32_MAX; 116141a6263SVadim Macagon if (m_opaque_ap) { 117141a6263SVadim Macagon group_id = m_opaque_ap->GetEffectiveGroupID(); 118141a6263SVadim Macagon } 119141a6263SVadim Macagon return group_id; 120141a6263SVadim Macagon } 121141a6263SVadim Macagon 122141a6263SVadim Macagon bool SBProcessInfo::EffectiveUserIDIsValid() { 123141a6263SVadim Macagon bool is_valid = false; 124141a6263SVadim Macagon if (m_opaque_ap) { 125141a6263SVadim Macagon is_valid = m_opaque_ap->EffectiveUserIDIsValid(); 126141a6263SVadim Macagon } 127141a6263SVadim Macagon return is_valid; 128141a6263SVadim Macagon } 129141a6263SVadim Macagon 130141a6263SVadim Macagon bool SBProcessInfo::EffectiveGroupIDIsValid() { 131141a6263SVadim Macagon bool is_valid = false; 132141a6263SVadim Macagon if (m_opaque_ap) { 133141a6263SVadim Macagon is_valid = m_opaque_ap->EffectiveGroupIDIsValid(); 134141a6263SVadim Macagon } 135141a6263SVadim Macagon return is_valid; 136141a6263SVadim Macagon } 137141a6263SVadim Macagon 138141a6263SVadim Macagon lldb::pid_t SBProcessInfo::GetParentProcessID() { 139141a6263SVadim Macagon lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID; 140141a6263SVadim Macagon if (m_opaque_ap) { 141141a6263SVadim Macagon proc_id = m_opaque_ap->GetParentProcessID(); 142141a6263SVadim Macagon } 143141a6263SVadim Macagon return proc_id; 144141a6263SVadim Macagon } 145