• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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