1 /*
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15 #include "ebpf_stdtype.h"
16
17 namespace SysTuning {
18 namespace TraceStdtype {
AppendNewData(uint32_t callChainId,uint16_t type,uint32_t iPid,uint32_t iTid,uint64_t startTs,uint64_t endTs,uint64_t dur,DataIndex retValue,DataIndex errCode,size_t size,int32_t fd,DataIndex fileId,DataIndex firstArgument,DataIndex secondArgument,DataIndex thirdArgument,DataIndex fourthArgument)19 size_t FileSystemSample::AppendNewData(uint32_t callChainId,
20 uint16_t type,
21 uint32_t iPid,
22 uint32_t iTid,
23 uint64_t startTs,
24 uint64_t endTs,
25 uint64_t dur,
26 DataIndex retValue,
27 DataIndex errCode,
28 size_t size,
29 int32_t fd,
30 DataIndex fileId,
31 DataIndex firstArgument,
32 DataIndex secondArgument,
33 DataIndex thirdArgument,
34 DataIndex fourthArgument)
35 {
36 callChainIds_.emplace_back(callChainId);
37 types_.emplace_back(type);
38 ipids_.emplace_back(iPid);
39 itids_.emplace_back(iTid);
40 startTs_.emplace_back(startTs);
41 endTs_.emplace_back(endTs);
42 durs_.emplace_back(dur);
43 returnValues_.emplace_back(retValue);
44 errorCodes_.emplace_back(errCode);
45 fds_.emplace_back(fd);
46 fileIds_.emplace_back(fileId);
47 Sizes_.emplace_back(size);
48 firstArguments_.emplace_back(firstArgument);
49 secondArguments_.emplace_back(secondArgument);
50 thirdArguments_.emplace_back(thirdArgument);
51 fourthArguments_.emplace_back(fourthArgument);
52 ids_.emplace_back(Size());
53 return Size() - 1;
54 }
CallChainIds() const55 const std::deque<uint32_t>& FileSystemSample::CallChainIds() const
56 {
57 return callChainIds_;
58 }
Types() const59 const std::deque<uint16_t>& FileSystemSample::Types() const
60 {
61 return types_;
62 }
Ipids() const63 const std::deque<uint32_t>& FileSystemSample::Ipids() const
64 {
65 return ipids_;
66 }
Itids() const67 const std::deque<uint32_t>& FileSystemSample::Itids() const
68 {
69 return itids_;
70 }
StartTs() const71 const std::deque<uint64_t>& FileSystemSample::StartTs() const
72 {
73 return startTs_;
74 }
EndTs() const75 const std::deque<uint64_t>& FileSystemSample::EndTs() const
76 {
77 return endTs_;
78 }
Durs() const79 const std::deque<uint64_t>& FileSystemSample::Durs() const
80 {
81 return durs_;
82 }
ReturnValues() const83 const std::deque<DataIndex>& FileSystemSample::ReturnValues() const
84 {
85 return returnValues_;
86 }
ErrorCodes() const87 const std::deque<DataIndex>& FileSystemSample::ErrorCodes() const
88 {
89 return errorCodes_;
90 }
Fds() const91 const std::deque<int32_t>& FileSystemSample::Fds() const
92 {
93 return fds_;
94 }
FileIds() const95 const std::deque<DataIndex>& FileSystemSample::FileIds() const
96 {
97 return fileIds_;
98 }
Sizes() const99 const std::deque<size_t>& FileSystemSample::Sizes() const
100 {
101 return Sizes_;
102 }
FirstArguments() const103 const std::deque<DataIndex>& FileSystemSample::FirstArguments() const
104 {
105 return firstArguments_;
106 }
SecondArguments() const107 const std::deque<DataIndex>& FileSystemSample::SecondArguments() const
108 {
109 return secondArguments_;
110 }
ThirdArguments() const111 const std::deque<DataIndex>& FileSystemSample::ThirdArguments() const
112 {
113 return thirdArguments_;
114 }
FourthArguments() const115 const std::deque<DataIndex>& FileSystemSample::FourthArguments() const
116 {
117 return fourthArguments_;
118 }
119
AppendNewData(uint32_t callChainId,uint16_t type,uint32_t ipid,uint64_t startTs,uint64_t endTs,uint64_t dur,size_t size,DataIndex addr,uint32_t itid)120 size_t PagedMemorySampleData::AppendNewData(uint32_t callChainId,
121 uint16_t type,
122 uint32_t ipid,
123 uint64_t startTs,
124 uint64_t endTs,
125 uint64_t dur,
126 size_t size,
127 DataIndex addr,
128 uint32_t itid)
129 {
130 callChainIds_.emplace_back(callChainId);
131 types_.emplace_back(type);
132 ipids_.emplace_back(ipid);
133 startTs_.emplace_back(startTs);
134 endTs_.emplace_back(endTs);
135 durs_.emplace_back(dur);
136 Sizes_.emplace_back(size);
137 addrs_.emplace_back(addr);
138 itids_.emplace_back(itid);
139 ids_.emplace_back(Size());
140 return Size() - 1;
141 }
CallChainIds() const142 const std::deque<uint32_t>& PagedMemorySampleData::CallChainIds() const
143 {
144 return callChainIds_;
145 }
Types() const146 const std::deque<uint16_t>& PagedMemorySampleData::Types() const
147 {
148 return types_;
149 }
Ipids() const150 const std::deque<uint32_t>& PagedMemorySampleData::Ipids() const
151 {
152 return ipids_;
153 }
Itids() const154 const std::deque<uint32_t>& PagedMemorySampleData::Itids() const
155 {
156 return itids_;
157 }
StartTs() const158 const std::deque<uint64_t>& PagedMemorySampleData::StartTs() const
159 {
160 return startTs_;
161 }
EndTs() const162 const std::deque<uint64_t>& PagedMemorySampleData::EndTs() const
163 {
164 return endTs_;
165 }
Durs() const166 const std::deque<uint64_t>& PagedMemorySampleData::Durs() const
167 {
168 return durs_;
169 }
Sizes() const170 const std::deque<size_t>& PagedMemorySampleData::Sizes() const
171 {
172 return Sizes_;
173 }
Addr() const174 const std::deque<DataIndex>& PagedMemorySampleData::Addr() const
175 {
176 return addrs_;
177 }
178
AppendNewData(uint32_t callChainId,uint64_t type,uint32_t ipid,uint32_t itid,uint64_t startTs,uint64_t endTs,uint64_t latencyDur,uint32_t tier,uint64_t size,uint64_t blockNumber,uint64_t filePathId,uint64_t durPer4k)179 void BioLatencySampleData::AppendNewData(uint32_t callChainId,
180 uint64_t type,
181 uint32_t ipid,
182 uint32_t itid,
183 uint64_t startTs,
184 uint64_t endTs,
185 uint64_t latencyDur,
186 uint32_t tier,
187 uint64_t size,
188 uint64_t blockNumber,
189 uint64_t filePathId,
190 uint64_t durPer4k)
191 {
192 callChainIds_.emplace_back(callChainId);
193 types_.emplace_back(type);
194 ipids_.emplace_back(ipid);
195 itids_.emplace_back(itid);
196 startTs_.emplace_back(startTs);
197 endTs_.emplace_back(endTs);
198 latencyDurs_.emplace_back(latencyDur);
199 tiers_.emplace_back(tier);
200 sizes_.emplace_back(size);
201 blockNumbers_.emplace_back(blockNumber);
202 filePathIds_.emplace_back(filePathId);
203 durPer4ks_.emplace_back(durPer4k);
204 ids_.emplace_back(rowCount_);
205 rowCount_++;
206 }
CallChainIds() const207 const std::deque<uint32_t>& BioLatencySampleData::CallChainIds() const
208 {
209 return callChainIds_;
210 }
Types() const211 const std::deque<uint64_t>& BioLatencySampleData::Types() const
212 {
213 return types_;
214 }
Ipids() const215 const std::deque<uint32_t>& BioLatencySampleData::Ipids() const
216 {
217 return ipids_;
218 }
Itids() const219 const std::deque<uint32_t>& BioLatencySampleData::Itids() const
220 {
221 return itids_;
222 }
StartTs() const223 const std::deque<uint64_t>& BioLatencySampleData::StartTs() const
224 {
225 return startTs_;
226 }
EndTs() const227 const std::deque<uint64_t>& BioLatencySampleData::EndTs() const
228 {
229 return endTs_;
230 }
LatencyDurs() const231 const std::deque<uint64_t>& BioLatencySampleData::LatencyDurs() const
232 {
233 return latencyDurs_;
234 }
Tiers() const235 const std::deque<uint32_t>& BioLatencySampleData::Tiers() const
236 {
237 return tiers_;
238 }
Sizes() const239 const std::deque<uint64_t>& BioLatencySampleData::Sizes() const
240 {
241 return sizes_;
242 }
BlockNumbers() const243 const std::deque<uint64_t>& BioLatencySampleData::BlockNumbers() const
244 {
245 return blockNumbers_;
246 }
FilePathIds() const247 const std::deque<uint64_t>& BioLatencySampleData::FilePathIds() const
248 {
249 return filePathIds_;
250 }
DurPer4k() const251 const std::deque<uint64_t>& BioLatencySampleData::DurPer4k() const
252 {
253 return durPer4ks_;
254 }
255
AppendNewData(uint32_t callChainId,uint32_t depth,DataIndex ip,DataIndex symbolId,DataIndex filePathId,uint64_t vaddr)256 size_t EbpfCallStackData::AppendNewData(uint32_t callChainId,
257 uint32_t depth,
258 DataIndex ip,
259 DataIndex symbolId,
260 DataIndex filePathId,
261 uint64_t vaddr)
262 {
263 callChainIds_.emplace_back(callChainId);
264 depths_.emplace_back(depth);
265 ips_.emplace_back(ip);
266 symbolIds_.emplace_back(symbolId);
267 filePathIds_.emplace_back(filePathId);
268 vaddrs_.emplace_back(vaddr);
269 ids_.emplace_back(Size());
270 return Size() - 1;
271 }
UpdateEbpfSymbolInfo(size_t row,DataIndex symbolId)272 void EbpfCallStackData::UpdateEbpfSymbolInfo(size_t row, DataIndex symbolId)
273 {
274 if (row >= Size()) {
275 TS_LOGE("The updated row does not exist!");
276 return;
277 }
278 symbolIds_[row] = symbolId;
279 }
CallChainIds() const280 const std::deque<uint32_t>& EbpfCallStackData::CallChainIds() const
281 {
282 return callChainIds_;
283 }
Depths() const284 const std::deque<uint32_t>& EbpfCallStackData::Depths() const
285 {
286 return depths_;
287 }
Ips() const288 const std::deque<DataIndex>& EbpfCallStackData::Ips() const
289 {
290 return ips_;
291 }
SymbolIds() const292 const std::deque<DataIndex>& EbpfCallStackData::SymbolIds() const
293 {
294 return symbolIds_;
295 }
FilePathIds() const296 const std::deque<DataIndex>& EbpfCallStackData::FilePathIds() const
297 {
298 return filePathIds_;
299 }
Vaddrs() const300 const std::deque<uint64_t>& EbpfCallStackData::Vaddrs() const
301 {
302 return vaddrs_;
303 }
304 } // namespace TraceStdtype
305 } // namespace SysTuning
306