Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/lldb/source/API/SBProcessInfo.cpp
39587 views
1
//===-- SBProcessInfo.cpp -------------------------------------------------===//
2
//
3
// 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
6
//
7
//===----------------------------------------------------------------------===//
8
9
#include "lldb/API/SBProcessInfo.h"
10
#include "Utils.h"
11
#include "lldb/API/SBFileSpec.h"
12
#include "lldb/Utility/Instrumentation.h"
13
#include "lldb/Utility/ProcessInfo.h"
14
15
using namespace lldb;
16
using namespace lldb_private;
17
18
SBProcessInfo::SBProcessInfo() { LLDB_INSTRUMENT_VA(this); }
19
20
SBProcessInfo::SBProcessInfo(const SBProcessInfo &rhs) {
21
LLDB_INSTRUMENT_VA(this, rhs);
22
23
m_opaque_up = clone(rhs.m_opaque_up);
24
}
25
26
SBProcessInfo::~SBProcessInfo() = default;
27
28
SBProcessInfo &SBProcessInfo::operator=(const SBProcessInfo &rhs) {
29
LLDB_INSTRUMENT_VA(this, rhs);
30
31
if (this != &rhs)
32
m_opaque_up = clone(rhs.m_opaque_up);
33
return *this;
34
}
35
36
ProcessInstanceInfo &SBProcessInfo::ref() {
37
if (m_opaque_up == nullptr) {
38
m_opaque_up = std::make_unique<ProcessInstanceInfo>();
39
}
40
return *m_opaque_up;
41
}
42
43
void SBProcessInfo::SetProcessInfo(const ProcessInstanceInfo &proc_info_ref) {
44
ref() = proc_info_ref;
45
}
46
47
bool SBProcessInfo::IsValid() const {
48
LLDB_INSTRUMENT_VA(this);
49
return this->operator bool();
50
}
51
SBProcessInfo::operator bool() const {
52
LLDB_INSTRUMENT_VA(this);
53
54
return m_opaque_up != nullptr;
55
}
56
57
const char *SBProcessInfo::GetName() {
58
LLDB_INSTRUMENT_VA(this);
59
60
if (!m_opaque_up)
61
return nullptr;
62
63
return ConstString(m_opaque_up->GetName()).GetCString();
64
}
65
66
SBFileSpec SBProcessInfo::GetExecutableFile() {
67
LLDB_INSTRUMENT_VA(this);
68
69
SBFileSpec file_spec;
70
if (m_opaque_up) {
71
file_spec.SetFileSpec(m_opaque_up->GetExecutableFile());
72
}
73
return file_spec;
74
}
75
76
lldb::pid_t SBProcessInfo::GetProcessID() {
77
LLDB_INSTRUMENT_VA(this);
78
79
lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID;
80
if (m_opaque_up) {
81
proc_id = m_opaque_up->GetProcessID();
82
}
83
return proc_id;
84
}
85
86
uint32_t SBProcessInfo::GetUserID() {
87
LLDB_INSTRUMENT_VA(this);
88
89
uint32_t user_id = UINT32_MAX;
90
if (m_opaque_up) {
91
user_id = m_opaque_up->GetUserID();
92
}
93
return user_id;
94
}
95
96
uint32_t SBProcessInfo::GetGroupID() {
97
LLDB_INSTRUMENT_VA(this);
98
99
uint32_t group_id = UINT32_MAX;
100
if (m_opaque_up) {
101
group_id = m_opaque_up->GetGroupID();
102
}
103
return group_id;
104
}
105
106
bool SBProcessInfo::UserIDIsValid() {
107
LLDB_INSTRUMENT_VA(this);
108
109
bool is_valid = false;
110
if (m_opaque_up) {
111
is_valid = m_opaque_up->UserIDIsValid();
112
}
113
return is_valid;
114
}
115
116
bool SBProcessInfo::GroupIDIsValid() {
117
LLDB_INSTRUMENT_VA(this);
118
119
bool is_valid = false;
120
if (m_opaque_up) {
121
is_valid = m_opaque_up->GroupIDIsValid();
122
}
123
return is_valid;
124
}
125
126
uint32_t SBProcessInfo::GetEffectiveUserID() {
127
LLDB_INSTRUMENT_VA(this);
128
129
uint32_t user_id = UINT32_MAX;
130
if (m_opaque_up) {
131
user_id = m_opaque_up->GetEffectiveUserID();
132
}
133
return user_id;
134
}
135
136
uint32_t SBProcessInfo::GetEffectiveGroupID() {
137
LLDB_INSTRUMENT_VA(this);
138
139
uint32_t group_id = UINT32_MAX;
140
if (m_opaque_up) {
141
group_id = m_opaque_up->GetEffectiveGroupID();
142
}
143
return group_id;
144
}
145
146
bool SBProcessInfo::EffectiveUserIDIsValid() {
147
LLDB_INSTRUMENT_VA(this);
148
149
bool is_valid = false;
150
if (m_opaque_up) {
151
is_valid = m_opaque_up->EffectiveUserIDIsValid();
152
}
153
return is_valid;
154
}
155
156
bool SBProcessInfo::EffectiveGroupIDIsValid() {
157
LLDB_INSTRUMENT_VA(this);
158
159
bool is_valid = false;
160
if (m_opaque_up) {
161
is_valid = m_opaque_up->EffectiveGroupIDIsValid();
162
}
163
return is_valid;
164
}
165
166
lldb::pid_t SBProcessInfo::GetParentProcessID() {
167
LLDB_INSTRUMENT_VA(this);
168
169
lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID;
170
if (m_opaque_up) {
171
proc_id = m_opaque_up->GetParentProcessID();
172
}
173
return proc_id;
174
}
175
176
const char *SBProcessInfo::GetTriple() {
177
LLDB_INSTRUMENT_VA(this);
178
179
if (!m_opaque_up)
180
return nullptr;
181
182
const auto &arch = m_opaque_up->GetArchitecture();
183
if (!arch.IsValid())
184
return nullptr;
185
186
return ConstString(arch.GetTriple().getTriple().c_str()).GetCString();
187
}
188
189