1141a6263SVadim Macagon //===-- SBProcessInfo.cpp ---------------------------------------*- C++ -*-===// 2141a6263SVadim Macagon // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6141a6263SVadim Macagon // 7141a6263SVadim Macagon //===----------------------------------------------------------------------===// 8141a6263SVadim Macagon 9141a6263SVadim Macagon #include "lldb/API/SBProcessInfo.h" 10*bd4bf82aSJonas Devlieghere #include "Utils.h" 11141a6263SVadim Macagon #include "lldb/API/SBFileSpec.h" 12805e7106SZachary Turner #include "lldb/Utility/ProcessInfo.h" 13141a6263SVadim Macagon 14141a6263SVadim Macagon using namespace lldb; 15141a6263SVadim Macagon using namespace lldb_private; 16141a6263SVadim Macagon 17d5b44036SJonas Devlieghere SBProcessInfo::SBProcessInfo() : m_opaque_up() {} 18141a6263SVadim Macagon 19d5b44036SJonas Devlieghere SBProcessInfo::SBProcessInfo(const SBProcessInfo &rhs) : m_opaque_up() { 20*bd4bf82aSJonas Devlieghere m_opaque_up = clone(rhs.m_opaque_up); 21141a6263SVadim Macagon } 22141a6263SVadim Macagon 23141a6263SVadim Macagon SBProcessInfo::~SBProcessInfo() {} 24141a6263SVadim Macagon 25141a6263SVadim Macagon SBProcessInfo &SBProcessInfo::operator=(const SBProcessInfo &rhs) { 26*bd4bf82aSJonas Devlieghere if (this != &rhs) 27*bd4bf82aSJonas Devlieghere m_opaque_up = clone(rhs.m_opaque_up); 28141a6263SVadim Macagon return *this; 29141a6263SVadim Macagon } 30141a6263SVadim Macagon 31141a6263SVadim Macagon ProcessInstanceInfo &SBProcessInfo::ref() { 32d5b44036SJonas Devlieghere if (m_opaque_up == nullptr) { 33d5b44036SJonas Devlieghere m_opaque_up.reset(new ProcessInstanceInfo()); 34141a6263SVadim Macagon } 35d5b44036SJonas Devlieghere return *m_opaque_up; 36141a6263SVadim Macagon } 37141a6263SVadim Macagon 38141a6263SVadim Macagon void SBProcessInfo::SetProcessInfo(const ProcessInstanceInfo &proc_info_ref) { 39141a6263SVadim Macagon ref() = proc_info_ref; 40141a6263SVadim Macagon } 41141a6263SVadim Macagon 42d5b44036SJonas Devlieghere bool SBProcessInfo::IsValid() const { return m_opaque_up != nullptr; } 43141a6263SVadim Macagon 44141a6263SVadim Macagon const char *SBProcessInfo::GetName() { 45141a6263SVadim Macagon const char *name = nullptr; 46d5b44036SJonas Devlieghere if (m_opaque_up) { 47d5b44036SJonas Devlieghere name = m_opaque_up->GetName(); 48141a6263SVadim Macagon } 49141a6263SVadim Macagon return name; 50141a6263SVadim Macagon } 51141a6263SVadim Macagon 52141a6263SVadim Macagon SBFileSpec SBProcessInfo::GetExecutableFile() { 53141a6263SVadim Macagon SBFileSpec file_spec; 54d5b44036SJonas Devlieghere if (m_opaque_up) { 55d5b44036SJonas Devlieghere file_spec.SetFileSpec(m_opaque_up->GetExecutableFile()); 56141a6263SVadim Macagon } 57141a6263SVadim Macagon return file_spec; 58141a6263SVadim Macagon } 59141a6263SVadim Macagon 60141a6263SVadim Macagon lldb::pid_t SBProcessInfo::GetProcessID() { 61141a6263SVadim Macagon lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID; 62d5b44036SJonas Devlieghere if (m_opaque_up) { 63d5b44036SJonas Devlieghere proc_id = m_opaque_up->GetProcessID(); 64141a6263SVadim Macagon } 65141a6263SVadim Macagon return proc_id; 66141a6263SVadim Macagon } 67141a6263SVadim Macagon 68141a6263SVadim Macagon uint32_t SBProcessInfo::GetUserID() { 69141a6263SVadim Macagon uint32_t user_id = UINT32_MAX; 70d5b44036SJonas Devlieghere if (m_opaque_up) { 71d5b44036SJonas Devlieghere user_id = m_opaque_up->GetUserID(); 72141a6263SVadim Macagon } 73141a6263SVadim Macagon return user_id; 74141a6263SVadim Macagon } 75141a6263SVadim Macagon 76141a6263SVadim Macagon uint32_t SBProcessInfo::GetGroupID() { 77141a6263SVadim Macagon uint32_t group_id = UINT32_MAX; 78d5b44036SJonas Devlieghere if (m_opaque_up) { 79d5b44036SJonas Devlieghere group_id = m_opaque_up->GetGroupID(); 80141a6263SVadim Macagon } 81141a6263SVadim Macagon return group_id; 82141a6263SVadim Macagon } 83141a6263SVadim Macagon 84141a6263SVadim Macagon bool SBProcessInfo::UserIDIsValid() { 85141a6263SVadim Macagon bool is_valid = false; 86d5b44036SJonas Devlieghere if (m_opaque_up) { 87d5b44036SJonas Devlieghere is_valid = m_opaque_up->UserIDIsValid(); 88141a6263SVadim Macagon } 89141a6263SVadim Macagon return is_valid; 90141a6263SVadim Macagon } 91141a6263SVadim Macagon 92141a6263SVadim Macagon bool SBProcessInfo::GroupIDIsValid() { 93141a6263SVadim Macagon bool is_valid = false; 94d5b44036SJonas Devlieghere if (m_opaque_up) { 95d5b44036SJonas Devlieghere is_valid = m_opaque_up->GroupIDIsValid(); 96141a6263SVadim Macagon } 97141a6263SVadim Macagon return is_valid; 98141a6263SVadim Macagon } 99141a6263SVadim Macagon 100141a6263SVadim Macagon uint32_t SBProcessInfo::GetEffectiveUserID() { 101141a6263SVadim Macagon uint32_t user_id = UINT32_MAX; 102d5b44036SJonas Devlieghere if (m_opaque_up) { 103d5b44036SJonas Devlieghere user_id = m_opaque_up->GetEffectiveUserID(); 104141a6263SVadim Macagon } 105141a6263SVadim Macagon return user_id; 106141a6263SVadim Macagon } 107141a6263SVadim Macagon 108141a6263SVadim Macagon uint32_t SBProcessInfo::GetEffectiveGroupID() { 109141a6263SVadim Macagon uint32_t group_id = UINT32_MAX; 110d5b44036SJonas Devlieghere if (m_opaque_up) { 111d5b44036SJonas Devlieghere group_id = m_opaque_up->GetEffectiveGroupID(); 112141a6263SVadim Macagon } 113141a6263SVadim Macagon return group_id; 114141a6263SVadim Macagon } 115141a6263SVadim Macagon 116141a6263SVadim Macagon bool SBProcessInfo::EffectiveUserIDIsValid() { 117141a6263SVadim Macagon bool is_valid = false; 118d5b44036SJonas Devlieghere if (m_opaque_up) { 119d5b44036SJonas Devlieghere is_valid = m_opaque_up->EffectiveUserIDIsValid(); 120141a6263SVadim Macagon } 121141a6263SVadim Macagon return is_valid; 122141a6263SVadim Macagon } 123141a6263SVadim Macagon 124141a6263SVadim Macagon bool SBProcessInfo::EffectiveGroupIDIsValid() { 125141a6263SVadim Macagon bool is_valid = false; 126d5b44036SJonas Devlieghere if (m_opaque_up) { 127d5b44036SJonas Devlieghere is_valid = m_opaque_up->EffectiveGroupIDIsValid(); 128141a6263SVadim Macagon } 129141a6263SVadim Macagon return is_valid; 130141a6263SVadim Macagon } 131141a6263SVadim Macagon 132141a6263SVadim Macagon lldb::pid_t SBProcessInfo::GetParentProcessID() { 133141a6263SVadim Macagon lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID; 134d5b44036SJonas Devlieghere if (m_opaque_up) { 135d5b44036SJonas Devlieghere proc_id = m_opaque_up->GetParentProcessID(); 136141a6263SVadim Macagon } 137141a6263SVadim Macagon return proc_id; 138141a6263SVadim Macagon } 139