• 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 
16 #include "trace_stdtype.h"
17 #include <algorithm>
18 #include <cmath>
19 #include <ctime>
20 #include "string_to_numerical.h"
21 namespace SysTuning {
22 namespace TraceStdtype {
23 constexpr int32_t MAX_SIZE_LEN = 80;
24 constexpr uint8_t DEVICEINFO_MATCH_LAST = 2;
25 #define UNUSED(expr)             \
26     do {                         \
27         static_cast<void>(expr); \
28     } while (0)
SetDur(uint64_t index,uint64_t dur)29 void CpuCacheBase::SetDur(uint64_t index, uint64_t dur)
30 {
31     durs_[index] = dur;
32 }
AppendThreadState(InternalTime ts,InternalTime dur,InternalCpu cpu,InternalTid itid,TableRowId idState)33 TableRowId ThreadStateData::AppendThreadState(InternalTime ts,
34                                               InternalTime dur,
35                                               InternalCpu cpu,
36                                               InternalTid itid,
37                                               TableRowId idState)
38 {
39     timeStamps_.emplace_back(ts);
40     durations_.emplace_back(dur);
41     itids_.emplace_back(itid);
42     tids_.emplace_back(INVALID_UINT32);
43     pids_.emplace_back(INVALID_UINT32);
44     states_.emplace_back(idState);
45     cpus_.emplace_back(cpu);
46     argSetIds_.emplace_back(INVALID_UINT32);
47     return itids_.size() - 1;
48 }
49 
SetDuration(TableRowId index,InternalTime dur)50 void ThreadStateData::SetDuration(TableRowId index, InternalTime dur)
51 {
52     durations_[index] = dur;
53 }
Finish()54 void DataDict::Finish()
55 {
56     std::string::size_type pos(0);
57     for (auto i = 0; i < dataDict_.size(); i++) {
58         if (dataDict_[i].empty()) {
59             continue;
60         }
61         while ((pos = dataDict_[i].find("\"")) != std::string::npos) {
62             dataDict_[i].replace(pos, 1, "\'");
63         }
64         while ((dataDict_[i].back() >= SPASCII_START && dataDict_[i].back() <= SPASCII_END) ||
65                dataDict_[i].back() == '\r') {
66             dataDict_[i].pop_back();
67         }
68     }
69 }
UpdateDuration(TableRowId index,InternalTime ts)70 TableRowId ThreadStateData::UpdateDuration(TableRowId index, InternalTime ts)
71 {
72     if (durations_[index] == INVALID_TIME) {
73         durations_[index] = ts - timeStamps_[index];
74     }
75     return itids_[index];
76 }
77 
End(TableRowId index,InternalTime ts)78 bool ThreadStateData::End(TableRowId index, InternalTime ts)
79 {
80     if (durations_[index] == INVALID_TIME) {
81         durations_[index] = -1;
82         return false;
83     }
84     return true;
85 }
UpdateState(TableRowId index,TableRowId idState)86 void ThreadStateData::UpdateState(TableRowId index, TableRowId idState)
87 {
88     states_[index] = idState;
89 }
SetArgSetId(TableRowId index,uint32_t setId)90 void ThreadStateData::SetArgSetId(TableRowId index, uint32_t setId)
91 {
92     argSetIds_[index] = setId;
93 }
94 
UpdateDuration(TableRowId index,InternalTime ts,TableRowId idState)95 void ThreadStateData::UpdateDuration(TableRowId index, InternalTime ts, TableRowId idState)
96 {
97     durations_[index] = ts - timeStamps_[index];
98     states_[index] = idState;
99 }
100 
UpdateTidAndPid(TableRowId index,InternalTid tid,InternalTid pid)101 void ThreadStateData::UpdateTidAndPid(TableRowId index, InternalTid tid, InternalTid pid)
102 {
103     tids_[index] = tid;
104     pids_[index] = pid;
105 }
106 
UpdateDuration(TableRowId index,InternalTime ts,InternalCpu cpu,TableRowId idState)107 TableRowId ThreadStateData::UpdateDuration(TableRowId index, InternalTime ts, InternalCpu cpu, TableRowId idState)
108 {
109     cpus_[index] = cpu;
110     durations_[index] = ts - timeStamps_[index];
111     states_[index] = idState;
112     return itids_[index];
113 }
114 
AppendSchedSlice(uint64_t ts,uint64_t dur,uint64_t cpu,uint32_t internalTid,uint64_t endState,uint64_t priority)115 size_t SchedSlice::AppendSchedSlice(uint64_t ts,
116                                     uint64_t dur,
117                                     uint64_t cpu,
118                                     uint32_t internalTid,
119                                     uint64_t endState,
120                                     uint64_t priority)
121 {
122     timeStamps_.emplace_back(ts);
123     durs_.emplace_back(dur);
124     cpus_.emplace_back(cpu);
125     tsEnds_.emplace_back(0);
126     internalTids_.emplace_back(internalTid);
127     endStates_.emplace_back(endState);
128     priority_.emplace_back(priority);
129     argSets_.emplace_back(INVALID_UINT32);
130     return Size() - 1;
131 }
132 
SetDuration(size_t index,uint64_t duration)133 void SchedSlice::SetDuration(size_t index, uint64_t duration)
134 {
135     durs_[index] = duration;
136     tsEnds_[index] = timeStamps_[index] + duration;
137 }
138 
Update(uint64_t index,uint64_t ts,uint64_t state)139 void SchedSlice::Update(uint64_t index, uint64_t ts, uint64_t state)
140 {
141     durs_[index] = ts - timeStamps_[index];
142     endStates_[index] = state;
143 }
144 
UpdateArg(uint64_t index,uint32_t argsetId)145 void SchedSlice::UpdateArg(uint64_t index, uint32_t argsetId)
146 {
147     argSets_[index] = argsetId;
148 }
AppendInternalAsyncSlice(uint64_t startT,uint64_t durationNs,InternalTid internalTid,DataIndex cat,uint16_t nameIdentify,DataIndex name,uint8_t depth,uint64_t cookid,const std::optional<uint64_t> & parentId)149 size_t CallStack::AppendInternalAsyncSlice(uint64_t startT,
150                                            uint64_t durationNs,
151                                            InternalTid internalTid,
152                                            DataIndex cat,
153                                            uint16_t nameIdentify,
154                                            DataIndex name,
155                                            uint8_t depth,
156                                            uint64_t cookid,
157                                            const std::optional<uint64_t>& parentId)
158 {
159     AppendCommonInfo(startT, durationNs, internalTid);
160     AppendCallStack(cat, name, depth, parentId);
161     AppendDistributeInfo();
162     cookies_.emplace_back(cookid);
163     ids_.emplace_back(ids_.size());
164     identifys_.emplace_back(nameIdentify + depth);
165     return Size() - 1;
166 }
AppendInternalSlice(uint64_t startT,uint64_t durationNs,InternalTid internalTid,DataIndex cat,uint16_t nameIdentify,DataIndex name,uint8_t depth,const std::optional<uint64_t> & parentId)167 size_t CallStack::AppendInternalSlice(uint64_t startT,
168                                       uint64_t durationNs,
169                                       InternalTid internalTid,
170                                       DataIndex cat,
171                                       uint16_t nameIdentify,
172                                       DataIndex name,
173                                       uint8_t depth,
174                                       const std::optional<uint64_t>& parentId)
175 {
176     AppendCommonInfo(startT, durationNs, internalTid);
177     AppendCallStack(cat, name, depth, parentId);
178     identifys_.emplace_back(nameIdentify + depth);
179     ids_.emplace_back(ids_.size());
180     cookies_.emplace_back(INVALID_UINT64);
181     AppendDistributeInfo();
182     return Size() - 1;
183 }
184 
AppendCommonInfo(uint64_t startT,uint64_t durationNs,InternalTid internalTid)185 void CallStack::AppendCommonInfo(uint64_t startT, uint64_t durationNs, InternalTid internalTid)
186 {
187     timeStamps_.emplace_back(startT);
188     durs_.emplace_back(durationNs);
189     callIds_.emplace_back(internalTid);
190 }
AppendCallStack(DataIndex cat,DataIndex name,uint8_t depth,std::optional<uint64_t> parentId)191 void CallStack::AppendCallStack(DataIndex cat, DataIndex name, uint8_t depth, std::optional<uint64_t> parentId)
192 {
193     parentIds_.emplace_back(parentId);
194     cats_.emplace_back(cat);
195     names_.emplace_back(name);
196     depths_.emplace_back(depth);
197 }
SetDistributeInfo(size_t index,const std::string & chainId,const std::string & spanId,const std::string & parentSpanId,const std::string & flag,const std::string & args)198 void CallStack::SetDistributeInfo(size_t index,
199                                   const std::string& chainId,
200                                   const std::string& spanId,
201                                   const std::string& parentSpanId,
202                                   const std::string& flag,
203                                   const std::string& args)
204 {
205     chainIds_[index] = chainId;
206     spanIds_[index] = spanId;
207     parentSpanIds_[index] = parentSpanId;
208     flags_[index] = flag;
209     args_[index] = args;
210     argSet_[index] = INVALID_UINT32;
211 }
AppendDistributeInfo(const std::string & chainId,const std::string & spanId,const std::string & parentSpanId,const std::string & flag,const std::string & args)212 void CallStack::AppendDistributeInfo(const std::string& chainId,
213                                      const std::string& spanId,
214                                      const std::string& parentSpanId,
215                                      const std::string& flag,
216                                      const std::string& args)
217 {
218     chainIds_.emplace_back(chainId);
219     spanIds_.emplace_back(spanId);
220     parentSpanIds_.emplace_back(parentSpanId);
221     flags_.emplace_back(flag);
222     args_.emplace_back(args);
223     argSet_.emplace_back(INVALID_UINT32);
224 }
AppendDistributeInfo()225 void CallStack::AppendDistributeInfo()
226 {
227     chainIds_.emplace_back("");
228     spanIds_.emplace_back("");
229     parentSpanIds_.emplace_back("");
230     flags_.emplace_back("");
231     args_.emplace_back("");
232     argSet_.emplace_back(INVALID_UINT32);
233 }
SetDuration(size_t index,uint64_t timeStamp)234 void CallStack::SetDuration(size_t index, uint64_t timeStamp)
235 {
236     durs_[index] = timeStamp - timeStamps_[index];
237 }
SetDurationWithFlag(size_t index,uint64_t timeStamp)238 void CallStack::SetDurationWithFlag(size_t index, uint64_t timeStamp)
239 {
240     durs_[index] = timeStamp - timeStamps_[index];
241     flags_[index] = "1";
242 }
243 
SetFlag(size_t index,uint8_t flag)244 void CallStack::SetFlag(size_t index, uint8_t flag)
245 {
246     flags_[index] = std::to_string(flag);
247 }
SetDurationEx(size_t index,uint32_t dur)248 void CallStack::SetDurationEx(size_t index, uint32_t dur)
249 {
250     durs_[index] = dur;
251 }
252 
SetIrqDurAndArg(size_t index,uint64_t timeStamp,uint32_t argSetId)253 void CallStack::SetIrqDurAndArg(size_t index, uint64_t timeStamp, uint32_t argSetId)
254 {
255     SetDuration(index, timeStamp);
256     argSet_[index] = argSetId;
257 }
SetTimeStamp(size_t index,uint64_t timeStamp)258 void CallStack::SetTimeStamp(size_t index, uint64_t timeStamp)
259 {
260     timeStamps_[index] = timeStamp;
261 }
262 
SetDepth(size_t index,uint8_t depth)263 void CallStack::SetDepth(size_t index, uint8_t depth)
264 {
265     depths_[index] = depth;
266 }
SetArgSetId(size_t index,uint32_t argSetId)267 void CallStack::SetArgSetId(size_t index, uint32_t argSetId)
268 {
269     argSet_[index] = argSetId;
270 }
ParentIdData() const271 const std::deque<std::optional<uint64_t>>& CallStack::ParentIdData() const
272 {
273     return parentIds_;
274 }
CatsData() const275 const std::deque<DataIndex>& CallStack::CatsData() const
276 {
277     return cats_;
278 }
IdentifysData() const279 const std::deque<uint16_t>& CallStack::IdentifysData() const
280 {
281     return identifys_;
282 }
NamesData() const283 const std::deque<DataIndex>& CallStack::NamesData() const
284 {
285     return names_;
286 }
Depths() const287 const std::deque<uint8_t>& CallStack::Depths() const
288 {
289     return depths_;
290 }
Cookies() const291 const std::deque<uint64_t>& CallStack::Cookies() const
292 {
293     return cookies_;
294 }
CallIds() const295 const std::deque<uint32_t>& CallStack::CallIds() const
296 {
297     return callIds_;
298 }
ChainIds() const299 const std::deque<std::string>& CallStack::ChainIds() const
300 {
301     return chainIds_;
302 }
SpanIds() const303 const std::deque<std::string>& CallStack::SpanIds() const
304 {
305     return spanIds_;
306 }
ParentSpanIds() const307 const std::deque<std::string>& CallStack::ParentSpanIds() const
308 {
309     return parentSpanIds_;
310 }
Flags() const311 const std::deque<std::string>& CallStack::Flags() const
312 {
313     return flags_;
314 }
ArgsData() const315 const std::deque<std::string>& CallStack::ArgsData() const
316 {
317     return args_;
318 }
ArgSetIdsData() const319 const std::deque<uint32_t>& CallStack::ArgSetIdsData() const
320 {
321     return argSet_;
322 }
323 
AppendNewArg(DataIndex nameId,BaseDataType dataType,int64_t value,size_t argSet)324 size_t ArgSet::AppendNewArg(DataIndex nameId, BaseDataType dataType, int64_t value, size_t argSet)
325 {
326     dataTypes_.emplace_back(dataType);
327     argset_.emplace_back(argSet);
328     ids_.emplace_back(Size());
329     values_.emplace_back(value);
330     names_.emplace_back(nameId);
331     return Size() - 1;
332 }
DataTypes() const333 const std::deque<BaseDataType>& ArgSet::DataTypes() const
334 {
335     return dataTypes_;
336 }
ValuesData() const337 const std::deque<int64_t>& ArgSet::ValuesData() const
338 {
339     return values_;
340 }
ArgsData() const341 const std::deque<uint64_t>& ArgSet::ArgsData() const
342 {
343     return argset_;
344 }
NamesData() const345 const std::deque<DataIndex>& ArgSet::NamesData() const
346 {
347     return names_;
348 }
349 
AppendNewFilter(uint64_t filterId,DataIndex type,DataIndex nameId)350 size_t SysMeasureFilter::AppendNewFilter(uint64_t filterId, DataIndex type, DataIndex nameId)
351 {
352     ids_.emplace_back(filterId);
353     names_.emplace_back(nameId);
354     types_.emplace_back(type);
355     return ids_.size() - 1;
356 }
NamesData() const357 const std::deque<DataIndex>& SysMeasureFilter::NamesData() const
358 {
359     return names_;
360 }
361 
TypesData() const362 const std::deque<DataIndex>& SysMeasureFilter::TypesData() const
363 {
364     return types_;
365 }
AppendNewDataType(BaseDataType dataType,DataIndex dataDescIndex)366 size_t DataType::AppendNewDataType(BaseDataType dataType, DataIndex dataDescIndex)
367 {
368     ids_.emplace_back(Size());
369     dataTypes_.emplace_back(dataType);
370     descs_.emplace_back(dataDescIndex);
371     return Size() - 1;
372 }
373 
DataTypes() const374 const std::deque<BaseDataType>& DataType::DataTypes() const
375 {
376     return dataTypes_;
377 }
DataDesc() const378 const std::deque<DataIndex>& DataType::DataDesc() const
379 {
380     return descs_;
381 }
AppendNewFilterData(std::string type,std::string name,uint64_t sourceArgSetId)382 size_t Filter::AppendNewFilterData(std::string type, std::string name, uint64_t sourceArgSetId)
383 {
384     nameDeque_.emplace_back(name);
385     sourceArgSetId_.emplace_back(sourceArgSetId);
386     ids_.emplace_back(Size());
387     typeDeque_.emplace_back(type);
388     return Size() - 1;
389 }
390 
AppendMeasureData(uint32_t type,uint64_t timeStamp,int64_t value,uint32_t filterId)391 size_t Measure::AppendMeasureData(uint32_t type, uint64_t timeStamp, int64_t value, uint32_t filterId)
392 {
393     valuesDeque_.emplace_back(value);
394     filterIdDeque_.emplace_back(filterId);
395     typeDeque_.emplace_back(type);
396     timeStamps_.emplace_back(timeStamp);
397     durDeque_.emplace_back(INVALID_UINT64);
398     return Size() - 1;
399 }
400 
SetDur(uint32_t row,uint64_t timeStamp)401 void Measure::SetDur(uint32_t row, uint64_t timeStamp)
402 {
403     durDeque_[row] = timeStamp - timeStamps_[row];
404 }
AppendRawData(uint32_t id,uint64_t timeStamp,uint32_t name,uint32_t cpu,uint32_t internalTid)405 size_t Raw::AppendRawData(uint32_t id, uint64_t timeStamp, uint32_t name, uint32_t cpu, uint32_t internalTid)
406 {
407     ids_.emplace_back(id);
408     timeStamps_.emplace_back(timeStamp);
409     nameDeque_.emplace_back(name);
410     cpuDeque_.emplace_back(cpu);
411     itidDeque_.emplace_back(internalTid);
412     return Size() - 1;
413 }
414 
AppendNewFilter(uint64_t filterId,uint32_t nameIndex,uint64_t internalTid)415 size_t ThreadMeasureFilter::AppendNewFilter(uint64_t filterId, uint32_t nameIndex, uint64_t internalTid)
416 {
417     filterId_.emplace_back(filterId);
418     nameIndex_.emplace_back(nameIndex);
419     internalTids_.emplace_back(internalTid);
420     return Size() - 1;
421 }
422 
AppendInstantEventData(uint64_t timeStamp,DataIndex nameIndex,int64_t internalTid,int64_t wakeupFromInternalPid)423 size_t Instants::AppendInstantEventData(uint64_t timeStamp,
424                                         DataIndex nameIndex,
425                                         int64_t internalTid,
426                                         int64_t wakeupFromInternalPid)
427 {
428     internalTids_.emplace_back(internalTid);
429     timeStamps_.emplace_back(timeStamp);
430     NameIndexs_.emplace_back(nameIndex);
431     wakeupFromInternalPids_.emplace_back(wakeupFromInternalPid);
432     return Size() - 1;
433 }
AppendNewLogInfo(uint64_t seq,uint64_t timeStamp,uint32_t pid,uint32_t tid,DataIndex level,DataIndex tag,DataIndex context,uint64_t originTs)434 size_t LogInfo::AppendNewLogInfo(uint64_t seq,
435                                  uint64_t timeStamp,
436                                  uint32_t pid,
437                                  uint32_t tid,
438                                  DataIndex level,
439                                  DataIndex tag,
440                                  DataIndex context,
441                                  uint64_t originTs)
442 {
443     hilogLineSeqs_.emplace_back(seq);
444     timeStamps_.emplace_back(timeStamp);
445     pids_.emplace_back(pid);
446     tids_.emplace_back(tid);
447     levels_.emplace_back(level);
448     tags_.emplace_back(tag);
449     contexts_.emplace_back(context);
450     originTs_.emplace_back(originTs);
451     return Size() - 1;
452 }
HilogLineSeqs() const453 const std::deque<uint64_t>& LogInfo::HilogLineSeqs() const
454 {
455     return hilogLineSeqs_;
456 }
Pids() const457 const std::deque<uint32_t>& LogInfo::Pids() const
458 {
459     return pids_;
460 }
Tids() const461 const std::deque<uint32_t>& LogInfo::Tids() const
462 {
463     return tids_;
464 }
Levels() const465 const std::deque<DataIndex>& LogInfo::Levels() const
466 {
467     return levels_;
468 }
Tags() const469 const std::deque<DataIndex>& LogInfo::Tags() const
470 {
471     return tags_;
472 }
Contexts() const473 const std::deque<DataIndex>& LogInfo::Contexts() const
474 {
475     return contexts_;
476 }
OriginTimeStamData() const477 const std::deque<uint64_t>& LogInfo::OriginTimeStamData() const
478 {
479     return originTs_;
480 }
UpdateCallChainId(size_t row,uint32_t callChainId)481 void NativeHook::UpdateCallChainId(size_t row, uint32_t callChainId)
482 {
483     if (row < Size()) {
484         callChainIds_[row] = callChainId;
485     } else {
486         TS_LOGE("Native hook update callChainId failed!!!");
487     }
488 }
AppendNewNativeHookData(uint32_t callChainId,uint32_t ipid,uint32_t itid,std::string eventType,DataIndex subType,uint64_t timeStamp,uint64_t endTimeStamp,uint64_t duration,uint64_t addr,int64_t memSize)489 size_t NativeHook::AppendNewNativeHookData(uint32_t callChainId,
490                                            uint32_t ipid,
491                                            uint32_t itid,
492                                            std::string eventType,
493                                            DataIndex subType,
494                                            uint64_t timeStamp,
495                                            uint64_t endTimeStamp,
496                                            uint64_t duration,
497                                            uint64_t addr,
498                                            int64_t memSize)
499 {
500     callChainIds_.emplace_back(callChainId);
501     ipids_.emplace_back(ipid);
502     itids_.emplace_back(itid);
503     eventTypes_.emplace_back(eventType);
504     subTypes_.emplace_back(subType);
505     timeStamps_.emplace_back(timeStamp);
506     endTimeStamps_.emplace_back(endTimeStamp);
507     durations_.emplace_back(duration);
508     addrs_.emplace_back(addr);
509     memSizes_.emplace_back(memSize);
510     if (eventType == ALLOC_EVET) {
511         countHeapSizes_ += memSize;
512         allMemSizes_.emplace_back(countHeapSizes_);
513     } else if (eventType == FREE_EVENT) {
514         countHeapSizes_ -= memSize;
515         allMemSizes_.emplace_back(countHeapSizes_);
516     } else if (eventType == MMAP_EVENT) {
517         countMmapSizes_ += memSize;
518         allMemSizes_.emplace_back(countMmapSizes_);
519     } else if (eventType == MUNMAP_EVENT) {
520         countMmapSizes_ -= memSize;
521         allMemSizes_.emplace_back(countMmapSizes_);
522     }
523     currentSizeDurs_.emplace_back(0);
524     lastCallerPathIndexs_.emplace_back(INVALID_UINT64);
525     return Size() - 1;
526 }
UpdateEndTimeStampAndDuration(size_t row,uint64_t endTimeStamp)527 void NativeHook::UpdateEndTimeStampAndDuration(size_t row, uint64_t endTimeStamp)
528 {
529     endTimeStamps_[row] = endTimeStamp;
530     durations_[row] = endTimeStamp - timeStamps_[row];
531 }
UpdateCurrentSizeDur(size_t row,uint64_t timeStamp)532 void NativeHook::UpdateCurrentSizeDur(size_t row, uint64_t timeStamp)
533 {
534     currentSizeDurs_[row] = timeStamp - timeStamps_[row];
535 }
UpdateMemMapSubType(uint64_t row,uint64_t tagId)536 void NativeHook::UpdateMemMapSubType(uint64_t row, uint64_t tagId)
537 {
538     if (row < subTypes_.size()) {
539         subTypes_[row] = tagId;
540     } else {
541         TS_LOGE("subTypes_ row is invalid!");
542     }
543 }
UpdateLastCallerPathIndexs(std::unordered_map<uint32_t,uint64_t> & callIdToLasLibId)544 void NativeHook::UpdateLastCallerPathIndexs(std::unordered_map<uint32_t, uint64_t>& callIdToLasLibId)
545 {
546     if (callIdToLasLibId.empty()) {
547         return;
548     }
549     for (auto i = 0; i < Size(); ++i) {
550         auto symbolIt = callIdToLasLibId.find(callChainIds_[i]);
551         if (symbolIt != callIdToLasLibId.end()) {
552             lastCallerPathIndexs_[i] = symbolIt->second;
553         } else {
554             lastCallerPathIndexs_[i] = INVALID_UINT64;
555         }
556     }
557 }
CallChainIds() const558 const std::deque<uint32_t>& NativeHook::CallChainIds() const
559 {
560     return callChainIds_;
561 }
Ipids() const562 const std::deque<uint32_t>& NativeHook::Ipids() const
563 {
564     return ipids_;
565 }
Itids() const566 const std::deque<uint32_t>& NativeHook::Itids() const
567 {
568     return itids_;
569 }
EventTypes() const570 const std::deque<std::string>& NativeHook::EventTypes() const
571 {
572     return eventTypes_;
573 }
SubTypes() const574 const std::deque<DataIndex>& NativeHook::SubTypes() const
575 {
576     return subTypes_;
577 }
EndTimeStamps() const578 const std::deque<uint64_t>& NativeHook::EndTimeStamps() const
579 {
580     return endTimeStamps_;
581 }
Durations() const582 const std::deque<uint64_t>& NativeHook::Durations() const
583 {
584     return durations_;
585 }
Addrs() const586 const std::deque<uint64_t>& NativeHook::Addrs() const
587 {
588     return addrs_;
589 }
MemSizes() const590 const std::deque<int64_t>& NativeHook::MemSizes() const
591 {
592     return memSizes_;
593 }
AllMemSizes() const594 const std::deque<int64_t>& NativeHook::AllMemSizes() const
595 {
596     return allMemSizes_;
597 }
CurrentSizeDurs() const598 const std::deque<uint64_t>& NativeHook::CurrentSizeDurs() const
599 {
600     return currentSizeDurs_;
601 }
LastCallerPathIndexs() const602 const std::deque<uint64_t>& NativeHook::LastCallerPathIndexs() const
603 {
604     return lastCallerPathIndexs_;
605 }
AppendNewNativeHookFrame(uint32_t callChainId,uint64_t depth,uint64_t ip,uint64_t sp,DataIndex symbolName,DataIndex filePath,uint64_t offset,uint64_t symbolOffset,const std::string & vaddr)606 size_t NativeHookFrame::AppendNewNativeHookFrame(uint32_t callChainId,
607                                                  uint64_t depth,
608                                                  uint64_t ip,
609                                                  uint64_t sp,
610                                                  DataIndex symbolName,
611                                                  DataIndex filePath,
612                                                  uint64_t offset,
613                                                  uint64_t symbolOffset,
614                                                  const std::string& vaddr)
615 {
616     callChainIds_.emplace_back(callChainId);
617     ips_.emplace_back(ip);
618     sps_.emplace_back(sp);
619     depths_.emplace_back(depth);
620     symbolNames_.emplace_back(symbolName);
621     filePaths_.emplace_back(filePath);
622     offsets_.emplace_back(offset);
623     symbolOffsets_.emplace_back(symbolOffset);
624     vaddrs_.emplace_back(vaddr);
625     return Size() - 1;
626 }
AppendNewNativeHookFrame(uint32_t callChainId,uint64_t depth,uint64_t ip,uint64_t sp,DataIndex symbolName,DataIndex filePath,uint64_t offset,uint64_t symbolOffset)627 size_t NativeHookFrame::AppendNewNativeHookFrame(uint32_t callChainId,
628                                                  uint64_t depth,
629                                                  uint64_t ip,
630                                                  uint64_t sp,
631                                                  DataIndex symbolName,
632                                                  DataIndex filePath,
633                                                  uint64_t offset,
634                                                  uint64_t symbolOffset)
635 {
636     callChainIds_.emplace_back(callChainId);
637     ips_.emplace_back(ip);
638     sps_.emplace_back(sp);
639     depths_.emplace_back(depth);
640     symbolNames_.emplace_back(symbolName);
641     filePaths_.emplace_back(filePath);
642     offsets_.emplace_back(offset);
643     symbolOffsets_.emplace_back(symbolOffset);
644     return Size() - 1;
645 }
UpdateSymbolIdToNameMap(uint64_t originSymbolId,uint64_t symbolId)646 void NativeHookFrame::UpdateSymbolIdToNameMap(uint64_t originSymbolId, uint64_t symbolId)
647 {
648     symbolIdToSymbolName_.insert(std::make_pair(originSymbolId, symbolId));
649 }
UpdateFrameInfo(size_t row,DataIndex symbolIndex,DataIndex filePathIndex,uint64_t offset,uint64_t symbolOffset)650 void NativeHookFrame::UpdateFrameInfo(size_t row,
651                                       DataIndex symbolIndex,
652                                       DataIndex filePathIndex,
653                                       uint64_t offset,
654                                       uint64_t symbolOffset)
655 {
656     if (row >= Size()) {
657         TS_LOGE("The updated row does not exist!");
658         return;
659     }
660     symbolNames_[row] = symbolIndex;
661     filePaths_[row] = filePathIndex;
662     offsets_[row] = offset;
663     symbolOffsets_[row] = symbolOffset;
664 }
665 
UpdateSymbolId()666 void NativeHookFrame::UpdateSymbolId()
667 {
668     if (symbolIdToSymbolName_.empty()) {
669         return;
670     }
671     for (auto i = 0; i < Size(); ++i) {
672         auto symbolIt = symbolIdToSymbolName_.find(symbolNames_[i]);
673         if (symbolIt != symbolIdToSymbolName_.end()) {
674             symbolNames_[i] = symbolIt->second;
675         }
676     }
677 }
UpdateSymbolId(size_t index,DataIndex symbolId)678 void NativeHookFrame::UpdateSymbolId(size_t index, DataIndex symbolId)
679 {
680     if (index < Size()) {
681         symbolNames_[index] = symbolId;
682     }
683 }
UpdateFileId(std::map<uint32_t,uint64_t> & filePathIdToFilePathName)684 void NativeHookFrame::UpdateFileId(std::map<uint32_t, uint64_t>& filePathIdToFilePathName)
685 {
686     if (filePathIdToFilePathName.empty()) {
687         return;
688     }
689     for (auto i = 0; i < Size(); ++i) {
690         auto symbolIt = filePathIdToFilePathName.find(filePaths_[i]);
691         if (symbolIt != filePathIdToFilePathName.end()) {
692             filePaths_[i] = symbolIt->second;
693         }
694     }
695 }
UpdateVaddrs(std::deque<std::string> & vaddrs)696 void NativeHookFrame::UpdateVaddrs(std::deque<std::string>& vaddrs)
697 {
698     vaddrs_.assign(vaddrs.begin(), vaddrs.end());
699 }
CallChainIds() const700 const std::deque<uint32_t>& NativeHookFrame::CallChainIds() const
701 {
702     return callChainIds_;
703 }
Depths() const704 const std::deque<uint64_t>& NativeHookFrame::Depths() const
705 {
706     return depths_;
707 }
Ips() const708 const std::deque<uint64_t>& NativeHookFrame::Ips() const
709 {
710     return ips_;
711 }
Sps() const712 const std::deque<uint64_t>& NativeHookFrame::Sps() const
713 {
714     return sps_;
715 }
SymbolNames() const716 const std::deque<DataIndex>& NativeHookFrame::SymbolNames() const
717 {
718     return symbolNames_;
719 }
FilePaths() const720 const std::deque<DataIndex>& NativeHookFrame::FilePaths() const
721 {
722     return filePaths_;
723 }
Offsets() const724 const std::deque<uint64_t>& NativeHookFrame::Offsets() const
725 {
726     return offsets_;
727 }
SymbolOffsets() const728 const std::deque<uint64_t>& NativeHookFrame::SymbolOffsets() const
729 {
730     return symbolOffsets_;
731 }
Vaddrs() const732 const std::deque<std::string>& NativeHookFrame::Vaddrs() const
733 {
734     return vaddrs_;
735 }
736 
AppendNewNativeHookStatistic(uint32_t ipid,uint64_t timeStamp,uint32_t callChainId,uint32_t memoryType,DataIndex subMemType,uint64_t applyCount,uint64_t releaseCount,uint64_t applySize,uint64_t releaseSize)737 size_t NativeHookStatistic::AppendNewNativeHookStatistic(uint32_t ipid,
738                                                          uint64_t timeStamp,
739                                                          uint32_t callChainId,
740                                                          uint32_t memoryType,
741                                                          DataIndex subMemType,
742                                                          uint64_t applyCount,
743                                                          uint64_t releaseCount,
744                                                          uint64_t applySize,
745                                                          uint64_t releaseSize)
746 {
747     ids_.emplace_back(Size());
748     ipids_.emplace_back(ipid);
749     timeStamps_.emplace_back(timeStamp);
750     callChainIds_.emplace_back(callChainId);
751     memoryTypes_.emplace_back(memoryType);
752     applyCounts_.emplace_back(applyCount);
753     memSubTypes_.emplace_back(subMemType);
754     releaseCounts_.emplace_back(releaseCount);
755     applySizes_.emplace_back(applySize);
756     releaseSizes_.emplace_back(releaseSize);
757     return Size() - 1;
758 }
Ipids() const759 const std::deque<uint32_t>& NativeHookStatistic::Ipids() const
760 {
761     return ipids_;
762 }
CallChainIds() const763 const std::deque<uint32_t>& NativeHookStatistic::CallChainIds() const
764 {
765     return callChainIds_;
766 }
MemoryTypes() const767 const std::deque<uint32_t>& NativeHookStatistic::MemoryTypes() const
768 {
769     return memoryTypes_;
770 }
MemorySubTypes() const771 const std::deque<DataIndex>& NativeHookStatistic::MemorySubTypes() const
772 {
773     return memSubTypes_;
774 }
ApplyCounts() const775 const std::deque<uint64_t>& NativeHookStatistic::ApplyCounts() const
776 {
777     return applyCounts_;
778 }
ReleaseCounts() const779 const std::deque<uint64_t>& NativeHookStatistic::ReleaseCounts() const
780 {
781     return releaseCounts_;
782 }
ApplySizes() const783 const std::deque<uint64_t>& NativeHookStatistic::ApplySizes() const
784 {
785     return applySizes_;
786 }
ReleaseSizes() const787 const std::deque<uint64_t>& NativeHookStatistic::ReleaseSizes() const
788 {
789     return releaseSizes_;
790 }
AppendNewHidumpInfo(uint64_t timeStamp,uint32_t fps)791 size_t Hidump::AppendNewHidumpInfo(uint64_t timeStamp, uint32_t fps)
792 {
793     timeStamps_.emplace_back(timeStamp);
794     fpss_.emplace_back(fps);
795     return Size() - 1;
796 }
Fpss() const797 const std::deque<uint32_t>& Hidump::Fpss() const
798 {
799     return fpss_;
800 }
801 
AppendNewPerfCallChain(uint64_t sampleId,uint32_t callChainId,uint64_t vaddrInFile,uint64_t fileId,uint64_t symbolId)802 size_t PerfCallChain::AppendNewPerfCallChain(uint64_t sampleId,
803                                              uint32_t callChainId,
804                                              uint64_t vaddrInFile,
805                                              uint64_t fileId,
806                                              uint64_t symbolId)
807 {
808     ids_.emplace_back(Size());
809     sampleIds_.emplace_back(sampleId);
810     callChainIds_.emplace_back(callChainId);
811     vaddrInFiles_.emplace_back(vaddrInFile);
812     fileIds_.emplace_back(fileId);
813     symbolIds_.emplace_back(symbolId);
814     names_.emplace_back("");
815     return Size() - 1;
816 }
SampleIds() const817 const std::deque<uint64_t>& PerfCallChain::SampleIds() const
818 {
819     return sampleIds_;
820 }
CallChainIds() const821 const std::deque<uint32_t>& PerfCallChain::CallChainIds() const
822 {
823     return callChainIds_;
824 }
VaddrInFiles() const825 const std::deque<uint64_t>& PerfCallChain::VaddrInFiles() const
826 {
827     return vaddrInFiles_;
828 }
FileIds() const829 const std::deque<uint64_t>& PerfCallChain::FileIds() const
830 {
831     return fileIds_;
832 }
SymbolIds() const833 const std::deque<uint64_t>& PerfCallChain::SymbolIds() const
834 {
835     return symbolIds_;
836 }
837 
Names() const838 const std::deque<std::string>& PerfCallChain::Names() const
839 {
840     return names_;
841 }
SetName(uint64_t index,const std::string & name)842 void PerfCallChain::SetName(uint64_t index, const std::string& name)
843 {
844     names_[index] = name;
845 }
Clear()846 void PerfCallChain::Clear()
847 {
848     CacheBase::Clear();
849     sampleIds_.clear();
850     callChainIds_.clear();
851     vaddrInFiles_.clear();
852     fileIds_.clear();
853     symbolIds_.clear();
854     names_.clear();
855 }
AppendNewPerfFiles(uint64_t fileIds,uint32_t serial,DataIndex symbols,DataIndex filePath)856 size_t PerfFiles::AppendNewPerfFiles(uint64_t fileIds, uint32_t serial, DataIndex symbols, DataIndex filePath)
857 {
858     ids_.emplace_back(Size());
859     fileIds_.emplace_back(fileIds);
860     serials_.emplace_back(serial);
861     symbols_.emplace_back(symbols);
862     filePaths_.emplace_back(filePath);
863     return Size() - 1;
864 }
FileIds() const865 const std::deque<uint64_t>& PerfFiles::FileIds() const
866 {
867     return fileIds_;
868 }
869 
Serials() const870 const std::deque<uint32_t>& PerfFiles::Serials() const
871 {
872     return serials_;
873 }
Symbols() const874 const std::deque<DataIndex>& PerfFiles::Symbols() const
875 {
876     return symbols_;
877 }
FilePaths() const878 const std::deque<DataIndex>& PerfFiles::FilePaths() const
879 {
880     return filePaths_;
881 }
882 
Clear()883 void PerfFiles::Clear()
884 {
885     CacheBase::Clear();
886     fileIds_.clear();
887     serials_.clear();
888     symbols_.clear();
889     filePaths_.clear();
890 }
891 
AppendNewPerfSample(uint32_t sampleId,uint64_t timeStamp,uint32_t tid,uint64_t eventCount,uint64_t eventTypeId,uint64_t timestampTrace,uint64_t cpuId,uint64_t threadState)892 size_t PerfSample::AppendNewPerfSample(uint32_t sampleId,
893                                        uint64_t timeStamp,
894                                        uint32_t tid,
895                                        uint64_t eventCount,
896                                        uint64_t eventTypeId,
897                                        uint64_t timestampTrace,
898                                        uint64_t cpuId,
899                                        uint64_t threadState)
900 {
901     ids_.emplace_back(Size());
902     sampleIds_.emplace_back(sampleId);
903     timeStamps_.emplace_back(timeStamp);
904     tids_.emplace_back(tid);
905     eventCounts_.emplace_back(eventCount);
906     eventTypeIds_.emplace_back(eventTypeId);
907     timestampTraces_.emplace_back(timestampTrace);
908     cpuIds_.emplace_back(cpuId);
909     threadStates_.emplace_back(threadState);
910     return Size() - 1;
911 }
SampleIds() const912 const std::deque<uint32_t>& PerfSample::SampleIds() const
913 {
914     return sampleIds_;
915 }
Tids() const916 const std::deque<uint32_t>& PerfSample::Tids() const
917 {
918     return tids_;
919 }
EventCounts() const920 const std::deque<uint64_t>& PerfSample::EventCounts() const
921 {
922     return eventCounts_;
923 }
EventTypeIds() const924 const std::deque<uint64_t>& PerfSample::EventTypeIds() const
925 {
926     return eventTypeIds_;
927 }
TimestampTraces() const928 const std::deque<uint64_t>& PerfSample::TimestampTraces() const
929 {
930     return timestampTraces_;
931 }
CpuIds() const932 const std::deque<uint64_t>& PerfSample::CpuIds() const
933 {
934     return cpuIds_;
935 }
ThreadStates() const936 const std::deque<DataIndex>& PerfSample::ThreadStates() const
937 {
938     return threadStates_;
939 }
940 
Clear()941 void PerfSample::Clear()
942 {
943     CacheBase::Clear();
944     sampleIds_.clear();
945     tids_.clear();
946     eventCounts_.clear();
947     eventTypeIds_.clear();
948     timestampTraces_.clear();
949     cpuIds_.clear();
950     threadStates_.clear();
951 }
952 
AppendNewPerfThread(uint32_t pid,uint32_t tid,DataIndex threadName)953 size_t PerfThread::AppendNewPerfThread(uint32_t pid, uint32_t tid, DataIndex threadName)
954 {
955     ids_.emplace_back(Size());
956     pids_.emplace_back(pid);
957     tids_.emplace_back(tid);
958     threadNames_.emplace_back(threadName);
959     return Size() - 1;
960 }
Pids() const961 const std::deque<uint32_t>& PerfThread::Pids() const
962 {
963     return pids_;
964 }
Tids() const965 const std::deque<uint32_t>& PerfThread::Tids() const
966 {
967     return tids_;
968 }
ThreadNames() const969 const std::deque<DataIndex>& PerfThread::ThreadNames() const
970 {
971     return threadNames_;
972 }
Clear()973 void PerfThread::Clear()
974 {
975     CacheBase::Clear();
976     tids_.clear();
977     pids_.clear();
978     threadNames_.clear();
979 }
AppendNewPerfReport(DataIndex type,DataIndex value)980 size_t PerfReport::AppendNewPerfReport(DataIndex type, DataIndex value)
981 {
982     ids_.emplace_back(Size());
983     types_.emplace_back(type);
984     values_.emplace_back(value);
985     return Size() - 1;
986 }
Types() const987 const std::deque<DataIndex>& PerfReport::Types() const
988 {
989     return types_;
990 }
Values() const991 const std::deque<DataIndex>& PerfReport::Values() const
992 {
993     return values_;
994 }
AppendNewFilter(uint64_t id,DataIndex name,uint32_t internalPid)995 size_t ProcessMeasureFilter::AppendNewFilter(uint64_t id, DataIndex name, uint32_t internalPid)
996 {
997     internalPids_.emplace_back(internalPid);
998     ids_.emplace_back(id);
999     names_.emplace_back(name);
1000     return Size() - 1;
1001 }
AppendNewFilter(uint64_t id,DataIndex type,DataIndex name,uint64_t cpu)1002 size_t ClockEventData::AppendNewFilter(uint64_t id, DataIndex type, DataIndex name, uint64_t cpu)
1003 {
1004     cpus_.emplace_back(cpu);
1005     ids_.emplace_back(id);
1006     types_.emplace_back(type);
1007     names_.emplace_back(name);
1008     return Size() - 1;
1009 }
AppendNewFilter(uint64_t id,uint64_t rate,DataIndex name,uint64_t cpu)1010 size_t ClkEventData::AppendNewFilter(uint64_t id, uint64_t rate, DataIndex name, uint64_t cpu)
1011 {
1012     ids_.emplace_back(id);
1013     rates_.emplace_back(rate);
1014     names_.emplace_back(name);
1015     cpus_.emplace_back(cpu);
1016     return Size() - 1;
1017 }
AppendSysCallData(int64_t sysCallNum,DataIndex type,uint32_t ipid,uint64_t timeStamp,int64_t ret)1018 size_t SysCall::AppendSysCallData(int64_t sysCallNum, DataIndex type, uint32_t ipid, uint64_t timeStamp, int64_t ret)
1019 {
1020     sysCallNums_.emplace_back(sysCallNum);
1021     types_.emplace_back(type);
1022     ipids_.emplace_back(ipid);
1023     timeStamps_.emplace_back(timeStamp);
1024     rets_.emplace_back(ret);
1025     return Size() - 1;
1026 }
StatAndInfo()1027 StatAndInfo::StatAndInfo()
1028 {
1029     // sched_switch_received | sched_switch_not_match | sched_switch_not_not_supported etc.
1030     for (int32_t i = TRACE_EVENT_START; i < TRACE_EVENT_MAX; i++) {
1031         event_[i] = config_.eventNameMap_.at(static_cast<SupportedTraceEventType>(i));
1032     }
1033     for (int32_t j = STAT_EVENT_START; j < STAT_EVENT_MAX; j++) {
1034         stat_[j] = config_.eventErrorDescMap_.at(static_cast<StatType>(j));
1035     }
1036 
1037     for (int32_t i = TRACE_EVENT_START; i < TRACE_EVENT_MAX; i++) {
1038         for (int32_t j = STAT_EVENT_START; j < STAT_EVENT_MAX; j++) {
1039             statSeverity_[i][j] = config_.eventParserStatSeverityDescMap_.at(static_cast<SupportedTraceEventType>(i))
1040                                       .at(static_cast<StatType>(j));
1041         }
1042     }
1043 
1044     for (int32_t i = TRACE_EVENT_START; i < TRACE_EVENT_MAX; i++) {
1045         for (int32_t j = STAT_EVENT_START; j < STAT_EVENT_MAX; j++) {
1046             statSeverityDesc_[i][j] = config_.serverityLevelDescMap_.at(statSeverity_[i][j]);
1047         }
1048     }
1049 
1050     for (int32_t i = TRACE_EVENT_START; i < TRACE_EVENT_MAX; i++) {
1051         for (int32_t j = STAT_EVENT_START; j < STAT_EVENT_MAX; j++) {
1052             statCount_[i][j] = 0;
1053         }
1054     }
1055     clockid2ClockNameMap_ = {
1056         {TS_CLOCK_UNKNOW, "unknown"},        {TS_CLOCK_BOOTTIME, "boottime"},
1057         {TS_CLOCK_REALTIME, "realtime"},     {TS_CLOCK_REALTIME_COARSE, "realtime_corse"},
1058         {TS_MONOTONIC, "monotonic"},         {TS_MONOTONIC_COARSE, "monotonic-coarse"},
1059         {TS_MONOTONIC_RAW, "monotonic-raw"},
1060     };
1061 }
IncreaseStat(SupportedTraceEventType eventType,StatType type)1062 void StatAndInfo::IncreaseStat(SupportedTraceEventType eventType, StatType type)
1063 {
1064     statCount_[eventType][type]++;
1065 }
GetValue(SupportedTraceEventType eventType,StatType type) const1066 const uint32_t& StatAndInfo::GetValue(SupportedTraceEventType eventType, StatType type) const
1067 {
1068     return statCount_[eventType][type];
1069 }
GetEvent(SupportedTraceEventType eventType) const1070 const std::string& StatAndInfo::GetEvent(SupportedTraceEventType eventType) const
1071 {
1072     return event_[eventType];
1073 }
GetStat(StatType type) const1074 const std::string& StatAndInfo::GetStat(StatType type) const
1075 {
1076     return stat_[type];
1077 }
GetSeverityDesc(SupportedTraceEventType eventType,StatType type) const1078 const std::string& StatAndInfo::GetSeverityDesc(SupportedTraceEventType eventType, StatType type) const
1079 {
1080     return statSeverityDesc_[eventType][type];
1081 }
GetSeverity(SupportedTraceEventType eventType,StatType type) const1082 const StatSeverityLevel& StatAndInfo::GetSeverity(SupportedTraceEventType eventType, StatType type) const
1083 {
1084     return statSeverity_[eventType][type];
1085 }
1086 
Size() const1087 uint64_t SymbolsData::Size() const
1088 {
1089     return addrs_.size();
1090 }
InsertSymbol(const DataIndex & name,const uint64_t & addr)1091 void SymbolsData::InsertSymbol(const DataIndex& name, const uint64_t& addr)
1092 {
1093     addrs_.emplace_back(addr);
1094     funcName_.emplace_back(name);
1095 }
GetConstFuncNames() const1096 const std::deque<DataIndex>& SymbolsData::GetConstFuncNames() const
1097 {
1098     return funcName_;
1099 }
GetConstAddrs() const1100 const std::deque<uint64_t>& SymbolsData::GetConstAddrs() const
1101 {
1102     return addrs_;
1103 }
MetaData()1104 MetaData::MetaData()
1105 {
1106     columnNames_.resize(METADATA_ITEM_MAX);
1107     values_.resize(METADATA_ITEM_MAX);
1108     columnNames_[METADATA_ITEM_DATASIZE] = METADATA_ITEM_DATASIZE_COLNAME;
1109     columnNames_[METADATA_ITEM_PARSETOOL_NAME] = METADATA_ITEM_PARSETOOL_NAME_COLNAME;
1110     columnNames_[METADATA_ITEM_PARSERTOOL_VERSION] = METADATA_ITEM_PARSERTOOL_VERSION_COLNAME;
1111     columnNames_[METADATA_ITEM_PARSERTOOL_PUBLISH_DATETIME] = METADATA_ITEM_PARSERTOOL_PUBLISH_DATETIME_COLNAME;
1112     columnNames_[METADATA_ITEM_SOURCE_FILENAME] = METADATA_ITEM_SOURCE_FILENAME_COLNAME;
1113     columnNames_[METADATA_ITEM_OUTPUT_FILENAME] = METADATA_ITEM_OUTPUT_FILENAME_COLNAME;
1114     columnNames_[METADATA_ITEM_PARSERTIME] = METADATA_ITEM_PARSERTIME_COLNAME;
1115     columnNames_[METADATA_ITEM_TRACE_DURATION] = METADATA_ITEM_TRACE_DURATION_COLNAME;
1116     columnNames_[METADATA_ITEM_SOURCE_DATETYPE] = METADATA_ITEM_SOURCE_DATETYPE_COLNAME;
1117     values_[METADATA_ITEM_PARSETOOL_NAME] = "trace_streamer";
1118 }
SetTraceType(const std::string & traceType)1119 void MetaData::SetTraceType(const std::string& traceType)
1120 {
1121     values_[METADATA_ITEM_SOURCE_DATETYPE] = traceType;
1122 }
SetSourceFileName(const std::string & fileName)1123 void MetaData::SetSourceFileName(const std::string& fileName)
1124 {
1125     MetaData::values_[METADATA_ITEM_SOURCE_FILENAME] = fileName;
1126 }
SetOutputFileName(const std::string & fileName)1127 void MetaData::SetOutputFileName(const std::string& fileName)
1128 {
1129     MetaData::values_[METADATA_ITEM_OUTPUT_FILENAME] = fileName;
1130 }
SetParserToolVersion(const std::string & version)1131 void MetaData::SetParserToolVersion(const std::string& version)
1132 {
1133     values_[METADATA_ITEM_PARSERTOOL_VERSION] = version;
1134 }
SetParserToolPublishDateTime(const std::string & datetime)1135 void MetaData::SetParserToolPublishDateTime(const std::string& datetime)
1136 {
1137     values_[METADATA_ITEM_PARSERTOOL_PUBLISH_DATETIME] = datetime;
1138 }
SetTraceDataSize(uint64_t dataSize)1139 void MetaData::SetTraceDataSize(uint64_t dataSize)
1140 {
1141     std::stringstream ss;
1142     ss << dataSize;
1143     values_[METADATA_ITEM_DATASIZE] = ss.str();
1144     // 	Function 'time' may return error. It is not allowed to do anything that might fail inside the constructor.
1145     time_t rawtime;
1146     struct tm* timeinfo = nullptr;
1147     void(time(&rawtime));
1148     timeinfo = localtime(&rawtime);
1149     char buffer[MAX_SIZE_LEN];
1150     strftime(buffer, MAX_SIZE_LEN, "%Y-%m-%d %H:%M:%S", timeinfo);
1151     values_[METADATA_ITEM_PARSERTIME].append(buffer);
1152     // sometimes there will be a extra \n at last
1153     values_[METADATA_ITEM_PARSERTIME].pop_back();
1154 }
SetTraceDuration(uint64_t dur)1155 void MetaData::SetTraceDuration(uint64_t dur)
1156 {
1157     values_[METADATA_ITEM_TRACE_DURATION] = std::to_string(dur) + " s";
1158 }
Value(uint64_t row) const1159 const std::string& MetaData::Value(uint64_t row) const
1160 {
1161     return values_[row];
1162 }
Name(uint64_t row) const1163 const std::string& MetaData::Name(uint64_t row) const
1164 {
1165     return columnNames_[row];
1166 }
GetStringIndex(std::string_view str)1167 DataIndex DataDict::GetStringIndex(std::string_view str)
1168 {
1169     auto hashValue = hashFun(str);
1170     auto itor = dataDictInnerMap_.find(hashValue);
1171     if (itor != dataDictInnerMap_.end()) {
1172         return itor->second;
1173     }
1174     mutex_.lock();
1175     dataDict_.emplace_back(std::string(str));
1176     DataIndex stringIdentity = dataDict_.size() - 1;
1177     dataDictInnerMap_.emplace(hashValue, stringIdentity);
1178     mutex_.unlock();
1179     return stringIdentity;
1180 }
GetStringIndexNoWrite(std::string_view str) const1181 DataIndex DataDict::GetStringIndexNoWrite(std::string_view str) const
1182 {
1183     auto hashValue = hashFun(str);
1184     auto itor = dataDictInnerMap_.find(hashValue);
1185     if (itor != dataDictInnerMap_.end()) {
1186         return itor->second;
1187     }
1188     return INVALID_UINT64;
1189 }
AppendNewData(uint64_t newTimeStamp,uint64_t dur,double totalLoad,double userLoad,double systemLoad,int64_t threads)1190 size_t CpuUsageDetailData::AppendNewData(uint64_t newTimeStamp,
1191                                          uint64_t dur,
1192                                          double totalLoad,
1193                                          double userLoad,
1194                                          double systemLoad,
1195                                          int64_t threads)
1196 {
1197     timeStamps_.emplace_back(newTimeStamp);
1198     durs_.emplace_back(dur);
1199     totalLoad_.emplace_back(totalLoad);
1200     userLoad_.emplace_back(userLoad);
1201     systemLoad_.emplace_back(systemLoad);
1202     threads_.emplace_back(threads);
1203     return Size() - 1;
1204 }
Durs() const1205 const std::deque<uint64_t>& CpuUsageDetailData::Durs() const
1206 {
1207     return durs_;
1208 }
TotalLoad() const1209 const std::deque<double>& CpuUsageDetailData::TotalLoad() const
1210 {
1211     return totalLoad_;
1212 }
UserLoad() const1213 const std::deque<double>& CpuUsageDetailData::UserLoad() const
1214 {
1215     return userLoad_;
1216 }
SystemLoad() const1217 const std::deque<double>& CpuUsageDetailData::SystemLoad() const
1218 {
1219     return systemLoad_;
1220 }
Threads() const1221 const std::deque<int64_t>& CpuUsageDetailData::Threads() const
1222 {
1223     return threads_;
1224 }
AppendNewData(uint64_t newTimeStamp,uint64_t dur,int32_t processID,std::string processName,int32_t parentProcessID,int32_t uid,std::string userName,double cpuUsage,int32_t pssInfo,uint64_t cpuTime,int32_t threads,int64_t diskWrites,int64_t diskReads)1225 size_t LiveProcessDetailData::AppendNewData(uint64_t newTimeStamp,
1226                                             uint64_t dur,
1227                                             int32_t processID,
1228                                             std::string processName,
1229                                             int32_t parentProcessID,
1230                                             int32_t uid,
1231                                             std::string userName,
1232                                             double cpuUsage,
1233                                             int32_t pssInfo,
1234                                             uint64_t cpuTime,
1235                                             int32_t threads,
1236                                             int64_t diskWrites,
1237                                             int64_t diskReads)
1238 {
1239     timeStamps_.emplace_back(newTimeStamp);
1240     durs_.emplace_back(dur);
1241     processID_.emplace_back(processID);
1242     processName_.emplace_back(processName);
1243     parentProcessID_.emplace_back(parentProcessID);
1244     uid_.emplace_back(uid);
1245     userName_.emplace_back(userName);
1246     cpuUsage_.emplace_back(cpuUsage);
1247     pssInfo_.emplace_back(pssInfo);
1248     threads_.emplace_back(threads);
1249     diskWrites_.emplace_back(diskWrites);
1250     diskReads_.emplace_back(diskReads);
1251     cpuTimes_.emplace_back(cpuTime);
1252     return Size() - 1;
1253 }
Durs() const1254 const std::deque<uint64_t>& LiveProcessDetailData::Durs() const
1255 {
1256     return durs_;
1257 }
ProcessID() const1258 const std::deque<int32_t>& LiveProcessDetailData::ProcessID() const
1259 {
1260     return processID_;
1261 }
ProcessName() const1262 const std::deque<std::string>& LiveProcessDetailData::ProcessName() const
1263 {
1264     return processName_;
1265 }
ParentProcessID() const1266 const std::deque<int32_t>& LiveProcessDetailData::ParentProcessID() const
1267 {
1268     return parentProcessID_;
1269 }
Uid() const1270 const std::deque<int32_t>& LiveProcessDetailData::Uid() const
1271 {
1272     return uid_;
1273 }
UserName() const1274 const std::deque<std::string>& LiveProcessDetailData::UserName() const
1275 {
1276     return userName_;
1277 }
CpuUsage() const1278 const std::deque<double>& LiveProcessDetailData::CpuUsage() const
1279 {
1280     return cpuUsage_;
1281 }
PssInfo() const1282 const std::deque<int32_t>& LiveProcessDetailData::PssInfo() const
1283 {
1284     return pssInfo_;
1285 }
Threads() const1286 const std::deque<int32_t>& LiveProcessDetailData::Threads() const
1287 {
1288     return threads_;
1289 }
DiskWrites() const1290 const std::deque<int64_t>& LiveProcessDetailData::DiskWrites() const
1291 {
1292     return diskWrites_;
1293 }
DiskReads() const1294 const std::deque<int64_t>& LiveProcessDetailData::DiskReads() const
1295 {
1296     return diskReads_;
1297 }
1298 
CpuTimes() const1299 const std::deque<uint64_t>& LiveProcessDetailData::CpuTimes() const
1300 {
1301     return cpuTimes_;
1302 }
1303 
AppendNewNetData(uint64_t newTimeStamp,uint64_t tx,uint64_t rx,uint64_t dur,double rxSpeed,double txSpeed,uint64_t packetIn,double packetInSec,uint64_t packetOut,double packetOutSec,const std::string & netType)1304 size_t NetDetailData::AppendNewNetData(uint64_t newTimeStamp,
1305                                        uint64_t tx,
1306                                        uint64_t rx,
1307                                        uint64_t dur,
1308                                        double rxSpeed,
1309                                        double txSpeed,
1310                                        uint64_t packetIn,
1311                                        double packetInSec,
1312                                        uint64_t packetOut,
1313                                        double packetOutSec,
1314                                        const std::string& netType)
1315 {
1316     timeStamps_.emplace_back(newTimeStamp);
1317     txs_.emplace_back(tx);
1318     rxs_.emplace_back(rx);
1319     durs_.emplace_back(dur);
1320     txSpeeds_.emplace_back(txSpeed);
1321     rxSpeeds_.emplace_back(rxSpeed);
1322     netTypes_.emplace_back(netType);
1323     packetIn_.emplace_back(packetIn);
1324     packetInSec_.emplace_back(packetInSec);
1325     packetOut_.emplace_back(packetOut);
1326     packetOutSec_.emplace_back(packetOutSec);
1327 
1328     return Size() - 1;
1329 }
Durs() const1330 const std::deque<uint64_t>& NetDetailData::Durs() const
1331 {
1332     return durs_;
1333 }
RxSpeed() const1334 const std::deque<double>& NetDetailData::RxSpeed() const
1335 {
1336     return rxSpeeds_;
1337 }
TxSpeed() const1338 const std::deque<double>& NetDetailData::TxSpeed() const
1339 {
1340     return txSpeeds_;
1341 }
NetTypes() const1342 const std::deque<std::string>& NetDetailData::NetTypes() const
1343 {
1344     return netTypes_;
1345 }
RxDatas() const1346 const std::deque<uint64_t>& NetDetailData::RxDatas() const
1347 {
1348     return rxs_;
1349 }
TxDatas() const1350 const std::deque<uint64_t>& NetDetailData::TxDatas() const
1351 {
1352     return txs_;
1353 }
PacketIn() const1354 const std::deque<uint64_t>& NetDetailData::PacketIn() const
1355 {
1356     return packetIn_;
1357 }
PacketInSec() const1358 const std::deque<double>& NetDetailData::PacketInSec() const
1359 {
1360     return packetInSec_;
1361 }
PacketOut() const1362 const std::deque<uint64_t>& NetDetailData::PacketOut() const
1363 {
1364     return packetOut_;
1365 }
PacketOutSec() const1366 const std::deque<double>& NetDetailData::PacketOutSec() const
1367 {
1368     return packetOutSec_;
1369 }
1370 
AppendNewData(uint64_t ts,uint64_t dur,uint64_t rd,uint64_t wr,uint64_t rdPerSec,uint64_t wrPerSec,double rdCountPerSec,double wrCountPerSec,uint64_t rdCount,uint64_t wrCount)1371 void DiskIOData::AppendNewData(uint64_t ts,
1372                                uint64_t dur,
1373                                uint64_t rd,
1374                                uint64_t wr,
1375                                uint64_t rdPerSec,
1376                                uint64_t wrPerSec,
1377                                double rdCountPerSec,
1378                                double wrCountPerSec,
1379                                uint64_t rdCount,
1380                                uint64_t wrCount)
1381 {
1382     timeStamps_.emplace_back(ts);
1383     durs_.emplace_back(dur);
1384     rdDatas_.emplace_back(rd);
1385     wrDatas_.emplace_back(wr);
1386     rdPerSec_.emplace_back(rdPerSec);
1387     wrPerSec_.emplace_back(wrPerSec);
1388     rdCountPerSec_.emplace_back(rdCountPerSec);
1389     wrCountPerSec_.emplace_back(wrCountPerSec);
1390     rdCountDatas_.emplace_back(rdCount);
1391     wrCountDatas_.emplace_back(wrCount);
1392 }
Durs() const1393 const std::deque<uint64_t>& DiskIOData::Durs() const
1394 {
1395     return durs_;
1396 }
RdDatas() const1397 const std::deque<uint64_t>& DiskIOData::RdDatas() const
1398 {
1399     return rdDatas_;
1400 }
WrDatas() const1401 const std::deque<uint64_t>& DiskIOData::WrDatas() const
1402 {
1403     return wrDatas_;
1404 }
RdSpeedDatas() const1405 const std::deque<double>& DiskIOData::RdSpeedDatas() const
1406 {
1407     return rdPerSec_;
1408 }
WrSpeedDatas() const1409 const std::deque<double>& DiskIOData::WrSpeedDatas() const
1410 {
1411     return wrPerSec_;
1412 }
1413 
RdCountPerSecDatas() const1414 const std::deque<double>& DiskIOData::RdCountPerSecDatas() const
1415 {
1416     return rdCountPerSec_;
1417 }
WrCountPerSecDatas() const1418 const std::deque<double>& DiskIOData::WrCountPerSecDatas() const
1419 {
1420     return wrCountPerSec_;
1421 }
RdCountDatas() const1422 const std::deque<uint64_t>& DiskIOData::RdCountDatas() const
1423 {
1424     return rdCountDatas_;
1425 }
WrCountDatas() const1426 const std::deque<uint64_t>& DiskIOData::WrCountDatas() const
1427 {
1428     return wrCountDatas_;
1429 }
1430 
AppendNewData(uint32_t callChainId,uint16_t type,uint32_t ipid,uint32_t itid,uint64_t startTs,uint64_t endTs,uint64_t dur,DataIndex returnValue,DataIndex errorCode,size_t size,int32_t fd,DataIndex fileId,DataIndex firstArgument,DataIndex secondArgument,DataIndex thirdArgument,DataIndex fourthArgument)1431 size_t FileSystemSample::AppendNewData(uint32_t callChainId,
1432                                        uint16_t type,
1433                                        uint32_t ipid,
1434                                        uint32_t itid,
1435                                        uint64_t startTs,
1436                                        uint64_t endTs,
1437                                        uint64_t dur,
1438                                        DataIndex returnValue,
1439                                        DataIndex errorCode,
1440                                        size_t size,
1441                                        int32_t fd,
1442                                        DataIndex fileId,
1443                                        DataIndex firstArgument,
1444                                        DataIndex secondArgument,
1445                                        DataIndex thirdArgument,
1446                                        DataIndex fourthArgument)
1447 {
1448     callChainIds_.emplace_back(callChainId);
1449     types_.emplace_back(type);
1450     ipids_.emplace_back(ipid);
1451     itids_.emplace_back(itid);
1452     startTs_.emplace_back(startTs);
1453     endTs_.emplace_back(endTs);
1454     durs_.emplace_back(dur);
1455     returnValues_.emplace_back(returnValue);
1456     errorCodes_.emplace_back(errorCode);
1457     fds_.emplace_back(fd);
1458     fileIds_.emplace_back(fileId);
1459     Sizes_.emplace_back(size);
1460     firstArguments_.emplace_back(firstArgument);
1461     secondArguments_.emplace_back(secondArgument);
1462     thirdArguments_.emplace_back(thirdArgument);
1463     fourthArguments_.emplace_back(fourthArgument);
1464     ids_.emplace_back(Size());
1465     return Size() - 1;
1466 }
CallChainIds() const1467 const std::deque<uint32_t>& FileSystemSample::CallChainIds() const
1468 {
1469     return callChainIds_;
1470 }
Types() const1471 const std::deque<uint16_t>& FileSystemSample::Types() const
1472 {
1473     return types_;
1474 }
Ipids() const1475 const std::deque<uint32_t>& FileSystemSample::Ipids() const
1476 {
1477     return ipids_;
1478 }
Itids() const1479 const std::deque<uint32_t>& FileSystemSample::Itids() const
1480 {
1481     return itids_;
1482 }
StartTs() const1483 const std::deque<uint64_t>& FileSystemSample::StartTs() const
1484 {
1485     return startTs_;
1486 }
EndTs() const1487 const std::deque<uint64_t>& FileSystemSample::EndTs() const
1488 {
1489     return endTs_;
1490 }
Durs() const1491 const std::deque<uint64_t>& FileSystemSample::Durs() const
1492 {
1493     return durs_;
1494 }
ReturnValues() const1495 const std::deque<DataIndex>& FileSystemSample::ReturnValues() const
1496 {
1497     return returnValues_;
1498 }
ErrorCodes() const1499 const std::deque<DataIndex>& FileSystemSample::ErrorCodes() const
1500 {
1501     return errorCodes_;
1502 }
Fds() const1503 const std::deque<int32_t>& FileSystemSample::Fds() const
1504 {
1505     return fds_;
1506 }
FileIds() const1507 const std::deque<DataIndex>& FileSystemSample::FileIds() const
1508 {
1509     return fileIds_;
1510 }
Sizes() const1511 const std::deque<size_t>& FileSystemSample::Sizes() const
1512 {
1513     return Sizes_;
1514 }
FirstArguments() const1515 const std::deque<DataIndex>& FileSystemSample::FirstArguments() const
1516 {
1517     return firstArguments_;
1518 }
SecondArguments() const1519 const std::deque<DataIndex>& FileSystemSample::SecondArguments() const
1520 {
1521     return secondArguments_;
1522 }
ThirdArguments() const1523 const std::deque<DataIndex>& FileSystemSample::ThirdArguments() const
1524 {
1525     return thirdArguments_;
1526 }
FourthArguments() const1527 const std::deque<DataIndex>& FileSystemSample::FourthArguments() const
1528 {
1529     return fourthArguments_;
1530 }
1531 
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)1532 size_t PagedMemorySampleData::AppendNewData(uint32_t callChainId,
1533                                             uint16_t type,
1534                                             uint32_t ipid,
1535                                             uint64_t startTs,
1536                                             uint64_t endTs,
1537                                             uint64_t dur,
1538                                             size_t size,
1539                                             DataIndex addr,
1540                                             uint32_t itid)
1541 {
1542     callChainIds_.emplace_back(callChainId);
1543     types_.emplace_back(type);
1544     ipids_.emplace_back(ipid);
1545     startTs_.emplace_back(startTs);
1546     endTs_.emplace_back(endTs);
1547     durs_.emplace_back(dur);
1548     Sizes_.emplace_back(size);
1549     addrs_.emplace_back(addr);
1550     itids_.emplace_back(itid);
1551     ids_.emplace_back(Size());
1552     return Size() - 1;
1553 }
CallChainIds() const1554 const std::deque<uint32_t>& PagedMemorySampleData::CallChainIds() const
1555 {
1556     return callChainIds_;
1557 }
Types() const1558 const std::deque<uint16_t>& PagedMemorySampleData::Types() const
1559 {
1560     return types_;
1561 }
Ipids() const1562 const std::deque<uint32_t>& PagedMemorySampleData::Ipids() const
1563 {
1564     return ipids_;
1565 }
Itids() const1566 const std::deque<uint32_t>& PagedMemorySampleData::Itids() const
1567 {
1568     return itids_;
1569 }
StartTs() const1570 const std::deque<uint64_t>& PagedMemorySampleData::StartTs() const
1571 {
1572     return startTs_;
1573 }
EndTs() const1574 const std::deque<uint64_t>& PagedMemorySampleData::EndTs() const
1575 {
1576     return endTs_;
1577 }
Durs() const1578 const std::deque<uint64_t>& PagedMemorySampleData::Durs() const
1579 {
1580     return durs_;
1581 }
Sizes() const1582 const std::deque<size_t>& PagedMemorySampleData::Sizes() const
1583 {
1584     return Sizes_;
1585 }
Addr() const1586 const std::deque<DataIndex>& PagedMemorySampleData::Addr() const
1587 {
1588     return addrs_;
1589 }
1590 
AppendNewData(uint32_t callChainId,uint32_t depth,DataIndex ip,DataIndex symbolId,DataIndex filePathId)1591 size_t EbpfCallStackData::AppendNewData(uint32_t callChainId,
1592                                         uint32_t depth,
1593                                         DataIndex ip,
1594                                         DataIndex symbolId,
1595                                         DataIndex filePathId)
1596 {
1597     callChainIds_.emplace_back(callChainId);
1598     depths_.emplace_back(depth);
1599     ips_.emplace_back(ip);
1600     symbolIds_.emplace_back(symbolId);
1601     filePathIds_.emplace_back(filePathId);
1602     ids_.emplace_back(Size());
1603     return Size() - 1;
1604 }
UpdateSymbolAndFilePathIndex(size_t row,DataIndex symbolId,DataIndex filePathId)1605 void EbpfCallStackData::UpdateSymbolAndFilePathIndex(size_t row, DataIndex symbolId, DataIndex filePathId)
1606 {
1607     if (row >= Size()) {
1608         TS_LOGE("The updated row does not exist!");
1609         return;
1610     }
1611     symbolIds_[row] = symbolId;
1612     filePathIds_[row] = filePathId;
1613 }
CallChainIds() const1614 const std::deque<uint32_t>& EbpfCallStackData::CallChainIds() const
1615 {
1616     return callChainIds_;
1617 }
Depths() const1618 const std::deque<uint32_t>& EbpfCallStackData::Depths() const
1619 {
1620     return depths_;
1621 }
Ips() const1622 const std::deque<DataIndex>& EbpfCallStackData::Ips() const
1623 {
1624     return ips_;
1625 }
SymbolIds() const1626 const std::deque<DataIndex>& EbpfCallStackData::SymbolIds() const
1627 {
1628     return symbolIds_;
1629 }
FilePathIds() const1630 const std::deque<DataIndex>& EbpfCallStackData::FilePathIds() const
1631 {
1632     return filePathIds_;
1633 }
1634 #if WITH_EBPF_HELP
AppendNewData(uint64_t start,uint64_t end,uint32_t offset,uint32_t pid,uint32_t fileNameLen,uint64_t fileNameIndex)1635 size_t EbpfProcessMaps::AppendNewData(uint64_t start,
1636                                       uint64_t end,
1637                                       uint32_t offset,
1638                                       uint32_t pid,
1639                                       uint32_t fileNameLen,
1640                                       uint64_t fileNameIndex)
1641 {
1642     starts_.emplace_back(start);
1643     ends_.emplace_back(end);
1644     offsets_.emplace_back(offset);
1645     pids_.emplace_back(pid);
1646     fileNameLens_.emplace_back(fileNameLen);
1647     fileNameIndexs_.emplace_back(fileNameIndex);
1648     ids_.emplace_back(Size());
1649     return Size() - 1;
1650 }
1651 
Starts() const1652 const std::deque<uint64_t>& EbpfProcessMaps::Starts() const
1653 {
1654     return starts_;
1655 }
Ends() const1656 const std::deque<uint64_t>& EbpfProcessMaps::Ends() const
1657 {
1658     return ends_;
1659 }
Offsets() const1660 const std::deque<uint32_t>& EbpfProcessMaps::Offsets() const
1661 {
1662     return offsets_;
1663 }
Pids() const1664 const std::deque<uint32_t>& EbpfProcessMaps::Pids() const
1665 {
1666     return pids_;
1667 }
FileNameLens() const1668 const std::deque<uint32_t>& EbpfProcessMaps::FileNameLens() const
1669 {
1670     return fileNameLens_;
1671 }
FileNameIndexs() const1672 const std::deque<uint64_t>& EbpfProcessMaps::FileNameIndexs() const
1673 {
1674     return fileNameIndexs_;
1675 }
1676 
AppendNewData(uint64_t elfId,uint64_t textVaddr,uint32_t textOffset,uint32_t strTabLen,uint32_t symTabLen,uint32_t fileNameLen,uint32_t symEntLen,uint64_t fileNameIndex)1677 size_t EbpfElf::AppendNewData(uint64_t elfId,
1678                               uint64_t textVaddr,
1679                               uint32_t textOffset,
1680                               uint32_t strTabLen,
1681                               uint32_t symTabLen,
1682                               uint32_t fileNameLen,
1683                               uint32_t symEntLen,
1684                               uint64_t fileNameIndex)
1685 {
1686     elfIds_.emplace_back(elfId);
1687     textVaddrs_.emplace_back(textVaddr);
1688     textOffsets_.emplace_back(textOffset);
1689     strTabLens_.emplace_back(strTabLen);
1690     symTabLens_.emplace_back(symTabLen);
1691     fileNameLens_.emplace_back(fileNameLen);
1692     symEntLens_.emplace_back(symEntLen);
1693     fileNameIndexs_.emplace_back(fileNameIndex);
1694     ids_.emplace_back(Size());
1695     return Size() - 1;
1696 }
ElfIds() const1697 const std::deque<uint64_t>& EbpfElf::ElfIds() const
1698 {
1699     return elfIds_;
1700 }
TextVaddrs() const1701 const std::deque<uint64_t>& EbpfElf::TextVaddrs() const
1702 {
1703     return textVaddrs_;
1704 }
TextOffsets() const1705 const std::deque<uint32_t>& EbpfElf::TextOffsets() const
1706 {
1707     return textOffsets_;
1708 }
StrTabLens() const1709 const std::deque<uint32_t>& EbpfElf::StrTabLens() const
1710 {
1711     return strTabLens_;
1712 }
SymTabLens() const1713 const std::deque<uint32_t>& EbpfElf::SymTabLens() const
1714 {
1715     return symTabLens_;
1716 }
FileNameLens() const1717 const std::deque<uint32_t>& EbpfElf::FileNameLens() const
1718 {
1719     return fileNameLens_;
1720 }
SymEntLens() const1721 const std::deque<uint32_t>& EbpfElf::SymEntLens() const
1722 {
1723     return symEntLens_;
1724 }
FileNameIndexs() const1725 const std::deque<uint64_t>& EbpfElf::FileNameIndexs() const
1726 {
1727     return fileNameIndexs_;
1728 }
1729 
AppendNewData(uint64_t elfId,uint32_t stName,uint64_t stValue,uint64_t stSize)1730 size_t EbpfElfSymbol::AppendNewData(uint64_t elfId, uint32_t stName, uint64_t stValue, uint64_t stSize)
1731 {
1732     elfIds_.emplace_back(elfId);
1733     stNames_.emplace_back(stName);
1734     stValues_.emplace_back(stValue);
1735     stSizes_.emplace_back(stSize);
1736     ids_.emplace_back(Size());
1737     return Size() - 1;
1738 }
ElfIds() const1739 const std::deque<uint64_t>& EbpfElfSymbol::ElfIds() const
1740 {
1741     return elfIds_;
1742 }
StNames() const1743 const std::deque<uint32_t>& EbpfElfSymbol::StNames() const
1744 {
1745     return stNames_;
1746 }
StValues() const1747 const std::deque<uint64_t>& EbpfElfSymbol::StValues() const
1748 {
1749     return stValues_;
1750 }
StSizes() const1751 const std::deque<uint64_t>& EbpfElfSymbol::StSizes() const
1752 {
1753     return stSizes_;
1754 }
1755 #endif
AppendAppName(uint8_t flags,DataIndex eventSource,DataIndex appName)1756 uint32_t AppNames::AppendAppName(uint8_t flags, DataIndex eventSource, DataIndex appName)
1757 {
1758     flags_.push_back(flags);
1759     appNames_.push_back(eventSource);
1760     keyNames_.push_back(appName);
1761     ids_.push_back(keyNames_.size() - 1);
1762     return Size() - 1;
1763 }
Falgs() const1764 const std::deque<uint8_t>& AppNames::Falgs() const
1765 {
1766     return flags_;
1767 }
EventSourceId() const1768 const std::deque<DataIndex>& AppNames::EventSourceId() const
1769 {
1770     return appNames_;
1771 }
AppName() const1772 const std::deque<DataIndex>& AppNames::AppName() const
1773 {
1774     return keyNames_;
1775 }
1776 
AppendData(uint64_t serial,uint64_t ts,uint32_t nameId,uint32_t keyId,int32_t type,double numericValue,DataIndex stringValue)1777 void SysEventMeasureData::AppendData(uint64_t serial,
1778                                      uint64_t ts,
1779                                      uint32_t nameId,
1780                                      uint32_t keyId,
1781                                      int32_t type,
1782                                      double numericValue,
1783                                      DataIndex stringValue)
1784 {
1785     serial_.emplace_back(serial);
1786     ts_.emplace_back(ts);
1787     nameFilterIds_.emplace_back(nameId);
1788     appKeyFilterIds_.emplace_back(keyId);
1789     types_.emplace_back(type);
1790     numValues_.emplace_back(numericValue);
1791     stringValues_.emplace_back(stringValue);
1792     ids_.push_back(rowCount_);
1793     rowCount_++;
1794 }
Serial() const1795 const std::deque<uint64_t>& SysEventMeasureData::Serial() const
1796 {
1797     return serial_;
1798 }
Ts() const1799 const std::deque<uint64_t>& SysEventMeasureData::Ts() const
1800 {
1801     return ts_;
1802 }
NameFilterId() const1803 const std::deque<uint32_t>& SysEventMeasureData::NameFilterId() const
1804 {
1805     return nameFilterIds_;
1806 }
AppKeyFilterId() const1807 const std::deque<uint32_t>& SysEventMeasureData::AppKeyFilterId() const
1808 {
1809     return appKeyFilterIds_;
1810 }
Type() const1811 const std::deque<int32_t>& SysEventMeasureData::Type() const
1812 {
1813     return types_;
1814 }
NumValue() const1815 const std::deque<double>& SysEventMeasureData::NumValue() const
1816 {
1817     return numValues_;
1818 }
StringValue() const1819 const std::deque<DataIndex>& SysEventMeasureData::StringValue() const
1820 {
1821     return stringValues_;
1822 }
AppendNewData(int32_t brightness,int32_t btState,int32_t location,int32_t wifi,int32_t streamDefault,int32_t voiceCall,int32_t music,int32_t streamRing,int32_t media,int32_t voiceAssistant,int32_t system,int32_t alarm,int32_t notification,int32_t btSco,int32_t enforcedAudible,int32_t streamDtmf,int32_t streamTts,int32_t accessibility,int32_t recording,int32_t streamAll)1823 void DeviceStateData::AppendNewData(int32_t brightness,
1824                                     int32_t btState,
1825                                     int32_t location,
1826                                     int32_t wifi,
1827                                     int32_t streamDefault,
1828                                     int32_t voiceCall,
1829                                     int32_t music,
1830                                     int32_t streamRing,
1831                                     int32_t media,
1832                                     int32_t voiceAssistant,
1833                                     int32_t system,
1834                                     int32_t alarm,
1835                                     int32_t notification,
1836                                     int32_t btSco,
1837                                     int32_t enforcedAudible,
1838                                     int32_t streamDtmf,
1839                                     int32_t streamTts,
1840                                     int32_t accessibility,
1841                                     int32_t recording,
1842                                     int32_t streamAll)
1843 {
1844     brightness_.emplace_back(brightness);
1845     btStates_.emplace_back(btState);
1846     locations_.emplace_back(location);
1847     wifis_.emplace_back(wifi);
1848     streamDefaults_.emplace_back(streamDefault);
1849     voiceCalls_.emplace_back(voiceCall);
1850     musics_.emplace_back(music);
1851     streamRings_.emplace_back(streamRing);
1852     medias_.emplace_back(media);
1853     voiceAssistants_.emplace_back(voiceAssistant);
1854     systems_.emplace_back(system);
1855     alarms_.emplace_back(alarm);
1856     notifications_.emplace_back(notification);
1857     btScos_.emplace_back(btSco);
1858     enforcedAudibles_.emplace_back(enforcedAudible);
1859     streamDtmfs_.emplace_back(streamDtmf);
1860     streamTts_.emplace_back(streamTts);
1861     accessibilitys_.emplace_back(accessibility);
1862     recordings_.emplace_back(recording);
1863     streamAlls_.emplace_back(streamAll);
1864     ids_.push_back(rowCounts_);
1865     rowCounts_++;
1866 }
Brightness() const1867 const std::deque<int32_t>& DeviceStateData::Brightness() const
1868 {
1869     return brightness_;
1870 }
BtState() const1871 const std::deque<int32_t>& DeviceStateData::BtState() const
1872 {
1873     return btStates_;
1874 }
Location() const1875 const std::deque<int32_t>& DeviceStateData::Location() const
1876 {
1877     return locations_;
1878 }
Wifi() const1879 const std::deque<int32_t>& DeviceStateData::Wifi() const
1880 {
1881     return wifis_;
1882 }
StreamDefault() const1883 const std::deque<int32_t>& DeviceStateData::StreamDefault() const
1884 {
1885     return streamDefaults_;
1886 }
VoiceCall() const1887 const std::deque<int32_t>& DeviceStateData::VoiceCall() const
1888 {
1889     return voiceCalls_;
1890 }
Music() const1891 const std::deque<int32_t>& DeviceStateData::Music() const
1892 {
1893     return musics_;
1894 }
StreamRing() const1895 const std::deque<int32_t>& DeviceStateData::StreamRing() const
1896 {
1897     return streamRings_;
1898 }
Media() const1899 const std::deque<int32_t>& DeviceStateData::Media() const
1900 {
1901     return medias_;
1902 }
VoiceAssistant() const1903 const std::deque<int32_t>& DeviceStateData::VoiceAssistant() const
1904 {
1905     return voiceAssistants_;
1906 }
System() const1907 const std::deque<int32_t>& DeviceStateData::System() const
1908 {
1909     return systems_;
1910 }
Alarm() const1911 const std::deque<int32_t>& DeviceStateData::Alarm() const
1912 {
1913     return alarms_;
1914 }
Notification() const1915 const std::deque<int32_t>& DeviceStateData::Notification() const
1916 {
1917     return notifications_;
1918 }
BtSco() const1919 const std::deque<int32_t>& DeviceStateData::BtSco() const
1920 {
1921     return btScos_;
1922 }
EnforcedAudible() const1923 const std::deque<int32_t>& DeviceStateData::EnforcedAudible() const
1924 {
1925     return enforcedAudibles_;
1926 }
StreamDtmf() const1927 const std::deque<int32_t>& DeviceStateData::StreamDtmf() const
1928 {
1929     return streamDtmfs_;
1930 }
StreamTts() const1931 const std::deque<int32_t>& DeviceStateData::StreamTts() const
1932 {
1933     return streamTts_;
1934 }
Accessibility() const1935 const std::deque<int32_t>& DeviceStateData::Accessibility() const
1936 {
1937     return accessibilitys_;
1938 }
Recording() const1939 const std::deque<int32_t>& DeviceStateData::Recording() const
1940 {
1941     return recordings_;
1942 }
StreamAll() const1943 const std::deque<int32_t>& DeviceStateData::StreamAll() const
1944 {
1945     return streamAlls_;
1946 }
AppendNewData(std::string traceSource,std::string key,std::string value)1947 void TraceConfigData::AppendNewData(std::string traceSource, std::string key, std::string value)
1948 {
1949     traceSource_.emplace_back(traceSource);
1950     key_.emplace_back(key);
1951     value_.emplace_back(value);
1952     ids_.push_back(rowCounts_);
1953     rowCounts_++;
1954 }
TraceSource() const1955 const std::deque<std::string>& TraceConfigData::TraceSource() const
1956 {
1957     return traceSource_;
1958 }
Key() const1959 const std::deque<std::string>& TraceConfigData::Key() const
1960 {
1961     return key_;
1962 }
Value() const1963 const std::deque<std::string>& TraceConfigData::Value() const
1964 {
1965     return value_;
1966 }
AppendNewData(uint64_t timeStamp,uint64_t ipid,std::string startAddr,std::string endAddr,uint64_t dirty,uint64_t swapper,uint64_t rss,uint64_t pss,uint64_t size,double reside,DataIndex protectionId,DataIndex pathId,uint64_t shared_clean,uint64_t shared_dirty,uint64_t private_clean,uint64_t private_dirty,uint64_t swap,uint64_t swap_pss,uint32_t type)1967 void SmapsData::AppendNewData(uint64_t timeStamp,
1968                               uint64_t ipid,
1969                               std::string startAddr,
1970                               std::string endAddr,
1971                               uint64_t dirty,
1972                               uint64_t swapper,
1973                               uint64_t rss,
1974                               uint64_t pss,
1975                               uint64_t size,
1976                               double reside,
1977                               DataIndex protectionId,
1978                               DataIndex pathId,
1979                               uint64_t shared_clean,
1980                               uint64_t shared_dirty,
1981                               uint64_t private_clean,
1982                               uint64_t private_dirty,
1983                               uint64_t swap,
1984                               uint64_t swap_pss,
1985                               uint32_t type)
1986 {
1987     timeStamps_.emplace_back(timeStamp);
1988     ipids_.emplace_back(ipid);
1989     startAddrs_.emplace_back(startAddr);
1990     endAddrs_.emplace_back(endAddr);
1991     dirtys_.emplace_back(dirty);
1992     swappers_.emplace_back(swapper);
1993     rss_.emplace_back(rss);
1994     pss_.emplace_back(pss);
1995     sizes_.emplace_back(size);
1996     resides_.emplace_back(reside);
1997     protectionIds_.emplace_back(protectionId);
1998     pathIds_.emplace_back(pathId);
1999     sharedClean_.emplace_back(shared_clean);
2000     sharedDirty_.emplace_back(shared_dirty);
2001     privateClean_.emplace_back(private_clean);
2002     privateDirty_.emplace_back(private_dirty);
2003     swap_.emplace_back(swap);
2004     swapPss_.emplace_back(swap_pss);
2005     type_.emplace_back(type);
2006     ids_.push_back(rowCount_);
2007     rowCount_++;
2008 }
TimeStamps() const2009 const std::deque<uint64_t>& SmapsData::TimeStamps() const
2010 {
2011     return timeStamps_;
2012 }
Ipids() const2013 const std::deque<uint64_t>& SmapsData::Ipids() const
2014 {
2015     return ipids_;
2016 }
StartAddrs() const2017 const std::deque<std::string>& SmapsData::StartAddrs() const
2018 {
2019     return startAddrs_;
2020 }
EndAddrs() const2021 const std::deque<std::string>& SmapsData::EndAddrs() const
2022 {
2023     return endAddrs_;
2024 }
Dirtys() const2025 const std::deque<uint64_t>& SmapsData::Dirtys() const
2026 {
2027     return dirtys_;
2028 }
Swappers() const2029 const std::deque<uint64_t>& SmapsData::Swappers() const
2030 {
2031     return swappers_;
2032 }
Rss() const2033 const std::deque<uint64_t>& SmapsData::Rss() const
2034 {
2035     return rss_;
2036 }
Pss() const2037 const std::deque<uint64_t>& SmapsData::Pss() const
2038 {
2039     return pss_;
2040 }
Sizes() const2041 const std::deque<uint64_t>& SmapsData::Sizes() const
2042 {
2043     return sizes_;
2044 }
Resides() const2045 const std::deque<double>& SmapsData::Resides() const
2046 {
2047     return resides_;
2048 }
ProtectionIds() const2049 const std::deque<DataIndex>& SmapsData::ProtectionIds() const
2050 {
2051     return protectionIds_;
2052 }
PathIds() const2053 const std::deque<DataIndex>& SmapsData::PathIds() const
2054 {
2055     return pathIds_;
2056 }
SharedClean() const2057 const std::deque<uint64_t>& SmapsData::SharedClean() const
2058 {
2059     return sharedClean_;
2060 }
SharedDirty() const2061 const std::deque<uint64_t>& SmapsData::SharedDirty() const
2062 {
2063     return sharedDirty_;
2064 }
PrivateClean() const2065 const std::deque<uint64_t>& SmapsData::PrivateClean() const
2066 {
2067     return privateClean_;
2068 }
PrivateDirty() const2069 const std::deque<uint64_t>& SmapsData::PrivateDirty() const
2070 {
2071     return privateDirty_;
2072 }
Swap() const2073 const std::deque<uint64_t>& SmapsData::Swap() const
2074 {
2075     return swap_;
2076 }
SwapPss() const2077 const std::deque<uint64_t>& SmapsData::SwapPss() const
2078 {
2079     return swapPss_;
2080 }
Type() const2081 const std::deque<uint32_t>& SmapsData::Type() const
2082 {
2083     return type_;
2084 }
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)2085 void BioLatencySampleData::AppendNewData(uint32_t callChainId,
2086                                          uint64_t type,
2087                                          uint32_t ipid,
2088                                          uint32_t itid,
2089                                          uint64_t startTs,
2090                                          uint64_t endTs,
2091                                          uint64_t latencyDur,
2092                                          uint32_t tier,
2093                                          uint64_t size,
2094                                          uint64_t blockNumber,
2095                                          uint64_t filePathId,
2096                                          uint64_t durPer4k)
2097 {
2098     callChainIds_.emplace_back(callChainId);
2099     types_.emplace_back(type);
2100     ipids_.emplace_back(ipid);
2101     itids_.emplace_back(itid);
2102     startTs_.emplace_back(startTs);
2103     endTs_.emplace_back(endTs);
2104     latencyDurs_.emplace_back(latencyDur);
2105     tiers_.emplace_back(tier);
2106     sizes_.emplace_back(size);
2107     blockNumbers_.emplace_back(blockNumber);
2108     filePathIds_.emplace_back(filePathId);
2109     durPer4ks_.emplace_back(durPer4k);
2110     ids_.emplace_back(rowCount_);
2111     rowCount_++;
2112 }
CallChainIds() const2113 const std::deque<uint32_t>& BioLatencySampleData::CallChainIds() const
2114 {
2115     return callChainIds_;
2116 }
Types() const2117 const std::deque<uint64_t>& BioLatencySampleData::Types() const
2118 {
2119     return types_;
2120 }
Ipids() const2121 const std::deque<uint32_t>& BioLatencySampleData::Ipids() const
2122 {
2123     return ipids_;
2124 }
Itids() const2125 const std::deque<uint32_t>& BioLatencySampleData::Itids() const
2126 {
2127     return itids_;
2128 }
StartTs() const2129 const std::deque<uint64_t>& BioLatencySampleData::StartTs() const
2130 {
2131     return startTs_;
2132 }
EndTs() const2133 const std::deque<uint64_t>& BioLatencySampleData::EndTs() const
2134 {
2135     return endTs_;
2136 }
LatencyDurs() const2137 const std::deque<uint64_t>& BioLatencySampleData::LatencyDurs() const
2138 {
2139     return latencyDurs_;
2140 }
Tiers() const2141 const std::deque<uint32_t>& BioLatencySampleData::Tiers() const
2142 {
2143     return tiers_;
2144 }
Sizes() const2145 const std::deque<uint64_t>& BioLatencySampleData::Sizes() const
2146 {
2147     return sizes_;
2148 }
BlockNumbers() const2149 const std::deque<uint64_t>& BioLatencySampleData::BlockNumbers() const
2150 {
2151     return blockNumbers_;
2152 }
FilePathIds() const2153 const std::deque<uint64_t>& BioLatencySampleData::FilePathIds() const
2154 {
2155     return filePathIds_;
2156 }
DurPer4k() const2157 const std::deque<uint64_t>& BioLatencySampleData::DurPer4k() const
2158 {
2159     return durPer4ks_;
2160 }
DataSourceClockIdData()2161 DataSourceClockIdData::DataSourceClockIdData()
2162     : dataSource2ClockIdMap_({{DATA_SOURCE_TYPE_TRACE, TS_CLOCK_UNKNOW},
2163                               {DATA_SOURCE_TYPE_MEM, TS_CLOCK_UNKNOW},
2164                               {DATA_SOURCE_TYPE_HILOG, TS_CLOCK_UNKNOW},
2165                               {DATA_SOURCE_TYPE_NATIVEHOOK, TS_CLOCK_UNKNOW},
2166                               {DATA_SOURCE_TYPE_FPS, TS_CLOCK_UNKNOW},
2167                               {DATA_SOURCE_TYPE_NETWORK, TS_CLOCK_UNKNOW},
2168                               {DATA_SOURCE_TYPE_DISKIO, TS_CLOCK_UNKNOW},
2169                               {DATA_SOURCE_TYPE_CPU, TS_CLOCK_UNKNOW},
2170                               {DATA_SOURCE_TYPE_PROCESS, TS_CLOCK_UNKNOW},
2171                               {DATA_SOURCE_TYPE_HISYSEVENT, TS_CLOCK_UNKNOW},
2172                               {DATA_SOURCE_TYPE_JSMEMORY, TS_CLOCK_UNKNOW}}),
2173       dataSource2PluginNameMap_({
2174           {DATA_SOURCE_TYPE_TRACE, "ftrace-plugin"},
2175           {DATA_SOURCE_TYPE_MEM, "memory-plugin"},
2176           {DATA_SOURCE_TYPE_HILOG, "hilog-plugin"},
2177           {DATA_SOURCE_TYPE_NATIVEHOOK, "nativehook"},
2178           {DATA_SOURCE_TYPE_FPS, "hidump-plugin"},
2179           {DATA_SOURCE_TYPE_NETWORK, "network-plugin"},
2180           {DATA_SOURCE_TYPE_DISKIO, "diskio-plugin"},
2181           {DATA_SOURCE_TYPE_CPU, "cpu-plugin"},
2182           {DATA_SOURCE_TYPE_PROCESS, "process-plugin"},
2183           {DATA_SOURCE_TYPE_HISYSEVENT, "hisysevent-plugin"},
2184           {DATA_SOURCE_TYPE_JSMEMORY, "arkts-plugin"},
2185       })
2186 {
2187 }
Finish()2188 void DataSourceClockIdData::Finish()
2189 {
2190     for (auto i = dataSource2ClockIdMap_.begin(); i != dataSource2ClockIdMap_.end(); i++) {
2191         if (i->second) { // ignore the empty datasource, for which the clockid is default TS_CLOCK_UNKNOW 0
2192             dataSourceNames_.emplace_back(dataSource2PluginNameMap_.at(i->first));
2193             clockIds_.emplace_back(i->second);
2194         }
2195     }
2196 }
SetDataSourceClockId(DataSourceType source,uint32_t id)2197 void DataSourceClockIdData::SetDataSourceClockId(DataSourceType source, uint32_t id)
2198 {
2199     dataSource2ClockIdMap_.at(source) = id;
2200 }
AppendFrame(uint64_t ts,uint32_t ipid,uint32_t itid,uint32_t vsyncId,uint64_t callStackSliceId)2201 size_t FrameSlice::AppendFrame(uint64_t ts, uint32_t ipid, uint32_t itid, uint32_t vsyncId, uint64_t callStackSliceId)
2202 {
2203     timeStamps_.emplace_back(ts);
2204     ipids_.emplace_back(ipid);
2205     internalTids_.emplace_back(itid);
2206     vsyncIds_.emplace_back(vsyncId);
2207     callStackIds_.emplace_back(callStackSliceId);
2208     endTss_.emplace_back(INVALID_UINT64);
2209     dsts_.emplace_back(INVALID_UINT64);
2210     ids_.emplace_back(ids_.size());
2211     durs_.emplace_back(INVALID_UINT64);
2212     types_.emplace_back(0);
2213     flags_.emplace_back(INVALID_UINT8);
2214     srcs_.emplace_back("");
2215     depths_.emplace_back(0);
2216     frameNos_.emplace_back(0);
2217     return Size() - 1;
2218 }
AppendFrame(uint64_t ts,uint32_t ipid,uint32_t itid,uint32_t vsyncId,uint64_t callStackSliceId,uint64_t end,uint8_t type)2219 size_t FrameSlice::AppendFrame(uint64_t ts,
2220                                uint32_t ipid,
2221                                uint32_t itid,
2222                                uint32_t vsyncId,
2223                                uint64_t callStackSliceId,
2224                                uint64_t end,
2225                                uint8_t type)
2226 {
2227     auto row = AppendFrame(ts, ipid, itid, vsyncId, callStackSliceId);
2228     SetEndTime(row, end);
2229     SetType(row, type);
2230     depths_.emplace_back(0);
2231     frameNos_.emplace_back(0);
2232     durs_[row] = end - ts;
2233     return row;
2234 }
2235 
SetEndTime(uint64_t row,uint64_t end)2236 void FrameSlice::SetEndTime(uint64_t row, uint64_t end)
2237 {
2238     endTss_[row] = end;
2239 }
SetType(uint64_t row,uint8_t type)2240 void FrameSlice::SetType(uint64_t row, uint8_t type)
2241 {
2242     types_[row] = type;
2243 }
SetDst(uint64_t row,uint64_t dst)2244 void FrameSlice::SetDst(uint64_t row, uint64_t dst)
2245 {
2246     dsts_[row] = dst;
2247 }
2248 
SetSrcs(uint64_t row,const std::vector<uint64_t> & fromSlices)2249 void FrameSlice::SetSrcs(uint64_t row, const std::vector<uint64_t>& fromSlices)
2250 {
2251     std::string s = "";
2252     for (auto&& i : fromSlices) {
2253         s += std::to_string(i) + ",";
2254     }
2255     s.pop_back();
2256     srcs_[row] = s;
2257 }
SetFlags(uint64_t row,const uint32_t flags)2258 void FrameSlice::SetFlags(uint64_t row, const uint32_t flags)
2259 {
2260     flags_[row] = flags;
2261 }
Ipids() const2262 const std::deque<uint32_t> FrameSlice::Ipids() const
2263 {
2264     return ipids_;
2265 }
VsyncIds() const2266 const std::deque<uint32_t> FrameSlice::VsyncIds() const
2267 {
2268     return vsyncIds_;
2269 }
CallStackIds() const2270 const std::deque<uint64_t> FrameSlice::CallStackIds() const
2271 {
2272     return callStackIds_;
2273 }
EndTss() const2274 const std::deque<uint64_t> FrameSlice::EndTss() const
2275 {
2276     return endTss_;
2277 }
Dsts() const2278 const std::deque<uint64_t> FrameSlice::Dsts() const
2279 {
2280     return dsts_;
2281 }
Durs() const2282 const std::deque<uint64_t> FrameSlice::Durs() const
2283 {
2284     return durs_;
2285 }
Types() const2286 const std::deque<uint8_t> FrameSlice::Types() const
2287 {
2288     return types_;
2289 }
Flags() const2290 const std::deque<uint8_t> FrameSlice::Flags() const
2291 {
2292     return flags_;
2293 }
2294 
Depths() const2295 const std::deque<uint8_t> FrameSlice::Depths() const
2296 {
2297     return depths_;
2298 }
FrameNos() const2299 const std::deque<uint32_t> FrameSlice::FrameNos() const
2300 {
2301     return frameNos_;
2302 }
Srcs() const2303 const std::deque<std::string>& FrameSlice::Srcs() const
2304 {
2305     return srcs_;
2306 }
UpdateCallStackSliceId(uint64_t row,uint64_t callStackSliceId)2307 void FrameSlice::UpdateCallStackSliceId(uint64_t row, uint64_t callStackSliceId)
2308 {
2309     callStackIds_[row] = callStackSliceId;
2310 }
SetEndTimeAndFlag(uint64_t row,uint64_t ts,uint64_t expectDur,uint64_t expectEnd)2311 void FrameSlice::SetEndTimeAndFlag(uint64_t row, uint64_t ts, uint64_t expectDur, uint64_t expectEnd)
2312 {
2313     UNUSED(expectDur);
2314     durs_[row] = ts - timeStamps_[row];
2315     if (flags_[row] != abnormalStartEndTimeState_) {
2316         flags_[row] = expectEnd >= ts ? 0 : 1;
2317     }
2318 }
Erase(uint64_t row)2319 void FrameSlice::Erase(uint64_t row)
2320 {
2321     flags_[row] = INVALID_ROW;
2322 }
AppendNew(FrameSlice * frameSlice,uint64_t src,uint64_t dst)2323 size_t FrameMaps::AppendNew(FrameSlice* frameSlice, uint64_t src, uint64_t dst)
2324 {
2325     timeStamps_.emplace_back(0);
2326     ids_.emplace_back(ids_.size());
2327     srcs_.push_back(src);
2328     dsts_.push_back(dst);
2329     if (frameSlice->Types().at(dst) == FrameSlice::EXPECT_SLICE) {
2330         uint64_t expRsStartTime = frameSlice->TimeStampData().at(dst);
2331         uint64_t expUiEndTime = frameSlice->TimeStampData().at(src) + frameSlice->Durs().at(src);
2332         if (std::abs(static_cast<long long>(expRsStartTime - expUiEndTime)) >= ONE_MILLION_NANOSECONDS) {
2333             auto acturalRow = dst - 1;
2334             frameSlice->SetFlags(acturalRow, FrameSlice::GetAbnormalStartEndTimeState());
2335         }
2336     }
2337 
2338     return Size() - 1;
2339 }
SrcIndexs() const2340 const std::deque<uint64_t>& FrameMaps::SrcIndexs() const
2341 {
2342     return srcs_;
2343 }
DstIndexs() const2344 const std::deque<uint64_t>& FrameMaps::DstIndexs() const
2345 {
2346     return dsts_;
2347 }
2348 
AppendNew(uint32_t frameRow,uint64_t dur)2349 size_t GPUSlice::AppendNew(uint32_t frameRow, uint64_t dur)
2350 {
2351     frameRows_.emplace_back(frameRow);
2352     durs_.emplace_back(dur);
2353     return Size() - 1;
2354 }
FrameRows() const2355 const std::deque<uint32_t>& GPUSlice::FrameRows() const
2356 {
2357     return frameRows_;
2358 }
Durs() const2359 const std::deque<uint64_t>& GPUSlice::Durs() const
2360 {
2361     return durs_;
2362 }
Size() const2363 size_t GPUSlice::Size() const
2364 {
2365     return durs_.size();
2366 }
2367 
AppendNewData(uint32_t ipid,uint32_t tid,uint32_t callId,uint64_t startTime,uint64_t endTime,uint32_t startName,DataIndex packedName)2368 size_t AppStartup::AppendNewData(uint32_t ipid,
2369                                  uint32_t tid,
2370                                  uint32_t callId,
2371                                  uint64_t startTime,
2372                                  uint64_t endTime,
2373                                  uint32_t startName,
2374                                  DataIndex packedName)
2375 {
2376     ipids_.emplace_back(ipid);
2377     tids_.emplace_back(tid);
2378     callIds_.emplace_back(callId);
2379     startTimes_.emplace_back(startTime);
2380     endTimes_.emplace_back(endTime);
2381     startNames_.emplace_back(startName);
2382     packedNames_.emplace_back(packedName);
2383     ids_.emplace_back(Size());
2384     return Size() - 1;
2385 }
Pids() const2386 const std::deque<uint32_t>& AppStartup::Pids() const
2387 {
2388     return ipids_;
2389 }
Tids() const2390 const std::deque<uint32_t>& AppStartup::Tids() const
2391 {
2392     return tids_;
2393 }
CallIds() const2394 const std::deque<uint32_t>& AppStartup::CallIds() const
2395 {
2396     return callIds_;
2397 }
StartTimes() const2398 const std::deque<uint64_t>& AppStartup::StartTimes() const
2399 {
2400     return startTimes_;
2401 }
EndTimes() const2402 const std::deque<uint64_t>& AppStartup::EndTimes() const
2403 {
2404     return endTimes_;
2405 }
StartNames() const2406 const std::deque<uint32_t>& AppStartup::StartNames() const
2407 {
2408     return startNames_;
2409 }
PackedNames() const2410 const std::deque<DataIndex>& AppStartup::PackedNames() const
2411 {
2412     return packedNames_;
2413 }
2414 
AppendNewData(uint32_t ipid,uint32_t tid,uint32_t callId,uint64_t startTime,uint64_t endTime,DataIndex soName,uint32_t depth)2415 size_t SoStaticInitalization::AppendNewData(uint32_t ipid,
2416                                             uint32_t tid,
2417                                             uint32_t callId,
2418                                             uint64_t startTime,
2419                                             uint64_t endTime,
2420                                             DataIndex soName,
2421                                             uint32_t depth)
2422 {
2423     ipids_.emplace_back(ipid);
2424     tids_.emplace_back(tid);
2425     callIds_.emplace_back(callId);
2426     startTimes_.emplace_back(startTime);
2427     endTimes_.emplace_back(endTime);
2428     soNames_.emplace_back(soName);
2429     depths_.emplace_back(depth);
2430     ids_.emplace_back(Size());
2431     return Size() - 1;
2432 }
Pids() const2433 const std::deque<uint32_t>& SoStaticInitalization::Pids() const
2434 {
2435     return ipids_;
2436 }
Tids() const2437 const std::deque<uint32_t>& SoStaticInitalization::Tids() const
2438 {
2439     return tids_;
2440 }
CallIds() const2441 const std::deque<uint32_t>& SoStaticInitalization::CallIds() const
2442 {
2443     return callIds_;
2444 }
StartTimes() const2445 const std::deque<uint64_t>& SoStaticInitalization::StartTimes() const
2446 {
2447     return startTimes_;
2448 }
EndTimes() const2449 const std::deque<uint64_t>& SoStaticInitalization::EndTimes() const
2450 {
2451     return endTimes_;
2452 }
SoNames() const2453 const std::deque<DataIndex>& SoStaticInitalization::SoNames() const
2454 {
2455     return soNames_;
2456 }
Depths() const2457 const std::deque<uint32_t> SoStaticInitalization::Depths() const
2458 {
2459     return depths_;
2460 }
2461 
AppendNewData(uint32_t id,std::string filePath,uint64_t startTime,uint64_t endTime,uint64_t selfSizeCount)2462 size_t JsHeapFiles::AppendNewData(uint32_t id,
2463                                   std::string filePath,
2464                                   uint64_t startTime,
2465                                   uint64_t endTime,
2466                                   uint64_t selfSizeCount)
2467 {
2468     fileIds_.emplace_back(id);
2469     filePaths_.emplace_back(filePath);
2470     startTimes_.emplace_back(startTime);
2471     endTimes_.emplace_back(endTime);
2472     selfSizeCount_.emplace_back(selfSizeCount);
2473     ids_.emplace_back(Size());
2474     return Size() - 1;
2475 }
IDs() const2476 const std::deque<uint32_t>& JsHeapFiles::IDs() const
2477 {
2478     return fileIds_;
2479 }
FilePaths() const2480 const std::deque<std::string>& JsHeapFiles::FilePaths() const
2481 {
2482     return filePaths_;
2483 }
StartTimes() const2484 const std::deque<uint64_t>& JsHeapFiles::StartTimes() const
2485 {
2486     return startTimes_;
2487 }
EndTimes() const2488 const std::deque<uint64_t>& JsHeapFiles::EndTimes() const
2489 {
2490     return endTimes_;
2491 }
2492 
SelfSizeCount() const2493 const std::deque<uint64_t>& JsHeapFiles::SelfSizeCount() const
2494 {
2495     return selfSizeCount_;
2496 }
2497 
AppendNewData(uint32_t fileId,uint32_t edgeIndex,uint32_t type,uint32_t nameOrIndex,uint32_t toNode,uint32_t fromNodeId,uint32_t toNodeId)2498 size_t JsHeapEdges::AppendNewData(uint32_t fileId,
2499                                   uint32_t edgeIndex,
2500                                   uint32_t type,
2501                                   uint32_t nameOrIndex,
2502                                   uint32_t toNode,
2503                                   uint32_t fromNodeId,
2504                                   uint32_t toNodeId)
2505 {
2506     fileIds_.emplace_back(fileId);
2507     edgeIndexs_.emplace_back(edgeIndex);
2508     types_.emplace_back(type);
2509     nameOrIndexs_.emplace_back(nameOrIndex);
2510     toNodes_.emplace_back(toNode);
2511     fromNodeIds_.emplace_back(fromNodeId);
2512     toNodeIds_.emplace_back(toNodeId);
2513     ids_.emplace_back(Size());
2514     return Size() - 1;
2515 }
FileIds() const2516 const std::deque<uint32_t>& JsHeapEdges::FileIds() const
2517 {
2518     return fileIds_;
2519 }
EdgeIndexs() const2520 const std::deque<uint32_t>& JsHeapEdges::EdgeIndexs() const
2521 {
2522     return edgeIndexs_;
2523 }
Types() const2524 const std::deque<uint32_t>& JsHeapEdges::Types() const
2525 {
2526     return types_;
2527 }
NameOrIndexs() const2528 const std::deque<uint32_t>& JsHeapEdges::NameOrIndexs() const
2529 {
2530     return nameOrIndexs_;
2531 }
ToNodes() const2532 const std::deque<uint32_t>& JsHeapEdges::ToNodes() const
2533 {
2534     return toNodes_;
2535 }
FromNodeIds() const2536 const std::deque<uint32_t>& JsHeapEdges::FromNodeIds() const
2537 {
2538     return fromNodeIds_;
2539 }
ToNodeIds() const2540 const std::deque<uint32_t>& JsHeapEdges::ToNodeIds() const
2541 {
2542     return toNodeIds_;
2543 }
2544 
2545 size_t
AppendNewData(uint32_t fileId,std::string key,uint32_t type,int32_t intValue,std::string strValue)2546     JsHeapInfo::AppendNewData(uint32_t fileId, std::string key, uint32_t type, int32_t intValue, std::string strValue)
2547 {
2548     fileIds_.emplace_back(fileId);
2549     keys_.emplace_back(key);
2550     types_.emplace_back(type);
2551     intValues_.emplace_back(intValue);
2552     strValues_.emplace_back(strValue);
2553     ids_.emplace_back(Size());
2554     return Size() - 1;
2555 }
FileIds() const2556 const std::deque<uint32_t>& JsHeapInfo::FileIds() const
2557 {
2558     return fileIds_;
2559 }
Keys() const2560 const std::deque<std::string>& JsHeapInfo::Keys() const
2561 {
2562     return keys_;
2563 }
Types() const2564 const std::deque<uint32_t>& JsHeapInfo::Types() const
2565 {
2566     return types_;
2567 }
IntValues() const2568 const std::deque<int32_t>& JsHeapInfo::IntValues() const
2569 {
2570     return intValues_;
2571 }
StrValues() const2572 const std::deque<std::string>& JsHeapInfo::StrValues() const
2573 {
2574     return strValues_;
2575 }
2576 
AppendNewData(uint32_t fileId,uint32_t objectIndex,uint32_t scriptId,uint32_t line,uint32_t column)2577 size_t JsHeapLocation::AppendNewData(uint32_t fileId,
2578                                      uint32_t objectIndex,
2579                                      uint32_t scriptId,
2580                                      uint32_t line,
2581                                      uint32_t column)
2582 {
2583     fileIds_.emplace_back(fileId);
2584     objectIndexs_.emplace_back(objectIndex);
2585     scriptIds_.emplace_back(scriptId);
2586     lines_.emplace_back(line);
2587     columns_.emplace_back(column);
2588     ids_.emplace_back(Size());
2589     return Size() - 1;
2590 }
FileIds() const2591 const std::deque<uint32_t>& JsHeapLocation::FileIds() const
2592 {
2593     return fileIds_;
2594 }
ObjectIndexs() const2595 const std::deque<uint32_t>& JsHeapLocation::ObjectIndexs() const
2596 {
2597     return objectIndexs_;
2598 }
ScriptIds() const2599 const std::deque<uint32_t>& JsHeapLocation::ScriptIds() const
2600 {
2601     return scriptIds_;
2602 }
Lines() const2603 const std::deque<uint32_t>& JsHeapLocation::Lines() const
2604 {
2605     return lines_;
2606 }
Columns() const2607 const std::deque<uint32_t>& JsHeapLocation::Columns() const
2608 {
2609     return columns_;
2610 }
2611 
AppendNewData(uint32_t fileId,uint32_t nodeIndex,uint32_t type,uint32_t name,uint32_t id,uint32_t selfSize,uint32_t edgeCount,uint32_t traceNodeId,uint32_t detachedNess)2612 size_t JsHeapNodes::AppendNewData(uint32_t fileId,
2613                                   uint32_t nodeIndex,
2614                                   uint32_t type,
2615                                   uint32_t name,
2616                                   uint32_t id,
2617                                   uint32_t selfSize,
2618                                   uint32_t edgeCount,
2619                                   uint32_t traceNodeId,
2620                                   uint32_t detachedNess)
2621 {
2622     fileIds_.emplace_back(fileId);
2623     nodeIndexs_.emplace_back(nodeIndex);
2624     types_.emplace_back(type);
2625     names_.emplace_back(name);
2626     nodeIds_.emplace_back(id);
2627     selfSizes_.emplace_back(selfSize);
2628     edgeCounts_.emplace_back(edgeCount);
2629     traceNodeIds_.emplace_back(traceNodeId);
2630     detachedNess_.emplace_back(detachedNess);
2631     ids_.emplace_back(Size());
2632     return Size() - 1;
2633 }
FileIds() const2634 const std::deque<uint32_t>& JsHeapNodes::FileIds() const
2635 {
2636     return fileIds_;
2637 }
NodeIndexs() const2638 const std::deque<uint32_t>& JsHeapNodes::NodeIndexs() const
2639 {
2640     return nodeIndexs_;
2641 }
Types() const2642 const std::deque<uint32_t>& JsHeapNodes::Types() const
2643 {
2644     return types_;
2645 }
Names() const2646 const std::deque<uint32_t>& JsHeapNodes::Names() const
2647 {
2648     return names_;
2649 }
NodeIds() const2650 const std::deque<uint32_t>& JsHeapNodes::NodeIds() const
2651 {
2652     return nodeIds_;
2653 }
SelfSizes() const2654 const std::deque<uint32_t>& JsHeapNodes::SelfSizes() const
2655 {
2656     return selfSizes_;
2657 }
EdgeCounts() const2658 const std::deque<uint32_t>& JsHeapNodes::EdgeCounts() const
2659 {
2660     return edgeCounts_;
2661 }
TraceNodeIds() const2662 const std::deque<uint32_t>& JsHeapNodes::TraceNodeIds() const
2663 {
2664     return traceNodeIds_;
2665 }
DetachedNess() const2666 const std::deque<uint32_t>& JsHeapNodes::DetachedNess() const
2667 {
2668     return detachedNess_;
2669 }
2670 
AppendNewData(uint32_t fileId,uint64_t timeStampUs,uint32_t lastAssignedId)2671 size_t JsHeapSample::AppendNewData(uint32_t fileId, uint64_t timeStampUs, uint32_t lastAssignedId)
2672 {
2673     fileIds_.emplace_back(fileId);
2674     timeStampUs_.emplace_back(timeStampUs);
2675     lastAssignedIds_.emplace_back(lastAssignedId);
2676     ids_.emplace_back(Size());
2677     return Size() - 1;
2678 }
FileIds() const2679 const std::deque<uint32_t>& JsHeapSample::FileIds() const
2680 {
2681     return fileIds_;
2682 }
TimeStampUs() const2683 const std::deque<uint64_t>& JsHeapSample::TimeStampUs() const
2684 {
2685     return timeStampUs_;
2686 }
LastAssignedIds() const2687 const std::deque<uint32_t>& JsHeapSample::LastAssignedIds() const
2688 {
2689     return lastAssignedIds_;
2690 }
2691 
AppendNewData(uint32_t fileId,uint32_t fileIndex,std::string string)2692 size_t JsHeapString::AppendNewData(uint32_t fileId, uint32_t fileIndex, std::string string)
2693 {
2694     fileIds_.emplace_back(fileId);
2695     fileIndexs_.emplace_back(fileIndex);
2696     strings_.emplace_back(string);
2697     ids_.emplace_back(Size());
2698     return Size() - 1;
2699 }
FileIds() const2700 const std::deque<uint32_t>& JsHeapString::FileIds() const
2701 {
2702     return fileIds_;
2703 }
FileIndexs() const2704 const std::deque<uint64_t>& JsHeapString::FileIndexs() const
2705 {
2706     return fileIndexs_;
2707 }
Strings() const2708 const std::deque<std::string>& JsHeapString::Strings() const
2709 {
2710     return strings_;
2711 }
2712 
AppendNewData(uint32_t fileId,uint32_t functionIndex,uint32_t functionId,uint32_t name,uint32_t scriptName,uint32_t scriptId,uint32_t line,uint32_t column)2713 size_t JsHeapTraceFuncInfo::AppendNewData(uint32_t fileId,
2714                                           uint32_t functionIndex,
2715                                           uint32_t functionId,
2716                                           uint32_t name,
2717                                           uint32_t scriptName,
2718                                           uint32_t scriptId,
2719                                           uint32_t line,
2720                                           uint32_t column)
2721 {
2722     fileIds_.emplace_back(fileId);
2723     functionIndexs_.emplace_back(functionIndex);
2724     functionIds_.emplace_back(functionId);
2725     names_.emplace_back(name);
2726     scriptNames_.emplace_back(scriptName);
2727     scriptIds_.emplace_back(scriptId);
2728     lines_.emplace_back(line);
2729     columns_.emplace_back(column);
2730     ids_.emplace_back(Size());
2731     return Size() - 1;
2732 }
FileIds() const2733 const std::deque<uint32_t>& JsHeapTraceFuncInfo::FileIds() const
2734 {
2735     return fileIds_;
2736 }
FunctionIndexs() const2737 const std::deque<uint32_t>& JsHeapTraceFuncInfo::FunctionIndexs() const
2738 {
2739     return functionIndexs_;
2740 }
FunctionIds() const2741 const std::deque<uint32_t>& JsHeapTraceFuncInfo::FunctionIds() const
2742 {
2743     return functionIds_;
2744 }
Names() const2745 const std::deque<uint32_t>& JsHeapTraceFuncInfo::Names() const
2746 {
2747     return names_;
2748 }
ScriptNames() const2749 const std::deque<uint32_t>& JsHeapTraceFuncInfo::ScriptNames() const
2750 {
2751     return scriptNames_;
2752 }
ScriptIds() const2753 const std::deque<uint32_t>& JsHeapTraceFuncInfo::ScriptIds() const
2754 {
2755     return scriptIds_;
2756 }
Lines() const2757 const std::deque<uint32_t>& JsHeapTraceFuncInfo::Lines() const
2758 {
2759     return lines_;
2760 }
Columns() const2761 const std::deque<uint32_t>& JsHeapTraceFuncInfo::Columns() const
2762 {
2763     return columns_;
2764 }
2765 
AppendNewData(uint32_t fileId,uint32_t traceNodeId,uint32_t functionInfoIndex,uint32_t count,uint32_t size,int32_t parentId)2766 size_t JsHeapTraceNode::AppendNewData(uint32_t fileId,
2767                                       uint32_t traceNodeId,
2768                                       uint32_t functionInfoIndex,
2769                                       uint32_t count,
2770                                       uint32_t size,
2771                                       int32_t parentId)
2772 {
2773     fileIds_.emplace_back(fileId);
2774     traceNodeIds_.emplace_back(traceNodeId);
2775     functionInfoIndexs_.emplace_back(functionInfoIndex);
2776     counts_.emplace_back(count);
2777     sizes_.emplace_back(size);
2778     parentIds_.emplace_back(parentId);
2779     ids_.emplace_back(Size());
2780     return Size() - 1;
2781 }
FileIds() const2782 const std::deque<uint32_t>& JsHeapTraceNode::FileIds() const
2783 {
2784     return fileIds_;
2785 }
TraceNodeIDs() const2786 const std::deque<uint32_t>& JsHeapTraceNode::TraceNodeIDs() const
2787 {
2788     return traceNodeIds_;
2789 }
FunctionInfoIndexs() const2790 const std::deque<uint32_t>& JsHeapTraceNode::FunctionInfoIndexs() const
2791 {
2792     return functionInfoIndexs_;
2793 }
Counts() const2794 const std::deque<uint32_t>& JsHeapTraceNode::Counts() const
2795 {
2796     return counts_;
2797 }
NodeSizes() const2798 const std::deque<uint32_t>& JsHeapTraceNode::NodeSizes() const
2799 {
2800     return sizes_;
2801 }
ParentIds() const2802 const std::deque<int32_t>& JsHeapTraceNode::ParentIds() const
2803 {
2804     return parentIds_;
2805 }
2806 
AppendNewData(uint32_t functionId,uint32_t functionName,std::string scriptId,uint32_t url,uint32_t lineNumber,uint32_t columnNumber,uint32_t hitCount,std::string children,uint32_t parent)2807 size_t JsCpuProfilerNode::AppendNewData(uint32_t functionId,
2808                                         uint32_t functionName,
2809                                         std::string scriptId,
2810                                         uint32_t url,
2811                                         uint32_t lineNumber,
2812                                         uint32_t columnNumber,
2813                                         uint32_t hitCount,
2814                                         std::string children,
2815                                         uint32_t parent)
2816 {
2817     functionIds_.emplace_back(functionId);
2818     functionNames_.emplace_back(functionName);
2819     scriptIds_.emplace_back(scriptId);
2820     urls_.emplace_back(url);
2821     lineNumbers_.emplace_back(lineNumber);
2822     columnNumbers_.emplace_back(columnNumber);
2823     hitCounts_.emplace_back(hitCount);
2824     children_.emplace_back(children);
2825     parents_.emplace_back(parent);
2826     ids_.emplace_back(Size());
2827     return Size() - 1;
2828 }
2829 
FunctionIds() const2830 const std::deque<uint32_t>& JsCpuProfilerNode::FunctionIds() const
2831 {
2832     return functionIds_;
2833 }
FunctionNames() const2834 const std::deque<uint32_t>& JsCpuProfilerNode::FunctionNames() const
2835 {
2836     return functionNames_;
2837 }
ScriptIds() const2838 const std::deque<std::string>& JsCpuProfilerNode::ScriptIds() const
2839 {
2840     return scriptIds_;
2841 }
Urls() const2842 const std::deque<uint32_t>& JsCpuProfilerNode::Urls() const
2843 {
2844     return urls_;
2845 }
LineNumbers() const2846 const std::deque<uint32_t>& JsCpuProfilerNode::LineNumbers() const
2847 {
2848     return lineNumbers_;
2849 }
ColumnNumbers() const2850 const std::deque<int32_t>& JsCpuProfilerNode::ColumnNumbers() const
2851 {
2852     return columnNumbers_;
2853 }
HitCounts() const2854 const std::deque<int32_t>& JsCpuProfilerNode::HitCounts() const
2855 {
2856     return hitCounts_;
2857 }
Children() const2858 const std::deque<std::string>& JsCpuProfilerNode::Children() const
2859 {
2860     return children_;
2861 }
Parents() const2862 const std::deque<uint32_t>& JsCpuProfilerNode::Parents() const
2863 {
2864     return parents_;
2865 }
2866 
AppendNewData(uint32_t functionId,uint64_t startTime,uint64_t endTime,uint64_t dur)2867 size_t JsCpuProfilerSample::AppendNewData(uint32_t functionId, uint64_t startTime, uint64_t endTime, uint64_t dur)
2868 {
2869     functionIds_.emplace_back(functionId);
2870     startTimes_.emplace_back(startTime);
2871     endTimes_.emplace_back(endTime);
2872     durs_.emplace_back(dur);
2873     ids_.emplace_back(Size());
2874     return Size() - 1;
2875 }
FunctionIds() const2876 const std::deque<uint32_t>& JsCpuProfilerSample::FunctionIds() const
2877 {
2878     return functionIds_;
2879 }
StartTimes() const2880 const std::deque<uint64_t>& JsCpuProfilerSample::StartTimes() const
2881 {
2882     return startTimes_;
2883 }
EndTimes() const2884 const std::deque<uint64_t>& JsCpuProfilerSample::EndTimes() const
2885 {
2886     return endTimes_;
2887 }
Durs() const2888 const std::deque<uint64_t>& JsCpuProfilerSample::Durs() const
2889 {
2890     return durs_;
2891 }
2892 
AppendNewData(uint32_t pid,uint64_t type,uint32_t interval,uint32_t captureNumericValue,uint32_t trackAllocation,uint32_t cpuProfiler,uint32_t cpuProfilerInterval)2893 size_t JsConfig::AppendNewData(uint32_t pid,
2894                                uint64_t type,
2895                                uint32_t interval,
2896                                uint32_t captureNumericValue,
2897                                uint32_t trackAllocation,
2898                                uint32_t cpuProfiler,
2899                                uint32_t cpuProfilerInterval)
2900 {
2901     pids_.emplace_back(pid);
2902     types_.emplace_back(type);
2903     intervals_.emplace_back(interval);
2904     captureNumericValues_.emplace_back(captureNumericValue);
2905     trackAllocations_.emplace_back(trackAllocation);
2906     cpuProfilers_.emplace_back(cpuProfiler);
2907     cpuProfilerIntervals_.emplace_back(cpuProfilerInterval);
2908     ids_.emplace_back(Size());
2909     return Size() - 1;
2910 }
Pids() const2911 const std::deque<uint32_t>& JsConfig::Pids() const
2912 {
2913     return pids_;
2914 }
Types() const2915 const std::deque<uint64_t>& JsConfig::Types() const
2916 {
2917     return types_;
2918 }
Intervals() const2919 const std::deque<uint32_t>& JsConfig::Intervals() const
2920 {
2921     return intervals_;
2922 }
CaptureNumericValue() const2923 const std::deque<uint32_t>& JsConfig::CaptureNumericValue() const
2924 {
2925     return captureNumericValues_;
2926 }
TrackAllocations() const2927 const std::deque<uint32_t>& JsConfig::TrackAllocations() const
2928 {
2929     return trackAllocations_;
2930 }
CpuProfiler() const2931 const std::deque<uint32_t>& JsConfig::CpuProfiler() const
2932 {
2933     return cpuProfilers_;
2934 }
CpuProfilerInterval() const2935 const std::deque<uint32_t>& JsConfig::CpuProfilerInterval() const
2936 {
2937     return cpuProfilerIntervals_;
2938 }
2939 
AppendAllocationTaskData(uint32_t allocationTaskRow,uint32_t allocationItid,uint32_t executeId,uint32_t priority,uint32_t executeState)2940 size_t TaskPoolInfo::AppendAllocationTaskData(uint32_t allocationTaskRow,
2941                                               uint32_t allocationItid,
2942                                               uint32_t executeId,
2943                                               uint32_t priority,
2944                                               uint32_t executeState)
2945 {
2946     allocationTaskRows_.emplace_back(allocationTaskRow);
2947     executeTaskRows_.emplace_back(INVALID_INT32);
2948     returnTaskRows_.emplace_back(INVALID_INT32);
2949     allocationItids_.emplace_back(allocationItid);
2950     executeItids_.emplace_back(INVALID_INT32);
2951     returnItids_.emplace_back(INVALID_INT32);
2952     executeIds_.emplace_back(executeId);
2953     prioritys_.emplace_back(priority);
2954     executeStates_.emplace_back(executeState);
2955     returnStates_.emplace_back(INVALID_INT32);
2956     timeoutRows_.emplace_back(INVALID_INT32);
2957     ids_.emplace_back(Size());
2958     return Size() - 1;
2959 }
AppendExecuteTaskData(uint32_t executeTaskRow,uint32_t executeItid,uint32_t executeId)2960 size_t TaskPoolInfo::AppendExecuteTaskData(uint32_t executeTaskRow, uint32_t executeItid, uint32_t executeId)
2961 {
2962     allocationTaskRows_.emplace_back(INVALID_INT32);
2963     executeTaskRows_.emplace_back(executeTaskRow);
2964     returnTaskRows_.emplace_back(INVALID_INT32);
2965     allocationItids_.emplace_back(INVALID_INT32);
2966     executeItids_.emplace_back(executeItid);
2967     returnItids_.emplace_back(INVALID_INT32);
2968     executeIds_.emplace_back(executeId);
2969     prioritys_.emplace_back(INVALID_INT32);
2970     executeStates_.emplace_back(INVALID_INT32);
2971     returnStates_.emplace_back(INVALID_INT32);
2972     timeoutRows_.emplace_back(INVALID_INT32);
2973     ids_.emplace_back(Size());
2974     return Size() - 1;
2975 }
AppendReturnTaskData(uint32_t returnTaskRow,uint32_t returnItid,uint32_t executeId,uint32_t returnState)2976 size_t TaskPoolInfo::AppendReturnTaskData(uint32_t returnTaskRow,
2977                                           uint32_t returnItid,
2978                                           uint32_t executeId,
2979                                           uint32_t returnState)
2980 {
2981     allocationTaskRows_.emplace_back(INVALID_INT32);
2982     executeTaskRows_.emplace_back(INVALID_INT32);
2983     returnTaskRows_.emplace_back(returnTaskRow);
2984     allocationItids_.emplace_back(INVALID_INT32);
2985     executeItids_.emplace_back(INVALID_INT32);
2986     returnItids_.emplace_back(returnItid);
2987     executeIds_.emplace_back(executeId);
2988     prioritys_.emplace_back(INVALID_INT32);
2989     executeStates_.emplace_back(INVALID_INT32);
2990     returnStates_.emplace_back(returnState);
2991     timeoutRows_.emplace_back(INVALID_INT32);
2992     ids_.emplace_back(Size());
2993     return Size() - 1;
2994 }
AllocationTaskRows() const2995 const std::deque<uint32_t>& TaskPoolInfo::AllocationTaskRows() const
2996 {
2997     return allocationTaskRows_;
2998 }
ExecuteTaskRows() const2999 const std::deque<uint32_t>& TaskPoolInfo::ExecuteTaskRows() const
3000 {
3001     return executeTaskRows_;
3002 }
ReturnTaskRows() const3003 const std::deque<uint32_t>& TaskPoolInfo::ReturnTaskRows() const
3004 {
3005     return returnTaskRows_;
3006 }
AllocationItids() const3007 const std::deque<uint32_t>& TaskPoolInfo::AllocationItids() const
3008 {
3009     return allocationItids_;
3010 }
ExecuteItids() const3011 const std::deque<uint32_t>& TaskPoolInfo::ExecuteItids() const
3012 {
3013     return executeItids_;
3014 }
ReturnItids() const3015 const std::deque<uint32_t>& TaskPoolInfo::ReturnItids() const
3016 {
3017     return returnItids_;
3018 }
ExecuteIds() const3019 const std::deque<uint32_t>& TaskPoolInfo::ExecuteIds() const
3020 {
3021     return executeIds_;
3022 }
Prioritys() const3023 const std::deque<uint32_t>& TaskPoolInfo::Prioritys() const
3024 {
3025     return prioritys_;
3026 }
ExecuteStates() const3027 const std::deque<uint32_t>& TaskPoolInfo::ExecuteStates() const
3028 {
3029     return executeStates_;
3030 }
ReturnStates() const3031 const std::deque<uint32_t>& TaskPoolInfo::ReturnStates() const
3032 {
3033     return returnStates_;
3034 }
TimeoutRows() const3035 const std::deque<uint32_t>& TaskPoolInfo::TimeoutRows() const
3036 {
3037     return timeoutRows_;
3038 }
UpdateAllocationTaskData(uint32_t index,uint32_t allocationTaskRow,uint32_t allocationItid,uint32_t priority,uint32_t executeState)3039 void TaskPoolInfo::UpdateAllocationTaskData(uint32_t index,
3040                                             uint32_t allocationTaskRow,
3041                                             uint32_t allocationItid,
3042                                             uint32_t priority,
3043                                             uint32_t executeState)
3044 {
3045     if (index <= Size()) {
3046         allocationTaskRows_[index] = allocationTaskRow;
3047         allocationItids_[index] = allocationItid;
3048         prioritys_[index] = priority;
3049         executeStates_[index] = executeState;
3050     }
3051 }
UpdateExecuteTaskData(uint32_t index,uint32_t executeTaskRow,uint32_t executeItid)3052 void TaskPoolInfo::UpdateExecuteTaskData(uint32_t index, uint32_t executeTaskRow, uint32_t executeItid)
3053 {
3054     if (index <= Size()) {
3055         executeTaskRows_[index] = executeTaskRow;
3056         executeItids_[index] = executeItid;
3057     }
3058 }
UpdateReturnTaskData(uint32_t index,uint32_t returnTaskRow,uint32_t returnItid,uint32_t returnState)3059 void TaskPoolInfo::UpdateReturnTaskData(uint32_t index,
3060                                         uint32_t returnTaskRow,
3061                                         uint32_t returnItid,
3062                                         uint32_t returnState)
3063 {
3064     if (index <= Size()) {
3065         returnTaskRows_[index] = returnTaskRow;
3066         returnItids_[index] = returnItid;
3067         returnStates_[index] = returnState;
3068     }
3069 }
AppendTimeoutRow(uint32_t index,uint32_t timeoutRow)3070 void TaskPoolInfo::AppendTimeoutRow(uint32_t index, uint32_t timeoutRow)
3071 {
3072     if (index <= Size()) {
3073         timeoutRows_[index] = timeoutRow;
3074     }
3075 }
AppendAnimation(InternalTime startPoint)3076 TableRowId Animation::AppendAnimation(InternalTime startPoint)
3077 {
3078     inputTimes_.emplace_back(INVALID_TIME);
3079     startPoints_.emplace_back(startPoint);
3080     endPoins_.emplace_back(INVALID_TIME);
3081     ids_.emplace_back(Size());
3082     return ids_.size() - 1;
3083 }
UpdateStartPoint(TableRowId index,InternalTime startPoint)3084 void Animation::UpdateStartPoint(TableRowId index, InternalTime startPoint)
3085 {
3086     if (index <= Size()) {
3087         startPoints_[index] = startPoint;
3088     }
3089 }
UpdateEndPoint(TableRowId index,InternalTime endPoint)3090 void Animation::UpdateEndPoint(TableRowId index, InternalTime endPoint)
3091 {
3092     if (index <= Size()) {
3093         endPoins_[index] = endPoint;
3094     }
3095 }
Size() const3096 size_t Animation::Size() const
3097 {
3098     return ids_.size();
3099 }
InputTimes() const3100 const std::deque<InternalTime>& Animation::InputTimes() const
3101 {
3102     return inputTimes_;
3103 }
StartPoints() const3104 const std::deque<InternalTime>& Animation::StartPoints() const
3105 {
3106     return startPoints_;
3107 }
EndPoints() const3108 const std::deque<InternalTime>& Animation::EndPoints() const
3109 {
3110     return endPoins_;
3111 }
IdsData() const3112 const std::deque<uint64_t>& Animation::IdsData() const
3113 {
3114     return ids_;
3115 }
Clear()3116 void Animation::Clear()
3117 {
3118     inputTimes_.clear();
3119     startPoints_.clear();
3120     endPoins_.clear();
3121     ids_.clear();
3122 }
PhysicalWidth() const3123 uint32_t DeviceInfo::PhysicalWidth() const
3124 {
3125     return physicalWidth_;
3126 }
PhysicalHeight() const3127 uint32_t DeviceInfo::PhysicalHeight() const
3128 {
3129     return physicalHeight_;
3130 }
PhysicalFrameRate() const3131 uint32_t DeviceInfo::PhysicalFrameRate() const
3132 {
3133     return physicalFrameRate_;
3134 }
UpdateWidthAndHeight(const std::smatch & matcheLine)3135 void DeviceInfo::UpdateWidthAndHeight(const std::smatch& matcheLine)
3136 {
3137     if (matcheLine.size() > DEVICEINFO_MATCH_LAST) {
3138         uint8_t matcheIndex = 0;
3139         physicalWidth_ = base::StrToInt<uint32_t>(matcheLine[++matcheIndex].str()).value();
3140         physicalHeight_ = base::StrToInt<uint32_t>(matcheLine[++matcheIndex].str()).value();
3141     }
3142 }
UpdateFrameRate(uint32_t frameRate)3143 void DeviceInfo::UpdateFrameRate(uint32_t frameRate)
3144 {
3145     physicalFrameRate_ = frameRate;
3146 }
Clear()3147 void DeviceInfo::Clear()
3148 {
3149     physicalWidth_ = INVALID_UINT32;
3150     physicalHeight_ = INVALID_UINT32;
3151     physicalFrameRate_ = INVALID_UINT32;
3152 }
AppendDynamicFrame(DataIndex nameId)3153 TableRowId DynamicFrame::AppendDynamicFrame(DataIndex nameId)
3154 {
3155     names_.emplace_back(nameId);
3156     ids_.emplace_back(Size());
3157     xs_.emplace_back(INVALID_UINT32);
3158     ys_.emplace_back(INVALID_UINT32);
3159     widths_.emplace_back(INVALID_UINT32);
3160     heights_.emplace_back(INVALID_UINT32);
3161     alphas_.emplace_back(INVALID_UINT64);
3162     endTimes_.emplace_back(INVALID_TIME);
3163     return ids_.size() - 1;
3164 }
UpdateNameIndex(TableRowId index,DataIndex nameId)3165 void DynamicFrame::UpdateNameIndex(TableRowId index, DataIndex nameId)
3166 {
3167     if (index <= Size()) {
3168         names_[index] = nameId;
3169     }
3170 }
UpdatePosition(TableRowId index,const std::smatch & matcheLine,DataIndex alpha)3171 void DynamicFrame::UpdatePosition(TableRowId index, const std::smatch& matcheLine, DataIndex alpha)
3172 {
3173     if (index <= Size() && matcheLine.size() > DYNAMICFRAME_MATCH_LAST) {
3174         uint8_t matcheIndex = 0;
3175         xs_[index] = base::StrToInt<uint32_t>(matcheLine[++matcheIndex].str()).value();
3176         ys_[index] = base::StrToInt<uint32_t>(matcheLine[++matcheIndex].str()).value();
3177         widths_[index] = base::StrToInt<uint32_t>(matcheLine[++matcheIndex].str()).value();
3178         heights_[index] = base::StrToInt<uint32_t>(matcheLine[++matcheIndex].str()).value();
3179         alphas_[index] = alpha;
3180     }
3181 }
UpdateEndTime(TableRowId index,InternalTime endTime)3182 void DynamicFrame::UpdateEndTime(TableRowId index, InternalTime endTime)
3183 {
3184     if (index <= Size()) {
3185         endTimes_[index] = endTime;
3186     }
3187 }
Size() const3188 size_t DynamicFrame::Size() const
3189 {
3190     return ids_.size();
3191 }
IdsData() const3192 const std::deque<uint64_t>& DynamicFrame::IdsData() const
3193 {
3194     return ids_;
3195 }
Xs() const3196 const std::deque<uint32_t>& DynamicFrame::Xs() const
3197 {
3198     return xs_;
3199 }
Ys() const3200 const std::deque<uint32_t>& DynamicFrame::Ys() const
3201 {
3202     return ys_;
3203 }
Widths() const3204 const std::deque<uint32_t>& DynamicFrame::Widths() const
3205 {
3206     return widths_;
3207 }
Heights() const3208 const std::deque<uint32_t>& DynamicFrame::Heights() const
3209 {
3210     return heights_;
3211 }
Alphas() const3212 const std::deque<DataIndex>& DynamicFrame::Alphas() const
3213 {
3214     return alphas_;
3215 }
Names() const3216 const std::deque<DataIndex>& DynamicFrame::Names() const
3217 {
3218     return names_;
3219 }
EndTimes() const3220 const std::deque<InternalTime>& DynamicFrame::EndTimes() const
3221 {
3222     return endTimes_;
3223 }
Clear()3224 void DynamicFrame::Clear()
3225 {
3226     xs_.clear();
3227     ys_.clear();
3228     widths_.clear();
3229     heights_.clear();
3230     alphas_.clear();
3231     names_.clear();
3232     endTimes_.clear();
3233     ids_.clear();
3234 }
3235 
AppendNewData(InternalPid ipid,uint64_t ts,uint32_t adj,uint32_t fd,DataIndex ashmemNameId,uint64_t size,uint64_t pss,uint32_t ashmemId,uint64_t time,uint64_t refCount,uint64_t purged,uint32_t flag)3236 void AshMemData::AppendNewData(InternalPid ipid,
3237                                uint64_t ts,
3238                                uint32_t adj,
3239                                uint32_t fd,
3240                                DataIndex ashmemNameId,
3241                                uint64_t size,
3242                                uint64_t pss,
3243                                uint32_t ashmemId,
3244                                uint64_t time,
3245                                uint64_t refCount,
3246                                uint64_t purged,
3247                                uint32_t flag)
3248 {
3249     ipids_.emplace_back(ipid);
3250     timeStamps_.emplace_back(ts);
3251     adjs_.emplace_back(adj);
3252     fds_.emplace_back(fd);
3253     ashmemNameIds_.emplace_back(ashmemNameId);
3254     sizes_.emplace_back(size);
3255     psss_.emplace_back(pss);
3256     ashmemIds_.emplace_back(ashmemId);
3257     times_.emplace_back(time);
3258     refCounts_.emplace_back(refCount);
3259     purgeds_.emplace_back(purged);
3260     flags_.emplace_back(flag);
3261     ids_.push_back(rowCount_);
3262     rowCount_++;
3263 }
SetFlag(uint64_t rowId,uint32_t Flag)3264 void AshMemData::SetFlag(uint64_t rowId, uint32_t Flag)
3265 {
3266     flags_[rowId] = Flag;
3267 }
Ipids() const3268 const std::deque<InternalPid>& AshMemData::Ipids() const
3269 {
3270     return ipids_;
3271 }
Adjs() const3272 const std::deque<uint32_t>& AshMemData::Adjs() const
3273 {
3274     return adjs_;
3275 }
Fds() const3276 const std::deque<uint32_t>& AshMemData::Fds() const
3277 {
3278     return fds_;
3279 }
AshmemNameIds() const3280 const std::deque<DataIndex>& AshMemData::AshmemNameIds() const
3281 {
3282     return ashmemNameIds_;
3283 }
Sizes() const3284 const std::deque<uint64_t>& AshMemData::Sizes() const
3285 {
3286     return sizes_;
3287 }
Psss() const3288 const std::deque<uint64_t>& AshMemData::Psss() const
3289 {
3290     return psss_;
3291 }
AshmemIds() const3292 const std::deque<uint32_t>& AshMemData::AshmemIds() const
3293 {
3294     return ashmemIds_;
3295 }
Times() const3296 const std::deque<uint64_t>& AshMemData::Times() const
3297 {
3298     return times_;
3299 }
RefCounts() const3300 const std::deque<uint64_t>& AshMemData::RefCounts() const
3301 {
3302     return refCounts_;
3303 }
Purgeds() const3304 const std::deque<uint64_t>& AshMemData::Purgeds() const
3305 {
3306     return purgeds_;
3307 }
Flags() const3308 const std::deque<uint32_t>& AshMemData::Flags() const
3309 {
3310     return flags_;
3311 }
3312 
AppendNewData(InternalPid ipid,uint64_t ts,uint32_t fd,uint64_t size,uint32_t ino,uint32_t expPid,DataIndex expTaskCommId,DataIndex bufNameId,DataIndex expNameId,uint32_t flag)3313 void DmaMemData::AppendNewData(InternalPid ipid,
3314                                uint64_t ts,
3315                                uint32_t fd,
3316                                uint64_t size,
3317                                uint32_t ino,
3318                                uint32_t expPid,
3319                                DataIndex expTaskCommId,
3320                                DataIndex bufNameId,
3321                                DataIndex expNameId,
3322                                uint32_t flag)
3323 {
3324     ipids_.emplace_back(ipid);
3325     timeStamps_.emplace_back(ts);
3326     fds_.emplace_back(fd);
3327     sizes_.emplace_back(size);
3328     inos_.emplace_back(ino);
3329     expPids_.emplace_back(expPid);
3330     expTaskCommIds_.emplace_back(expTaskCommId);
3331     bufNameIds_.emplace_back(bufNameId);
3332     expNameIds_.emplace_back(expNameId);
3333     flags_.emplace_back(flag);
3334     ids_.push_back(rowCount_);
3335     rowCount_++;
3336 }
SetFlag(uint64_t rowId,uint32_t Flag)3337 void DmaMemData::SetFlag(uint64_t rowId, uint32_t Flag)
3338 {
3339     flags_[rowId] = Flag;
3340 }
Ipids() const3341 const std::deque<InternalPid>& DmaMemData::Ipids() const
3342 {
3343     return ipids_;
3344 }
Fds() const3345 const std::deque<uint32_t>& DmaMemData::Fds() const
3346 {
3347     return fds_;
3348 }
Sizes() const3349 const std::deque<uint64_t>& DmaMemData::Sizes() const
3350 {
3351     return sizes_;
3352 }
Inos() const3353 const std::deque<uint32_t>& DmaMemData::Inos() const
3354 {
3355     return inos_;
3356 }
ExpPids() const3357 const std::deque<uint32_t>& DmaMemData::ExpPids() const
3358 {
3359     return expPids_;
3360 }
ExpTaskCommIds() const3361 const std::deque<DataIndex>& DmaMemData::ExpTaskCommIds() const
3362 {
3363     return expTaskCommIds_;
3364 }
BufNameIds() const3365 const std::deque<DataIndex>& DmaMemData::BufNameIds() const
3366 {
3367     return bufNameIds_;
3368 }
ExpNameIds() const3369 const std::deque<DataIndex>& DmaMemData::ExpNameIds() const
3370 {
3371     return expNameIds_;
3372 }
Flags() const3373 const std::deque<uint32_t>& DmaMemData::Flags() const
3374 {
3375     return flags_;
3376 }
3377 
AppendNewData(uint64_t ts,DataIndex gpuNameId,uint64_t allGpuSize,std::string addr,InternalPid ipid,InternalPid itid,uint64_t usedGpuSize)3378 void GpuProcessMemData::AppendNewData(uint64_t ts,
3379                                       DataIndex gpuNameId,
3380                                       uint64_t allGpuSize,
3381                                       std::string addr,
3382                                       InternalPid ipid,
3383                                       InternalPid itid,
3384                                       uint64_t usedGpuSize)
3385 {
3386     timeStamps_.emplace_back(ts);
3387     gpuNameIds_.emplace_back(gpuNameId);
3388     allGpuSizes_.emplace_back(allGpuSize);
3389     addrs_.emplace_back(addr);
3390     ipids_.emplace_back(ipid);
3391     itids_.emplace_back(itid);
3392     usedGpuSizes_.emplace_back(usedGpuSize);
3393     ids_.push_back(rowCount_);
3394     rowCount_++;
3395 }
GpuNameIds() const3396 const std::deque<DataIndex>& GpuProcessMemData::GpuNameIds() const
3397 {
3398     return gpuNameIds_;
3399 }
AllGpuSizes() const3400 const std::deque<uint64_t>& GpuProcessMemData::AllGpuSizes() const
3401 {
3402     return allGpuSizes_;
3403 }
Addrs() const3404 const std::deque<std::string>& GpuProcessMemData::Addrs() const
3405 {
3406     return addrs_;
3407 }
Ipids() const3408 const std::deque<InternalPid>& GpuProcessMemData::Ipids() const
3409 {
3410     return ipids_;
3411 }
Itids() const3412 const std::deque<InternalPid>& GpuProcessMemData::Itids() const
3413 {
3414     return itids_;
3415 }
UsedGpuSizes() const3416 const std::deque<uint64_t>& GpuProcessMemData::UsedGpuSizes() const
3417 {
3418     return usedGpuSizes_;
3419 }
3420 
AppendNewData(uint64_t ts,DataIndex windowNameId,uint64_t windowId,DataIndex moduleNameId,DataIndex categoryNameId,uint64_t size,uint32_t count,uint64_t purgeableSize)3421 void GpuWindowMemData::AppendNewData(uint64_t ts,
3422                                      DataIndex windowNameId,
3423                                      uint64_t windowId,
3424                                      DataIndex moduleNameId,
3425                                      DataIndex categoryNameId,
3426                                      uint64_t size,
3427                                      uint32_t count,
3428                                      uint64_t purgeableSize)
3429 {
3430     timeStamps_.emplace_back(ts);
3431     windowNameIds_.emplace_back(windowNameId);
3432     windowIds_.emplace_back(windowId);
3433     moduleNameIds_.emplace_back(moduleNameId);
3434     categoryNameIds_.emplace_back(categoryNameId);
3435     sizes_.emplace_back(size);
3436     counts_.emplace_back(count);
3437     purgeableSizes_.emplace_back(purgeableSize);
3438     ids_.push_back(rowCount_);
3439     rowCount_++;
3440 }
WindowNameIds() const3441 const std::deque<DataIndex>& GpuWindowMemData::WindowNameIds() const
3442 {
3443     return windowNameIds_;
3444 }
WindowIds() const3445 const std::deque<uint64_t>& GpuWindowMemData::WindowIds() const
3446 {
3447     return windowIds_;
3448 }
ModuleNameIds() const3449 const std::deque<DataIndex>& GpuWindowMemData::ModuleNameIds() const
3450 {
3451     return moduleNameIds_;
3452 }
CategoryNameIds() const3453 const std::deque<DataIndex>& GpuWindowMemData::CategoryNameIds() const
3454 {
3455     return categoryNameIds_;
3456 }
Sizes() const3457 const std::deque<uint64_t>& GpuWindowMemData::Sizes() const
3458 {
3459     return sizes_;
3460 }
Counts() const3461 const std::deque<uint32_t>& GpuWindowMemData::Counts() const
3462 {
3463     return counts_;
3464 }
PurgeableSizes() const3465 const std::deque<uint64_t>& GpuWindowMemData::PurgeableSizes() const
3466 {
3467     return purgeableSizes_;
3468 }
3469 
3470 } // namespace TraceStdtype
3471 } // namespace SysTuning
3472