blob: 83f5eb1d680a1e3a6be2d25f05e0fb04dc8e98b0 [file] [log] [blame]
Vadim Macagon141a6262017-08-01 07:34:26 +00001//===-- SBProcessInfo.cpp ---------------------------------------*- C++ -*-===//
2//
Chandler Carruth2946cd72019-01-19 08:50:56 +00003// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
Vadim Macagon141a6262017-08-01 07:34:26 +00006//
7//===----------------------------------------------------------------------===//
8
9#include "lldb/API/SBProcessInfo.h"
10
11#include "lldb/API/SBFileSpec.h"
Zachary Turner805e7102019-03-04 21:51:03 +000012#include "lldb/Utility/ProcessInfo.h"
Vadim Macagon141a6262017-08-01 07:34:26 +000013
14using namespace lldb;
15using namespace lldb_private;
16
Jonas Devlieghered5b44032019-02-13 06:25:41 +000017SBProcessInfo::SBProcessInfo() : m_opaque_up() {}
Vadim Macagon141a6262017-08-01 07:34:26 +000018
Jonas Devlieghered5b44032019-02-13 06:25:41 +000019SBProcessInfo::SBProcessInfo(const SBProcessInfo &rhs) : m_opaque_up() {
Vadim Macagon141a6262017-08-01 07:34:26 +000020 if (rhs.IsValid()) {
Jonas Devlieghered5b44032019-02-13 06:25:41 +000021 ref() = *rhs.m_opaque_up;
Vadim Macagon141a6262017-08-01 07:34:26 +000022 }
23}
24
25SBProcessInfo::~SBProcessInfo() {}
26
27SBProcessInfo &SBProcessInfo::operator=(const SBProcessInfo &rhs) {
28 if (this != &rhs) {
29 if (rhs.IsValid())
Jonas Devlieghered5b44032019-02-13 06:25:41 +000030 ref() = *rhs.m_opaque_up;
Vadim Macagon141a6262017-08-01 07:34:26 +000031 else
Jonas Devlieghered5b44032019-02-13 06:25:41 +000032 m_opaque_up.reset();
Vadim Macagon141a6262017-08-01 07:34:26 +000033 }
34 return *this;
35}
36
37ProcessInstanceInfo &SBProcessInfo::ref() {
Jonas Devlieghered5b44032019-02-13 06:25:41 +000038 if (m_opaque_up == nullptr) {
39 m_opaque_up.reset(new ProcessInstanceInfo());
Vadim Macagon141a6262017-08-01 07:34:26 +000040 }
Jonas Devlieghered5b44032019-02-13 06:25:41 +000041 return *m_opaque_up;
Vadim Macagon141a6262017-08-01 07:34:26 +000042}
43
44void SBProcessInfo::SetProcessInfo(const ProcessInstanceInfo &proc_info_ref) {
45 ref() = proc_info_ref;
46}
47
Jonas Devlieghered5b44032019-02-13 06:25:41 +000048bool SBProcessInfo::IsValid() const { return m_opaque_up != nullptr; }
Vadim Macagon141a6262017-08-01 07:34:26 +000049
50const char *SBProcessInfo::GetName() {
51 const char *name = nullptr;
Jonas Devlieghered5b44032019-02-13 06:25:41 +000052 if (m_opaque_up) {
53 name = m_opaque_up->GetName();
Vadim Macagon141a6262017-08-01 07:34:26 +000054 }
55 return name;
56}
57
58SBFileSpec SBProcessInfo::GetExecutableFile() {
59 SBFileSpec file_spec;
Jonas Devlieghered5b44032019-02-13 06:25:41 +000060 if (m_opaque_up) {
61 file_spec.SetFileSpec(m_opaque_up->GetExecutableFile());
Vadim Macagon141a6262017-08-01 07:34:26 +000062 }
63 return file_spec;
64}
65
66lldb::pid_t SBProcessInfo::GetProcessID() {
67 lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID;
Jonas Devlieghered5b44032019-02-13 06:25:41 +000068 if (m_opaque_up) {
69 proc_id = m_opaque_up->GetProcessID();
Vadim Macagon141a6262017-08-01 07:34:26 +000070 }
71 return proc_id;
72}
73
74uint32_t SBProcessInfo::GetUserID() {
75 uint32_t user_id = UINT32_MAX;
Jonas Devlieghered5b44032019-02-13 06:25:41 +000076 if (m_opaque_up) {
77 user_id = m_opaque_up->GetUserID();
Vadim Macagon141a6262017-08-01 07:34:26 +000078 }
79 return user_id;
80}
81
82uint32_t SBProcessInfo::GetGroupID() {
83 uint32_t group_id = UINT32_MAX;
Jonas Devlieghered5b44032019-02-13 06:25:41 +000084 if (m_opaque_up) {
85 group_id = m_opaque_up->GetGroupID();
Vadim Macagon141a6262017-08-01 07:34:26 +000086 }
87 return group_id;
88}
89
90bool SBProcessInfo::UserIDIsValid() {
91 bool is_valid = false;
Jonas Devlieghered5b44032019-02-13 06:25:41 +000092 if (m_opaque_up) {
93 is_valid = m_opaque_up->UserIDIsValid();
Vadim Macagon141a6262017-08-01 07:34:26 +000094 }
95 return is_valid;
96}
97
98bool SBProcessInfo::GroupIDIsValid() {
99 bool is_valid = false;
Jonas Devlieghered5b44032019-02-13 06:25:41 +0000100 if (m_opaque_up) {
101 is_valid = m_opaque_up->GroupIDIsValid();
Vadim Macagon141a6262017-08-01 07:34:26 +0000102 }
103 return is_valid;
104}
105
106uint32_t SBProcessInfo::GetEffectiveUserID() {
107 uint32_t user_id = UINT32_MAX;
Jonas Devlieghered5b44032019-02-13 06:25:41 +0000108 if (m_opaque_up) {
109 user_id = m_opaque_up->GetEffectiveUserID();
Vadim Macagon141a6262017-08-01 07:34:26 +0000110 }
111 return user_id;
112}
113
114uint32_t SBProcessInfo::GetEffectiveGroupID() {
115 uint32_t group_id = UINT32_MAX;
Jonas Devlieghered5b44032019-02-13 06:25:41 +0000116 if (m_opaque_up) {
117 group_id = m_opaque_up->GetEffectiveGroupID();
Vadim Macagon141a6262017-08-01 07:34:26 +0000118 }
119 return group_id;
120}
121
122bool SBProcessInfo::EffectiveUserIDIsValid() {
123 bool is_valid = false;
Jonas Devlieghered5b44032019-02-13 06:25:41 +0000124 if (m_opaque_up) {
125 is_valid = m_opaque_up->EffectiveUserIDIsValid();
Vadim Macagon141a6262017-08-01 07:34:26 +0000126 }
127 return is_valid;
128}
129
130bool SBProcessInfo::EffectiveGroupIDIsValid() {
131 bool is_valid = false;
Jonas Devlieghered5b44032019-02-13 06:25:41 +0000132 if (m_opaque_up) {
133 is_valid = m_opaque_up->EffectiveGroupIDIsValid();
Vadim Macagon141a6262017-08-01 07:34:26 +0000134 }
135 return is_valid;
136}
137
138lldb::pid_t SBProcessInfo::GetParentProcessID() {
139 lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID;
Jonas Devlieghered5b44032019-02-13 06:25:41 +0000140 if (m_opaque_up) {
141 proc_id = m_opaque_up->GetParentProcessID();
Vadim Macagon141a6262017-08-01 07:34:26 +0000142 }
143 return proc_id;
144}