1 //===-- SBProcessInfo.cpp ---------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #include "lldb/API/SBProcessInfo.h" 11 12 #include "lldb/API/SBFileSpec.h" 13 #include "lldb/Target/Process.h" 14 15 using namespace lldb; 16 using namespace lldb_private; 17 SBProcessInfo()18SBProcessInfo::SBProcessInfo() : m_opaque_ap() {} 19 SBProcessInfo(const SBProcessInfo & rhs)20SBProcessInfo::SBProcessInfo(const SBProcessInfo &rhs) : m_opaque_ap() { 21 if (rhs.IsValid()) { 22 ref() = *rhs.m_opaque_ap; 23 } 24 } 25 ~SBProcessInfo()26SBProcessInfo::~SBProcessInfo() {} 27 operator =(const SBProcessInfo & rhs)28SBProcessInfo &SBProcessInfo::operator=(const SBProcessInfo &rhs) { 29 if (this != &rhs) { 30 if (rhs.IsValid()) 31 ref() = *rhs.m_opaque_ap; 32 else 33 m_opaque_ap.reset(); 34 } 35 return *this; 36 } 37 ref()38ProcessInstanceInfo &SBProcessInfo::ref() { 39 if (m_opaque_ap == nullptr) { 40 m_opaque_ap.reset(new ProcessInstanceInfo()); 41 } 42 return *m_opaque_ap; 43 } 44 SetProcessInfo(const ProcessInstanceInfo & proc_info_ref)45void SBProcessInfo::SetProcessInfo(const ProcessInstanceInfo &proc_info_ref) { 46 ref() = proc_info_ref; 47 } 48 IsValid() const49bool SBProcessInfo::IsValid() const { return m_opaque_ap != nullptr; } 50 GetName()51const char *SBProcessInfo::GetName() { 52 const char *name = nullptr; 53 if (m_opaque_ap) { 54 name = m_opaque_ap->GetName(); 55 } 56 return name; 57 } 58 GetExecutableFile()59SBFileSpec SBProcessInfo::GetExecutableFile() { 60 SBFileSpec file_spec; 61 if (m_opaque_ap) { 62 file_spec.SetFileSpec(m_opaque_ap->GetExecutableFile()); 63 } 64 return file_spec; 65 } 66 GetProcessID()67lldb::pid_t SBProcessInfo::GetProcessID() { 68 lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID; 69 if (m_opaque_ap) { 70 proc_id = m_opaque_ap->GetProcessID(); 71 } 72 return proc_id; 73 } 74 GetUserID()75uint32_t SBProcessInfo::GetUserID() { 76 uint32_t user_id = UINT32_MAX; 77 if (m_opaque_ap) { 78 user_id = m_opaque_ap->GetUserID(); 79 } 80 return user_id; 81 } 82 GetGroupID()83uint32_t SBProcessInfo::GetGroupID() { 84 uint32_t group_id = UINT32_MAX; 85 if (m_opaque_ap) { 86 group_id = m_opaque_ap->GetGroupID(); 87 } 88 return group_id; 89 } 90 UserIDIsValid()91bool SBProcessInfo::UserIDIsValid() { 92 bool is_valid = false; 93 if (m_opaque_ap) { 94 is_valid = m_opaque_ap->UserIDIsValid(); 95 } 96 return is_valid; 97 } 98 GroupIDIsValid()99bool SBProcessInfo::GroupIDIsValid() { 100 bool is_valid = false; 101 if (m_opaque_ap) { 102 is_valid = m_opaque_ap->GroupIDIsValid(); 103 } 104 return is_valid; 105 } 106 GetEffectiveUserID()107uint32_t SBProcessInfo::GetEffectiveUserID() { 108 uint32_t user_id = UINT32_MAX; 109 if (m_opaque_ap) { 110 user_id = m_opaque_ap->GetEffectiveUserID(); 111 } 112 return user_id; 113 } 114 GetEffectiveGroupID()115uint32_t SBProcessInfo::GetEffectiveGroupID() { 116 uint32_t group_id = UINT32_MAX; 117 if (m_opaque_ap) { 118 group_id = m_opaque_ap->GetEffectiveGroupID(); 119 } 120 return group_id; 121 } 122 EffectiveUserIDIsValid()123bool SBProcessInfo::EffectiveUserIDIsValid() { 124 bool is_valid = false; 125 if (m_opaque_ap) { 126 is_valid = m_opaque_ap->EffectiveUserIDIsValid(); 127 } 128 return is_valid; 129 } 130 EffectiveGroupIDIsValid()131bool SBProcessInfo::EffectiveGroupIDIsValid() { 132 bool is_valid = false; 133 if (m_opaque_ap) { 134 is_valid = m_opaque_ap->EffectiveGroupIDIsValid(); 135 } 136 return is_valid; 137 } 138 GetParentProcessID()139lldb::pid_t SBProcessInfo::GetParentProcessID() { 140 lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID; 141 if (m_opaque_ap) { 142 proc_id = m_opaque_ap->GetParentProcessID(); 143 } 144 return proc_id; 145 } 146