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*baf5664fSJonas Devlieghere #include "SBReproducerPrivate.h" 11bd4bf82aSJonas Devlieghere #include "Utils.h" 12141a6263SVadim Macagon #include "lldb/API/SBFileSpec.h" 13805e7106SZachary Turner #include "lldb/Utility/ProcessInfo.h" 14141a6263SVadim Macagon 15141a6263SVadim Macagon using namespace lldb; 16141a6263SVadim Macagon using namespace lldb_private; 17141a6263SVadim Macagon 18*baf5664fSJonas Devlieghere SBProcessInfo::SBProcessInfo() : m_opaque_up() { 19*baf5664fSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR_NO_ARGS(SBProcessInfo); 20*baf5664fSJonas Devlieghere } 21141a6263SVadim Macagon 22d5b44036SJonas Devlieghere SBProcessInfo::SBProcessInfo(const SBProcessInfo &rhs) : m_opaque_up() { 23*baf5664fSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR(SBProcessInfo, (const lldb::SBProcessInfo &), rhs); 24*baf5664fSJonas Devlieghere 25bd4bf82aSJonas Devlieghere m_opaque_up = clone(rhs.m_opaque_up); 26141a6263SVadim Macagon } 27141a6263SVadim Macagon 28141a6263SVadim Macagon SBProcessInfo::~SBProcessInfo() {} 29141a6263SVadim Macagon 30141a6263SVadim Macagon SBProcessInfo &SBProcessInfo::operator=(const SBProcessInfo &rhs) { 31*baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBProcessInfo &, 32*baf5664fSJonas Devlieghere SBProcessInfo, operator=,(const lldb::SBProcessInfo &), 33*baf5664fSJonas Devlieghere rhs); 34*baf5664fSJonas Devlieghere 35bd4bf82aSJonas Devlieghere if (this != &rhs) 36bd4bf82aSJonas Devlieghere m_opaque_up = clone(rhs.m_opaque_up); 37141a6263SVadim Macagon return *this; 38141a6263SVadim Macagon } 39141a6263SVadim Macagon 40141a6263SVadim Macagon ProcessInstanceInfo &SBProcessInfo::ref() { 41d5b44036SJonas Devlieghere if (m_opaque_up == nullptr) { 42d5b44036SJonas Devlieghere m_opaque_up.reset(new ProcessInstanceInfo()); 43141a6263SVadim Macagon } 44d5b44036SJonas Devlieghere return *m_opaque_up; 45141a6263SVadim Macagon } 46141a6263SVadim Macagon 47141a6263SVadim Macagon void SBProcessInfo::SetProcessInfo(const ProcessInstanceInfo &proc_info_ref) { 48141a6263SVadim Macagon ref() = proc_info_ref; 49141a6263SVadim Macagon } 50141a6263SVadim Macagon 51*baf5664fSJonas Devlieghere bool SBProcessInfo::IsValid() const { 52*baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBProcessInfo, IsValid); 53*baf5664fSJonas Devlieghere 54*baf5664fSJonas Devlieghere return m_opaque_up != nullptr; 55*baf5664fSJonas Devlieghere } 56141a6263SVadim Macagon 57141a6263SVadim Macagon const char *SBProcessInfo::GetName() { 58*baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBProcessInfo, GetName); 59*baf5664fSJonas Devlieghere 60141a6263SVadim Macagon const char *name = nullptr; 61d5b44036SJonas Devlieghere if (m_opaque_up) { 62d5b44036SJonas Devlieghere name = m_opaque_up->GetName(); 63141a6263SVadim Macagon } 64141a6263SVadim Macagon return name; 65141a6263SVadim Macagon } 66141a6263SVadim Macagon 67141a6263SVadim Macagon SBFileSpec SBProcessInfo::GetExecutableFile() { 68*baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(lldb::SBFileSpec, SBProcessInfo, 69*baf5664fSJonas Devlieghere GetExecutableFile); 70*baf5664fSJonas Devlieghere 71141a6263SVadim Macagon SBFileSpec file_spec; 72d5b44036SJonas Devlieghere if (m_opaque_up) { 73d5b44036SJonas Devlieghere file_spec.SetFileSpec(m_opaque_up->GetExecutableFile()); 74141a6263SVadim Macagon } 75*baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(file_spec); 76141a6263SVadim Macagon } 77141a6263SVadim Macagon 78141a6263SVadim Macagon lldb::pid_t SBProcessInfo::GetProcessID() { 79*baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(lldb::pid_t, SBProcessInfo, GetProcessID); 80*baf5664fSJonas Devlieghere 81141a6263SVadim Macagon lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID; 82d5b44036SJonas Devlieghere if (m_opaque_up) { 83d5b44036SJonas Devlieghere proc_id = m_opaque_up->GetProcessID(); 84141a6263SVadim Macagon } 85141a6263SVadim Macagon return proc_id; 86141a6263SVadim Macagon } 87141a6263SVadim Macagon 88141a6263SVadim Macagon uint32_t SBProcessInfo::GetUserID() { 89*baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBProcessInfo, GetUserID); 90*baf5664fSJonas Devlieghere 91141a6263SVadim Macagon uint32_t user_id = UINT32_MAX; 92d5b44036SJonas Devlieghere if (m_opaque_up) { 93d5b44036SJonas Devlieghere user_id = m_opaque_up->GetUserID(); 94141a6263SVadim Macagon } 95141a6263SVadim Macagon return user_id; 96141a6263SVadim Macagon } 97141a6263SVadim Macagon 98141a6263SVadim Macagon uint32_t SBProcessInfo::GetGroupID() { 99*baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBProcessInfo, GetGroupID); 100*baf5664fSJonas Devlieghere 101141a6263SVadim Macagon uint32_t group_id = UINT32_MAX; 102d5b44036SJonas Devlieghere if (m_opaque_up) { 103d5b44036SJonas Devlieghere group_id = m_opaque_up->GetGroupID(); 104141a6263SVadim Macagon } 105141a6263SVadim Macagon return group_id; 106141a6263SVadim Macagon } 107141a6263SVadim Macagon 108141a6263SVadim Macagon bool SBProcessInfo::UserIDIsValid() { 109*baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(bool, SBProcessInfo, UserIDIsValid); 110*baf5664fSJonas Devlieghere 111141a6263SVadim Macagon bool is_valid = false; 112d5b44036SJonas Devlieghere if (m_opaque_up) { 113d5b44036SJonas Devlieghere is_valid = m_opaque_up->UserIDIsValid(); 114141a6263SVadim Macagon } 115141a6263SVadim Macagon return is_valid; 116141a6263SVadim Macagon } 117141a6263SVadim Macagon 118141a6263SVadim Macagon bool SBProcessInfo::GroupIDIsValid() { 119*baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(bool, SBProcessInfo, GroupIDIsValid); 120*baf5664fSJonas Devlieghere 121141a6263SVadim Macagon bool is_valid = false; 122d5b44036SJonas Devlieghere if (m_opaque_up) { 123d5b44036SJonas Devlieghere is_valid = m_opaque_up->GroupIDIsValid(); 124141a6263SVadim Macagon } 125141a6263SVadim Macagon return is_valid; 126141a6263SVadim Macagon } 127141a6263SVadim Macagon 128141a6263SVadim Macagon uint32_t SBProcessInfo::GetEffectiveUserID() { 129*baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBProcessInfo, GetEffectiveUserID); 130*baf5664fSJonas Devlieghere 131141a6263SVadim Macagon uint32_t user_id = UINT32_MAX; 132d5b44036SJonas Devlieghere if (m_opaque_up) { 133d5b44036SJonas Devlieghere user_id = m_opaque_up->GetEffectiveUserID(); 134141a6263SVadim Macagon } 135141a6263SVadim Macagon return user_id; 136141a6263SVadim Macagon } 137141a6263SVadim Macagon 138141a6263SVadim Macagon uint32_t SBProcessInfo::GetEffectiveGroupID() { 139*baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBProcessInfo, GetEffectiveGroupID); 140*baf5664fSJonas Devlieghere 141141a6263SVadim Macagon uint32_t group_id = UINT32_MAX; 142d5b44036SJonas Devlieghere if (m_opaque_up) { 143d5b44036SJonas Devlieghere group_id = m_opaque_up->GetEffectiveGroupID(); 144141a6263SVadim Macagon } 145141a6263SVadim Macagon return group_id; 146141a6263SVadim Macagon } 147141a6263SVadim Macagon 148141a6263SVadim Macagon bool SBProcessInfo::EffectiveUserIDIsValid() { 149*baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(bool, SBProcessInfo, EffectiveUserIDIsValid); 150*baf5664fSJonas Devlieghere 151141a6263SVadim Macagon bool is_valid = false; 152d5b44036SJonas Devlieghere if (m_opaque_up) { 153d5b44036SJonas Devlieghere is_valid = m_opaque_up->EffectiveUserIDIsValid(); 154141a6263SVadim Macagon } 155141a6263SVadim Macagon return is_valid; 156141a6263SVadim Macagon } 157141a6263SVadim Macagon 158141a6263SVadim Macagon bool SBProcessInfo::EffectiveGroupIDIsValid() { 159*baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(bool, SBProcessInfo, EffectiveGroupIDIsValid); 160*baf5664fSJonas Devlieghere 161141a6263SVadim Macagon bool is_valid = false; 162d5b44036SJonas Devlieghere if (m_opaque_up) { 163d5b44036SJonas Devlieghere is_valid = m_opaque_up->EffectiveGroupIDIsValid(); 164141a6263SVadim Macagon } 165141a6263SVadim Macagon return is_valid; 166141a6263SVadim Macagon } 167141a6263SVadim Macagon 168141a6263SVadim Macagon lldb::pid_t SBProcessInfo::GetParentProcessID() { 169*baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(lldb::pid_t, SBProcessInfo, GetParentProcessID); 170*baf5664fSJonas Devlieghere 171141a6263SVadim Macagon lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID; 172d5b44036SJonas Devlieghere if (m_opaque_up) { 173d5b44036SJonas Devlieghere proc_id = m_opaque_up->GetParentProcessID(); 174141a6263SVadim Macagon } 175141a6263SVadim Macagon return proc_id; 176141a6263SVadim Macagon } 177