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