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