blob: fbf9caedbeac158971bb272cc0fb7c1c322aef59 [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"
Jonas Devliegherebaf56642019-03-06 00:06:00 +000010#include "SBReproducerPrivate.h"
Jonas Devliegherebd4bf822019-03-06 00:05:55 +000011#include "Utils.h"
Vadim Macagon141a6262017-08-01 07:34:26 +000012#include "lldb/API/SBFileSpec.h"
Zachary Turner805e7102019-03-04 21:51:03 +000013#include "lldb/Utility/ProcessInfo.h"
Vadim Macagon141a6262017-08-01 07:34:26 +000014
15using namespace lldb;
16using namespace lldb_private;
17
Jonas Devliegherebaf56642019-03-06 00:06:00 +000018SBProcessInfo::SBProcessInfo() : m_opaque_up() {
19 LLDB_RECORD_CONSTRUCTOR_NO_ARGS(SBProcessInfo);
20}
Vadim Macagon141a6262017-08-01 07:34:26 +000021
Jonas Devlieghered5b44032019-02-13 06:25:41 +000022SBProcessInfo::SBProcessInfo(const SBProcessInfo &rhs) : m_opaque_up() {
Jonas Devliegherebaf56642019-03-06 00:06:00 +000023 LLDB_RECORD_CONSTRUCTOR(SBProcessInfo, (const lldb::SBProcessInfo &), rhs);
24
Jonas Devliegherebd4bf822019-03-06 00:05:55 +000025 m_opaque_up = clone(rhs.m_opaque_up);
Vadim Macagon141a6262017-08-01 07:34:26 +000026}
27
28SBProcessInfo::~SBProcessInfo() {}
29
30SBProcessInfo &SBProcessInfo::operator=(const SBProcessInfo &rhs) {
Jonas Devliegherebaf56642019-03-06 00:06:00 +000031 LLDB_RECORD_METHOD(lldb::SBProcessInfo &,
32 SBProcessInfo, operator=,(const lldb::SBProcessInfo &),
33 rhs);
34
Jonas Devliegherebd4bf822019-03-06 00:05:55 +000035 if (this != &rhs)
36 m_opaque_up = clone(rhs.m_opaque_up);
Vadim Macagon141a6262017-08-01 07:34:26 +000037 return *this;
38}
39
40ProcessInstanceInfo &SBProcessInfo::ref() {
Jonas Devlieghered5b44032019-02-13 06:25:41 +000041 if (m_opaque_up == nullptr) {
42 m_opaque_up.reset(new ProcessInstanceInfo());
Vadim Macagon141a6262017-08-01 07:34:26 +000043 }
Jonas Devlieghered5b44032019-02-13 06:25:41 +000044 return *m_opaque_up;
Vadim Macagon141a6262017-08-01 07:34:26 +000045}
46
47void SBProcessInfo::SetProcessInfo(const ProcessInstanceInfo &proc_info_ref) {
48 ref() = proc_info_ref;
49}
50
Jonas Devliegherebaf56642019-03-06 00:06:00 +000051bool SBProcessInfo::IsValid() const {
52 LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBProcessInfo, IsValid);
53
54 return m_opaque_up != nullptr;
55}
Vadim Macagon141a6262017-08-01 07:34:26 +000056
57const char *SBProcessInfo::GetName() {
Jonas Devliegherebaf56642019-03-06 00:06:00 +000058 LLDB_RECORD_METHOD_NO_ARGS(const char *, SBProcessInfo, GetName);
59
Vadim Macagon141a6262017-08-01 07:34:26 +000060 const char *name = nullptr;
Jonas Devlieghered5b44032019-02-13 06:25:41 +000061 if (m_opaque_up) {
62 name = m_opaque_up->GetName();
Vadim Macagon141a6262017-08-01 07:34:26 +000063 }
64 return name;
65}
66
67SBFileSpec SBProcessInfo::GetExecutableFile() {
Jonas Devliegherebaf56642019-03-06 00:06:00 +000068 LLDB_RECORD_METHOD_NO_ARGS(lldb::SBFileSpec, SBProcessInfo,
69 GetExecutableFile);
70
Vadim Macagon141a6262017-08-01 07:34:26 +000071 SBFileSpec file_spec;
Jonas Devlieghered5b44032019-02-13 06:25:41 +000072 if (m_opaque_up) {
73 file_spec.SetFileSpec(m_opaque_up->GetExecutableFile());
Vadim Macagon141a6262017-08-01 07:34:26 +000074 }
Jonas Devliegherebaf56642019-03-06 00:06:00 +000075 return LLDB_RECORD_RESULT(file_spec);
Vadim Macagon141a6262017-08-01 07:34:26 +000076}
77
78lldb::pid_t SBProcessInfo::GetProcessID() {
Jonas Devliegherebaf56642019-03-06 00:06:00 +000079 LLDB_RECORD_METHOD_NO_ARGS(lldb::pid_t, SBProcessInfo, GetProcessID);
80
Vadim Macagon141a6262017-08-01 07:34:26 +000081 lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID;
Jonas Devlieghered5b44032019-02-13 06:25:41 +000082 if (m_opaque_up) {
83 proc_id = m_opaque_up->GetProcessID();
Vadim Macagon141a6262017-08-01 07:34:26 +000084 }
85 return proc_id;
86}
87
88uint32_t SBProcessInfo::GetUserID() {
Jonas Devliegherebaf56642019-03-06 00:06:00 +000089 LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBProcessInfo, GetUserID);
90
Vadim Macagon141a6262017-08-01 07:34:26 +000091 uint32_t user_id = UINT32_MAX;
Jonas Devlieghered5b44032019-02-13 06:25:41 +000092 if (m_opaque_up) {
93 user_id = m_opaque_up->GetUserID();
Vadim Macagon141a6262017-08-01 07:34:26 +000094 }
95 return user_id;
96}
97
98uint32_t SBProcessInfo::GetGroupID() {
Jonas Devliegherebaf56642019-03-06 00:06:00 +000099 LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBProcessInfo, GetGroupID);
100
Vadim Macagon141a6262017-08-01 07:34:26 +0000101 uint32_t group_id = UINT32_MAX;
Jonas Devlieghered5b44032019-02-13 06:25:41 +0000102 if (m_opaque_up) {
103 group_id = m_opaque_up->GetGroupID();
Vadim Macagon141a6262017-08-01 07:34:26 +0000104 }
105 return group_id;
106}
107
108bool SBProcessInfo::UserIDIsValid() {
Jonas Devliegherebaf56642019-03-06 00:06:00 +0000109 LLDB_RECORD_METHOD_NO_ARGS(bool, SBProcessInfo, UserIDIsValid);
110
Vadim Macagon141a6262017-08-01 07:34:26 +0000111 bool is_valid = false;
Jonas Devlieghered5b44032019-02-13 06:25:41 +0000112 if (m_opaque_up) {
113 is_valid = m_opaque_up->UserIDIsValid();
Vadim Macagon141a6262017-08-01 07:34:26 +0000114 }
115 return is_valid;
116}
117
118bool SBProcessInfo::GroupIDIsValid() {
Jonas Devliegherebaf56642019-03-06 00:06:00 +0000119 LLDB_RECORD_METHOD_NO_ARGS(bool, SBProcessInfo, GroupIDIsValid);
120
Vadim Macagon141a6262017-08-01 07:34:26 +0000121 bool is_valid = false;
Jonas Devlieghered5b44032019-02-13 06:25:41 +0000122 if (m_opaque_up) {
123 is_valid = m_opaque_up->GroupIDIsValid();
Vadim Macagon141a6262017-08-01 07:34:26 +0000124 }
125 return is_valid;
126}
127
128uint32_t SBProcessInfo::GetEffectiveUserID() {
Jonas Devliegherebaf56642019-03-06 00:06:00 +0000129 LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBProcessInfo, GetEffectiveUserID);
130
Vadim Macagon141a6262017-08-01 07:34:26 +0000131 uint32_t user_id = UINT32_MAX;
Jonas Devlieghered5b44032019-02-13 06:25:41 +0000132 if (m_opaque_up) {
133 user_id = m_opaque_up->GetEffectiveUserID();
Vadim Macagon141a6262017-08-01 07:34:26 +0000134 }
135 return user_id;
136}
137
138uint32_t SBProcessInfo::GetEffectiveGroupID() {
Jonas Devliegherebaf56642019-03-06 00:06:00 +0000139 LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBProcessInfo, GetEffectiveGroupID);
140
Vadim Macagon141a6262017-08-01 07:34:26 +0000141 uint32_t group_id = UINT32_MAX;
Jonas Devlieghered5b44032019-02-13 06:25:41 +0000142 if (m_opaque_up) {
143 group_id = m_opaque_up->GetEffectiveGroupID();
Vadim Macagon141a6262017-08-01 07:34:26 +0000144 }
145 return group_id;
146}
147
148bool SBProcessInfo::EffectiveUserIDIsValid() {
Jonas Devliegherebaf56642019-03-06 00:06:00 +0000149 LLDB_RECORD_METHOD_NO_ARGS(bool, SBProcessInfo, EffectiveUserIDIsValid);
150
Vadim Macagon141a6262017-08-01 07:34:26 +0000151 bool is_valid = false;
Jonas Devlieghered5b44032019-02-13 06:25:41 +0000152 if (m_opaque_up) {
153 is_valid = m_opaque_up->EffectiveUserIDIsValid();
Vadim Macagon141a6262017-08-01 07:34:26 +0000154 }
155 return is_valid;
156}
157
158bool SBProcessInfo::EffectiveGroupIDIsValid() {
Jonas Devliegherebaf56642019-03-06 00:06:00 +0000159 LLDB_RECORD_METHOD_NO_ARGS(bool, SBProcessInfo, EffectiveGroupIDIsValid);
160
Vadim Macagon141a6262017-08-01 07:34:26 +0000161 bool is_valid = false;
Jonas Devlieghered5b44032019-02-13 06:25:41 +0000162 if (m_opaque_up) {
163 is_valid = m_opaque_up->EffectiveGroupIDIsValid();
Vadim Macagon141a6262017-08-01 07:34:26 +0000164 }
165 return is_valid;
166}
167
168lldb::pid_t SBProcessInfo::GetParentProcessID() {
Jonas Devliegherebaf56642019-03-06 00:06:00 +0000169 LLDB_RECORD_METHOD_NO_ARGS(lldb::pid_t, SBProcessInfo, GetParentProcessID);
170
Vadim Macagon141a6262017-08-01 07:34:26 +0000171 lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID;
Jonas Devlieghered5b44032019-02-13 06:25:41 +0000172 if (m_opaque_up) {
173 proc_id = m_opaque_up->GetParentProcessID();
Vadim Macagon141a6262017-08-01 07:34:26 +0000174 }
175 return proc_id;
176}