• 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 namespace SysTuning {
21 namespace TraceStdtype {
22 const int32_t MAX_SIZE_LEN = 80;
23 const int32_t ONE_MILLION_NANOSECONDS = 1000000;
24 #define UNUSED(expr)             \
25     do {                         \
26         static_cast<void>(expr); \
27     } while (0)
SetDur(uint64_t index,uint64_t dur)28 void CpuCacheBase::SetDur(uint64_t index, uint64_t dur)
29 {
30     durs_[index] = dur;
31 }
AppendThreadState(InternalTime ts,InternalTime dur,InternalCpu cpu,InternalTid itid,TableRowId idState)32 TableRowId ThreadStateData::AppendThreadState(InternalTime ts,
33                                               InternalTime dur,
34                                               InternalCpu cpu,
35                                               InternalTid itid,
36                                               TableRowId idState)
37 {
38     timeStamps_.emplace_back(ts);
39     durations_.emplace_back(dur);
40     itids_.emplace_back(itid);
41     tids_.emplace_back(INVALID_UINT32);
42     pids_.emplace_back(INVALID_UINT32);
43     states_.emplace_back(idState);
44     cpus_.emplace_back(cpu);
45     argSetIds_.emplace_back(INVALID_UINT32);
46     return itids_.size() - 1;
47 }
48 
SetDuration(TableRowId index,InternalTime dur)49 void ThreadStateData::SetDuration(TableRowId index, InternalTime dur)
50 {
51     durations_[index] = dur;
52 }
Finish()53 void DataDict::Finish()
54 {
55     std::string::size_type pos(0);
56     for (auto i = 0; i < dataDict_.size(); i++) {
57         if (dataDict_[i].empty()) {
58             continue;
59         }
60         while ((pos = dataDict_[i].find("\"")) != std::string::npos) {
61             dataDict_[i].replace(pos, 1, "\'");
62         }
63         while ((dataDict_[i].back() >= SPASCII_START && dataDict_[i].back() <= SPASCII_END) ||
64                dataDict_[i].back() == '\r') {
65             dataDict_[i].pop_back();
66         }
67     }
68 }
UpdateDuration(TableRowId index,InternalTime ts)69 TableRowId ThreadStateData::UpdateDuration(TableRowId index, InternalTime ts)
70 {
71     if (durations_[index] == INVALID_TIME) {
72         durations_[index] = ts - timeStamps_[index];
73     }
74     return itids_[index];
75 }
76 
End(TableRowId index,InternalTime ts)77 bool ThreadStateData::End(TableRowId index, InternalTime ts)
78 {
79     if (durations_[index] == INVALID_TIME) {
80         durations_[index] = -1;
81         return false;
82     }
83     return true;
84 }
UpdateState(TableRowId index,TableRowId idState)85 void ThreadStateData::UpdateState(TableRowId index, TableRowId idState)
86 {
87     states_[index] = idState;
88 }
SetArgSetId(TableRowId index,uint32_t setId)89 void ThreadStateData::SetArgSetId(TableRowId index, uint32_t setId)
90 {
91     argSetIds_[index] = setId;
92 }
93 
UpdateDuration(TableRowId index,InternalTime ts,TableRowId idState)94 void ThreadStateData::UpdateDuration(TableRowId index, InternalTime ts, TableRowId idState)
95 {
96     durations_[index] = ts - timeStamps_[index];
97     states_[index] = idState;
98 }
99 
UpdateTidAndPid(TableRowId index,InternalTid tid,InternalTid pid)100 void ThreadStateData::UpdateTidAndPid(TableRowId index, InternalTid tid, InternalTid pid)
101 {
102     tids_[index] = tid;
103     pids_[index] = pid;
104 }
105 
UpdateDuration(TableRowId index,InternalTime ts,InternalCpu cpu,TableRowId idState)106 TableRowId ThreadStateData::UpdateDuration(TableRowId index, InternalTime ts, InternalCpu cpu, TableRowId idState)
107 {
108     cpus_[index] = cpu;
109     durations_[index] = ts - timeStamps_[index];
110     states_[index] = idState;
111     return itids_[index];
112 }
113 
AppendSchedSlice(uint64_t ts,uint64_t dur,uint64_t cpu,uint32_t internalTid,uint64_t endState,uint64_t priority)114 size_t SchedSlice::AppendSchedSlice(uint64_t ts,
115                                     uint64_t dur,
116                                     uint64_t cpu,
117                                     uint32_t internalTid,
118                                     uint64_t endState,
119                                     uint64_t priority)
120 {
121     timeStamps_.emplace_back(ts);
122     durs_.emplace_back(dur);
123     cpus_.emplace_back(cpu);
124     tsEnds_.emplace_back(0);
125     internalTids_.emplace_back(internalTid);
126     endStates_.emplace_back(endState);
127     priority_.emplace_back(priority);
128     argSets_.emplace_back(INVALID_UINT32);
129     return Size() - 1;
130 }
131 
SetDuration(size_t index,uint64_t duration)132 void SchedSlice::SetDuration(size_t index, uint64_t duration)
133 {
134     durs_[index] = duration;
135     tsEnds_[index] = timeStamps_[index] + duration;
136 }
137 
Update(uint64_t index,uint64_t ts,uint64_t state)138 void SchedSlice::Update(uint64_t index, uint64_t ts, uint64_t state)
139 {
140     durs_[index] = ts - timeStamps_[index];
141     endStates_[index] = state;
142 }
143 
UpdateArg(uint64_t index,uint32_t argsetId)144 void SchedSlice::UpdateArg(uint64_t index, uint32_t argsetId)
145 {
146     argSets_[index] = argsetId;
147 }
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)148 size_t CallStack::AppendInternalAsyncSlice(uint64_t startT,
149                                            uint64_t durationNs,
150                                            InternalTid internalTid,
151                                            DataIndex cat,
152                                            uint16_t nameIdentify,
153                                            DataIndex name,
154                                            uint8_t depth,
155                                            uint64_t cookid,
156                                            const std::optional<uint64_t>& parentId)
157 {
158     AppendCommonInfo(startT, durationNs, internalTid);
159     AppendCallStack(cat, name, depth, parentId);
160     AppendDistributeInfo();
161     cookies_.emplace_back(cookid);
162     ids_.emplace_back(ids_.size());
163     identifys_.emplace_back(nameIdentify + depth);
164     return Size() - 1;
165 }
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)166 size_t CallStack::AppendInternalSlice(uint64_t startT,
167                                       uint64_t durationNs,
168                                       InternalTid internalTid,
169                                       DataIndex cat,
170                                       uint16_t nameIdentify,
171                                       DataIndex name,
172                                       uint8_t depth,
173                                       const std::optional<uint64_t>& parentId)
174 {
175     AppendCommonInfo(startT, durationNs, internalTid);
176     AppendCallStack(cat, name, depth, parentId);
177     identifys_.emplace_back(nameIdentify + depth);
178     ids_.emplace_back(ids_.size());
179     cookies_.emplace_back(INVALID_UINT64);
180     AppendDistributeInfo();
181     return Size() - 1;
182 }
183 
AppendCommonInfo(uint64_t startT,uint64_t durationNs,InternalTid internalTid)184 void CallStack::AppendCommonInfo(uint64_t startT, uint64_t durationNs, InternalTid internalTid)
185 {
186     timeStamps_.emplace_back(startT);
187     durs_.emplace_back(durationNs);
188     callIds_.emplace_back(internalTid);
189 }
AppendCallStack(DataIndex cat,DataIndex name,uint8_t depth,std::optional<uint64_t> parentId)190 void CallStack::AppendCallStack(DataIndex cat, DataIndex name, uint8_t depth, std::optional<uint64_t> parentId)
191 {
192     parentIds_.emplace_back(parentId);
193     cats_.emplace_back(cat);
194     names_.emplace_back(name);
195     depths_.emplace_back(depth);
196 }
SetDistributeInfo(size_t index,const std::string & chainId,const std::string & spanId,const std::string & parentSpanId,const std::string & flag,const std::string & args)197 void CallStack::SetDistributeInfo(size_t index,
198                                   const std::string& chainId,
199                                   const std::string& spanId,
200                                   const std::string& parentSpanId,
201                                   const std::string& flag,
202                                   const std::string& args)
203 {
204     chainIds_[index] = chainId;
205     spanIds_[index] = spanId;
206     parentSpanIds_[index] = parentSpanId;
207     flags_[index] = flag;
208     args_[index] = args;
209     argSet_[index] = INVALID_UINT32;
210 }
AppendDistributeInfo(const std::string & chainId,const std::string & spanId,const std::string & parentSpanId,const std::string & flag,const std::string & args)211 void CallStack::AppendDistributeInfo(const std::string& chainId,
212                                      const std::string& spanId,
213                                      const std::string& parentSpanId,
214                                      const std::string& flag,
215                                      const std::string& args)
216 {
217     chainIds_.emplace_back(chainId);
218     spanIds_.emplace_back(spanId);
219     parentSpanIds_.emplace_back(parentSpanId);
220     flags_.emplace_back(flag);
221     args_.emplace_back(args);
222     argSet_.emplace_back(INVALID_UINT32);
223 }
AppendDistributeInfo()224 void CallStack::AppendDistributeInfo()
225 {
226     chainIds_.emplace_back("");
227     spanIds_.emplace_back("");
228     parentSpanIds_.emplace_back("");
229     flags_.emplace_back("");
230     args_.emplace_back("");
231     argSet_.emplace_back(INVALID_UINT32);
232 }
SetDuration(size_t index,uint64_t timeStamp)233 void CallStack::SetDuration(size_t index, uint64_t timeStamp)
234 {
235     durs_[index] = timeStamp - timeStamps_[index];
236 }
SetDurationWithFlag(size_t index,uint64_t timeStamp)237 void CallStack::SetDurationWithFlag(size_t index, uint64_t timeStamp)
238 {
239     durs_[index] = timeStamp - timeStamps_[index];
240     flags_[index] = "1";
241 }
242 
SetFlag(size_t index,uint8_t flag)243 void CallStack::SetFlag(size_t index, uint8_t flag)
244 {
245     flags_[index] = std::to_string(flag);
246 }
SetDurationEx(size_t index,uint32_t dur)247 void CallStack::SetDurationEx(size_t index, uint32_t dur)
248 {
249     durs_[index] = dur;
250 }
251 
SetIrqDurAndArg(size_t index,uint64_t timeStamp,uint32_t argSetId)252 void CallStack::SetIrqDurAndArg(size_t index, uint64_t timeStamp, uint32_t argSetId)
253 {
254     SetDuration(index, timeStamp);
255     argSet_[index] = argSetId;
256 }
SetTimeStamp(size_t index,uint64_t timeStamp)257 void CallStack::SetTimeStamp(size_t index, uint64_t timeStamp)
258 {
259     timeStamps_[index] = timeStamp;
260 }
261 
SetDepth(size_t index,uint8_t depth)262 void CallStack::SetDepth(size_t index, uint8_t depth)
263 {
264     depths_[index] = depth;
265 }
SetArgSetId(size_t index,uint32_t argSetId)266 void CallStack::SetArgSetId(size_t index, uint32_t argSetId)
267 {
268     argSet_[index] = argSetId;
269 }
ParentIdData() const270 const std::deque<std::optional<uint64_t>>& CallStack::ParentIdData() const
271 {
272     return parentIds_;
273 }
CatsData() const274 const std::deque<DataIndex>& CallStack::CatsData() const
275 {
276     return cats_;
277 }
IdentifysData() const278 const std::deque<uint16_t>& CallStack::IdentifysData() const
279 {
280     return identifys_;
281 }
NamesData() const282 const std::deque<DataIndex>& CallStack::NamesData() const
283 {
284     return names_;
285 }
Depths() const286 const std::deque<uint8_t>& CallStack::Depths() const
287 {
288     return depths_;
289 }
Cookies() const290 const std::deque<uint64_t>& CallStack::Cookies() const
291 {
292     return cookies_;
293 }
CallIds() const294 const std::deque<uint32_t>& CallStack::CallIds() const
295 {
296     return callIds_;
297 }
ChainIds() const298 const std::deque<std::string>& CallStack::ChainIds() const
299 {
300     return chainIds_;
301 }
SpanIds() const302 const std::deque<std::string>& CallStack::SpanIds() const
303 {
304     return spanIds_;
305 }
ParentSpanIds() const306 const std::deque<std::string>& CallStack::ParentSpanIds() const
307 {
308     return parentSpanIds_;
309 }
Flags() const310 const std::deque<std::string>& CallStack::Flags() const
311 {
312     return flags_;
313 }
ArgsData() const314 const std::deque<std::string>& CallStack::ArgsData() const
315 {
316     return args_;
317 }
ArgSetIdsData() const318 const std::deque<uint32_t>& CallStack::ArgSetIdsData() const
319 {
320     return argSet_;
321 }
322 
AppendNewArg(DataIndex nameId,BaseDataType dataType,int64_t value,size_t argSet)323 size_t ArgSet::AppendNewArg(DataIndex nameId, BaseDataType dataType, int64_t value, size_t argSet)
324 {
325     dataTypes_.emplace_back(dataType);
326     argset_.emplace_back(argSet);
327     ids_.emplace_back(Size());
328     values_.emplace_back(value);
329     names_.emplace_back(nameId);
330     return Size() - 1;
331 }
DataTypes() const332 const std::deque<BaseDataType>& ArgSet::DataTypes() const
333 {
334     return dataTypes_;
335 }
ValuesData() const336 const std::deque<int64_t>& ArgSet::ValuesData() const
337 {
338     return values_;
339 }
ArgsData() const340 const std::deque<uint64_t>& ArgSet::ArgsData() const
341 {
342     return argset_;
343 }
NamesData() const344 const std::deque<DataIndex>& ArgSet::NamesData() const
345 {
346     return names_;
347 }
348 
AppendNewFilter(uint64_t filterId,DataIndex type,DataIndex nameId)349 size_t SysMeasureFilter::AppendNewFilter(uint64_t filterId, DataIndex type, DataIndex nameId)
350 {
351     ids_.emplace_back(filterId);
352     names_.emplace_back(nameId);
353     types_.emplace_back(type);
354     return ids_.size() - 1;
355 }
NamesData() const356 const std::deque<DataIndex>& SysMeasureFilter::NamesData() const
357 {
358     return names_;
359 }
360 
TypesData() const361 const std::deque<DataIndex>& SysMeasureFilter::TypesData() const
362 {
363     return types_;
364 }
AppendNewDataType(BaseDataType dataType,DataIndex dataDescIndex)365 size_t DataType::AppendNewDataType(BaseDataType dataType, DataIndex dataDescIndex)
366 {
367     ids_.emplace_back(Size());
368     dataTypes_.emplace_back(dataType);
369     descs_.emplace_back(dataDescIndex);
370     return Size() - 1;
371 }
372 
DataTypes() const373 const std::deque<BaseDataType>& DataType::DataTypes() const
374 {
375     return dataTypes_;
376 }
DataDesc() const377 const std::deque<DataIndex>& DataType::DataDesc() const
378 {
379     return descs_;
380 }
AppendNewFilterData(std::string type,std::string name,uint64_t sourceArgSetId)381 size_t Filter::AppendNewFilterData(std::string type, std::string name, uint64_t sourceArgSetId)
382 {
383     nameDeque_.emplace_back(name);
384     sourceArgSetId_.emplace_back(sourceArgSetId);
385     ids_.emplace_back(Size());
386     typeDeque_.emplace_back(type);
387     return Size() - 1;
388 }
389 
AppendMeasureData(uint32_t type,uint64_t timeStamp,int64_t value,uint32_t filterId)390 size_t Measure::AppendMeasureData(uint32_t type, uint64_t timeStamp, int64_t value, uint32_t filterId)
391 {
392     valuesDeque_.emplace_back(value);
393     filterIdDeque_.emplace_back(filterId);
394     typeDeque_.emplace_back(type);
395     timeStamps_.emplace_back(timeStamp);
396     durDeque_.emplace_back(INVALID_UINT64);
397     return Size() - 1;
398 }
399 
SetDur(uint32_t row,uint64_t timeStamp)400 void Measure::SetDur(uint32_t row, uint64_t timeStamp)
401 {
402     durDeque_[row] = timeStamp - timeStamps_[row];
403 }
AppendRawData(uint32_t id,uint64_t timeStamp,uint32_t name,uint32_t cpu,uint32_t internalTid)404 size_t Raw::AppendRawData(uint32_t id, uint64_t timeStamp, uint32_t name, uint32_t cpu, uint32_t internalTid)
405 {
406     ids_.emplace_back(id);
407     timeStamps_.emplace_back(timeStamp);
408     nameDeque_.emplace_back(name);
409     cpuDeque_.emplace_back(cpu);
410     itidDeque_.emplace_back(internalTid);
411     return Size() - 1;
412 }
413 
AppendNewFilter(uint64_t filterId,uint32_t nameIndex,uint64_t internalTid)414 size_t ThreadMeasureFilter::AppendNewFilter(uint64_t filterId, uint32_t nameIndex, uint64_t internalTid)
415 {
416     filterId_.emplace_back(filterId);
417     nameIndex_.emplace_back(nameIndex);
418     internalTids_.emplace_back(internalTid);
419     return Size() - 1;
420 }
421 
AppendInstantEventData(uint64_t timeStamp,DataIndex nameIndex,int64_t internalTid,int64_t wakeupFromInternalPid)422 size_t Instants::AppendInstantEventData(uint64_t timeStamp,
423                                         DataIndex nameIndex,
424                                         int64_t internalTid,
425                                         int64_t wakeupFromInternalPid)
426 {
427     internalTids_.emplace_back(internalTid);
428     timeStamps_.emplace_back(timeStamp);
429     NameIndexs_.emplace_back(nameIndex);
430     wakeupFromInternalPids_.emplace_back(wakeupFromInternalPid);
431     return Size() - 1;
432 }
AppendNewLogInfo(uint64_t seq,uint64_t timeStamp,uint32_t pid,uint32_t tid,DataIndex level,DataIndex tag,DataIndex context,uint64_t originTs)433 size_t LogInfo::AppendNewLogInfo(uint64_t seq,
434                                  uint64_t timeStamp,
435                                  uint32_t pid,
436                                  uint32_t tid,
437                                  DataIndex level,
438                                  DataIndex tag,
439                                  DataIndex context,
440                                  uint64_t originTs)
441 {
442     hilogLineSeqs_.emplace_back(seq);
443     timeStamps_.emplace_back(timeStamp);
444     pids_.emplace_back(pid);
445     tids_.emplace_back(tid);
446     levels_.emplace_back(level);
447     tags_.emplace_back(tag);
448     contexts_.emplace_back(context);
449     originTs_.emplace_back(originTs);
450     return Size() - 1;
451 }
HilogLineSeqs() const452 const std::deque<uint64_t>& LogInfo::HilogLineSeqs() const
453 {
454     return hilogLineSeqs_;
455 }
Pids() const456 const std::deque<uint32_t>& LogInfo::Pids() const
457 {
458     return pids_;
459 }
Tids() const460 const std::deque<uint32_t>& LogInfo::Tids() const
461 {
462     return tids_;
463 }
Levels() const464 const std::deque<DataIndex>& LogInfo::Levels() const
465 {
466     return levels_;
467 }
Tags() const468 const std::deque<DataIndex>& LogInfo::Tags() const
469 {
470     return tags_;
471 }
Contexts() const472 const std::deque<DataIndex>& LogInfo::Contexts() const
473 {
474     return contexts_;
475 }
OriginTimeStamData() const476 const std::deque<uint64_t>& LogInfo::OriginTimeStamData() const
477 {
478     return originTs_;
479 }
UpdateCallChainId(size_t row,uint32_t callChainId)480 void NativeHook::UpdateCallChainId(size_t row, uint32_t callChainId)
481 {
482     if (row < Size()) {
483         callChainIds_[row] = callChainId;
484     } else {
485         TS_LOGE("Native hook update callChainId failed!!!");
486     }
487 }
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)488 size_t NativeHook::AppendNewNativeHookData(uint32_t callChainId,
489                                            uint32_t ipid,
490                                            uint32_t itid,
491                                            std::string eventType,
492                                            DataIndex subType,
493                                            uint64_t timeStamp,
494                                            uint64_t endTimeStamp,
495                                            uint64_t duration,
496                                            uint64_t addr,
497                                            int64_t memSize)
498 {
499     callChainIds_.emplace_back(callChainId);
500     ipids_.emplace_back(ipid);
501     itids_.emplace_back(itid);
502     eventTypes_.emplace_back(eventType);
503     subTypes_.emplace_back(subType);
504     timeStamps_.emplace_back(timeStamp);
505     endTimeStamps_.emplace_back(endTimeStamp);
506     durations_.emplace_back(duration);
507     addrs_.emplace_back(addr);
508     memSizes_.emplace_back(memSize);
509     if (eventType == ALLOC_EVET) {
510         countHeapSizes_ += memSize;
511         allMemSizes_.emplace_back(countHeapSizes_);
512     } else if (eventType == FREE_EVENT) {
513         countHeapSizes_ -= memSize;
514         allMemSizes_.emplace_back(countHeapSizes_);
515     } else if (eventType == MMAP_EVENT) {
516         countMmapSizes_ += memSize;
517         allMemSizes_.emplace_back(countMmapSizes_);
518     } else if (eventType == MUNMAP_EVENT) {
519         countMmapSizes_ -= memSize;
520         allMemSizes_.emplace_back(countMmapSizes_);
521     }
522     currentSizeDurs_.emplace_back(0);
523     lastCallerPathIndexs_.emplace_back(INVALID_UINT64);
524     return Size() - 1;
525 }
UpdateEndTimeStampAndDuration(size_t row,uint64_t endTimeStamp)526 void NativeHook::UpdateEndTimeStampAndDuration(size_t row, uint64_t endTimeStamp)
527 {
528     endTimeStamps_[row] = endTimeStamp;
529     durations_[row] = endTimeStamp - timeStamps_[row];
530 }
UpdateCurrentSizeDur(size_t row,uint64_t timeStamp)531 void NativeHook::UpdateCurrentSizeDur(size_t row, uint64_t timeStamp)
532 {
533     currentSizeDurs_[row] = timeStamp - timeStamps_[row];
534 }
UpdateMemMapSubType(uint64_t row,uint64_t tagId)535 void NativeHook::UpdateMemMapSubType(uint64_t row, uint64_t tagId)
536 {
537     if (row < subTypes_.size()) {
538         subTypes_[row] = tagId;
539     } else {
540         TS_LOGE("subTypes_ row is invalid!");
541     }
542 }
UpdateLastCallerPathIndexs(std::unordered_map<uint32_t,uint64_t> & callIdToLasLibId)543 void NativeHook::UpdateLastCallerPathIndexs(std::unordered_map<uint32_t, uint64_t>& callIdToLasLibId)
544 {
545     if (callIdToLasLibId.empty()) {
546         return;
547     }
548     for (auto i = 0; i < Size(); ++i) {
549         auto symbolIt = callIdToLasLibId.find(callChainIds_[i]);
550         if (symbolIt != callIdToLasLibId.end()) {
551             lastCallerPathIndexs_[i] = symbolIt->second;
552         } else {
553             lastCallerPathIndexs_[i] = INVALID_UINT64;
554         }
555     }
556 }
CallChainIds() const557 const std::deque<uint32_t>& NativeHook::CallChainIds() const
558 {
559     return callChainIds_;
560 }
Ipids() const561 const std::deque<uint32_t>& NativeHook::Ipids() const
562 {
563     return ipids_;
564 }
Itids() const565 const std::deque<uint32_t>& NativeHook::Itids() const
566 {
567     return itids_;
568 }
EventTypes() const569 const std::deque<std::string>& NativeHook::EventTypes() const
570 {
571     return eventTypes_;
572 }
SubTypes() const573 const std::deque<DataIndex>& NativeHook::SubTypes() const
574 {
575     return subTypes_;
576 }
EndTimeStamps() const577 const std::deque<uint64_t>& NativeHook::EndTimeStamps() const
578 {
579     return endTimeStamps_;
580 }
Durations() const581 const std::deque<uint64_t>& NativeHook::Durations() const
582 {
583     return durations_;
584 }
Addrs() const585 const std::deque<uint64_t>& NativeHook::Addrs() const
586 {
587     return addrs_;
588 }
MemSizes() const589 const std::deque<int64_t>& NativeHook::MemSizes() const
590 {
591     return memSizes_;
592 }
AllMemSizes() const593 const std::deque<int64_t>& NativeHook::AllMemSizes() const
594 {
595     return allMemSizes_;
596 }
CurrentSizeDurs() const597 const std::deque<uint64_t>& NativeHook::CurrentSizeDurs() const
598 {
599     return currentSizeDurs_;
600 }
LastCallerPathIndexs() const601 const std::deque<uint64_t>& NativeHook::LastCallerPathIndexs() const
602 {
603     return lastCallerPathIndexs_;
604 }
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)605 size_t NativeHookFrame::AppendNewNativeHookFrame(uint32_t callChainId,
606                                                  uint64_t depth,
607                                                  uint64_t ip,
608                                                  uint64_t sp,
609                                                  DataIndex symbolName,
610                                                  DataIndex filePath,
611                                                  uint64_t offset,
612                                                  uint64_t symbolOffset,
613                                                  const std::string& vaddr)
614 {
615     callChainIds_.emplace_back(callChainId);
616     ips_.emplace_back(ip);
617     sps_.emplace_back(sp);
618     depths_.emplace_back(depth);
619     symbolNames_.emplace_back(symbolName);
620     filePaths_.emplace_back(filePath);
621     offsets_.emplace_back(offset);
622     symbolOffsets_.emplace_back(symbolOffset);
623     vaddrs_.emplace_back(vaddr);
624     return Size() - 1;
625 }
AppendNewNativeHookFrame(uint32_t callChainId,uint64_t depth,uint64_t ip,uint64_t sp,DataIndex symbolName,DataIndex filePath,uint64_t offset,uint64_t symbolOffset)626 size_t NativeHookFrame::AppendNewNativeHookFrame(uint32_t callChainId,
627                                                  uint64_t depth,
628                                                  uint64_t ip,
629                                                  uint64_t sp,
630                                                  DataIndex symbolName,
631                                                  DataIndex filePath,
632                                                  uint64_t offset,
633                                                  uint64_t symbolOffset)
634 {
635     callChainIds_.emplace_back(callChainId);
636     ips_.emplace_back(ip);
637     sps_.emplace_back(sp);
638     depths_.emplace_back(depth);
639     symbolNames_.emplace_back(symbolName);
640     filePaths_.emplace_back(filePath);
641     offsets_.emplace_back(offset);
642     symbolOffsets_.emplace_back(symbolOffset);
643     return Size() - 1;
644 }
UpdateSymbolIdToNameMap(uint64_t originSymbolId,uint64_t symbolId)645 void NativeHookFrame::UpdateSymbolIdToNameMap(uint64_t originSymbolId, uint64_t symbolId)
646 {
647     symbolIdToSymbolName_.insert(std::make_pair(originSymbolId, symbolId));
648 }
UpdateFrameInfo(size_t row,DataIndex symbolIndex,DataIndex filePathIndex,uint64_t offset,uint64_t symbolOffset)649 void NativeHookFrame::UpdateFrameInfo(size_t row,
650                                       DataIndex symbolIndex,
651                                       DataIndex filePathIndex,
652                                       uint64_t offset,
653                                       uint64_t symbolOffset)
654 {
655     if (row >= Size()) {
656         TS_LOGE("The updated row does not exist!");
657         return;
658     }
659     symbolNames_[row] = symbolIndex;
660     filePaths_[row] = filePathIndex;
661     offsets_[row] = offset;
662     symbolOffsets_[row] = symbolOffset;
663 }
664 
UpdateSymbolId()665 void NativeHookFrame::UpdateSymbolId()
666 {
667     if (symbolIdToSymbolName_.empty()) {
668         return;
669     }
670     for (auto i = 0; i < Size(); ++i) {
671         auto symbolIt = symbolIdToSymbolName_.find(symbolNames_[i]);
672         if (symbolIt != symbolIdToSymbolName_.end()) {
673             symbolNames_[i] = symbolIt->second;
674         }
675     }
676 }
UpdateSymbolId(size_t index,DataIndex symbolId)677 void NativeHookFrame::UpdateSymbolId(size_t index, DataIndex symbolId)
678 {
679     if (index < Size()) {
680         symbolNames_[index] = symbolId;
681     }
682 }
UpdateFileId(std::map<uint32_t,uint64_t> & filePathIdToFilePathName)683 void NativeHookFrame::UpdateFileId(std::map<uint32_t, uint64_t>& filePathIdToFilePathName)
684 {
685     if (filePathIdToFilePathName.empty()) {
686         return;
687     }
688     for (auto i = 0; i < Size(); ++i) {
689         auto symbolIt = filePathIdToFilePathName.find(filePaths_[i]);
690         if (symbolIt != filePathIdToFilePathName.end()) {
691             filePaths_[i] = symbolIt->second;
692         }
693     }
694 }
UpdateVaddrs(std::deque<std::string> & vaddrs)695 void NativeHookFrame::UpdateVaddrs(std::deque<std::string>& vaddrs)
696 {
697     vaddrs_.assign(vaddrs.begin(), vaddrs.end());
698 }
CallChainIds() const699 const std::deque<uint32_t>& NativeHookFrame::CallChainIds() const
700 {
701     return callChainIds_;
702 }
Depths() const703 const std::deque<uint64_t>& NativeHookFrame::Depths() const
704 {
705     return depths_;
706 }
Ips() const707 const std::deque<uint64_t>& NativeHookFrame::Ips() const
708 {
709     return ips_;
710 }
Sps() const711 const std::deque<uint64_t>& NativeHookFrame::Sps() const
712 {
713     return sps_;
714 }
SymbolNames() const715 const std::deque<DataIndex>& NativeHookFrame::SymbolNames() const
716 {
717     return symbolNames_;
718 }
FilePaths() const719 const std::deque<DataIndex>& NativeHookFrame::FilePaths() const
720 {
721     return filePaths_;
722 }
Offsets() const723 const std::deque<uint64_t>& NativeHookFrame::Offsets() const
724 {
725     return offsets_;
726 }
SymbolOffsets() const727 const std::deque<uint64_t>& NativeHookFrame::SymbolOffsets() const
728 {
729     return symbolOffsets_;
730 }
Vaddrs() const731 const std::deque<std::string>& NativeHookFrame::Vaddrs() const
732 {
733     return vaddrs_;
734 }
735 
AppendNewNativeHookStatistic(uint32_t ipid,uint64_t timeStamp,uint32_t callChainId,uint32_t memoryType,uint64_t applyCount,uint64_t releaseCount,uint64_t applySize,uint64_t releaseSize)736 size_t NativeHookStatistic::AppendNewNativeHookStatistic(uint32_t ipid,
737                                                          uint64_t timeStamp,
738                                                          uint32_t callChainId,
739                                                          uint32_t memoryType,
740                                                          uint64_t applyCount,
741                                                          uint64_t releaseCount,
742                                                          uint64_t applySize,
743                                                          uint64_t releaseSize)
744 {
745     ids_.emplace_back(Size());
746     ipids_.emplace_back(ipid);
747     timeStamps_.emplace_back(timeStamp);
748     callChainIds_.emplace_back(callChainId);
749     memoryTypes_.emplace_back(memoryType);
750     applyCounts_.emplace_back(applyCount);
751     releaseCounts_.emplace_back(releaseCount);
752     applySizes_.emplace_back(applySize);
753     releaseSizes_.emplace_back(releaseSize);
754     return Size() - 1;
755 }
Ipids() const756 const std::deque<uint32_t>& NativeHookStatistic::Ipids() const
757 {
758     return ipids_;
759 }
CallChainIds() const760 const std::deque<uint32_t>& NativeHookStatistic::CallChainIds() const
761 {
762     return callChainIds_;
763 }
MemoryTypes() const764 const std::deque<uint32_t>& NativeHookStatistic::MemoryTypes() const
765 {
766     return memoryTypes_;
767 }
ApplyCounts() const768 const std::deque<uint64_t>& NativeHookStatistic::ApplyCounts() const
769 {
770     return applyCounts_;
771 }
ReleaseCounts() const772 const std::deque<uint64_t>& NativeHookStatistic::ReleaseCounts() const
773 {
774     return releaseCounts_;
775 }
ApplySizes() const776 const std::deque<uint64_t>& NativeHookStatistic::ApplySizes() const
777 {
778     return applySizes_;
779 }
ReleaseSizes() const780 const std::deque<uint64_t>& NativeHookStatistic::ReleaseSizes() const
781 {
782     return releaseSizes_;
783 }
AppendNewHidumpInfo(uint64_t timeStamp,uint32_t fps)784 size_t Hidump::AppendNewHidumpInfo(uint64_t timeStamp, uint32_t fps)
785 {
786     timeStamps_.emplace_back(timeStamp);
787     fpss_.emplace_back(fps);
788     return Size() - 1;
789 }
Fpss() const790 const std::deque<uint32_t>& Hidump::Fpss() const
791 {
792     return fpss_;
793 }
794 
AppendNewPerfCallChain(uint64_t sampleId,uint32_t callChainId,uint64_t vaddrInFile,uint64_t fileId,uint64_t symbolId)795 size_t PerfCallChain::AppendNewPerfCallChain(uint64_t sampleId,
796                                              uint32_t callChainId,
797                                              uint64_t vaddrInFile,
798                                              uint64_t fileId,
799                                              uint64_t symbolId)
800 {
801     ids_.emplace_back(Size());
802     sampleIds_.emplace_back(sampleId);
803     callChainIds_.emplace_back(callChainId);
804     vaddrInFiles_.emplace_back(vaddrInFile);
805     fileIds_.emplace_back(fileId);
806     symbolIds_.emplace_back(symbolId);
807     names_.emplace_back("");
808     return Size() - 1;
809 }
SampleIds() const810 const std::deque<uint64_t>& PerfCallChain::SampleIds() const
811 {
812     return sampleIds_;
813 }
CallChainIds() const814 const std::deque<uint32_t>& PerfCallChain::CallChainIds() const
815 {
816     return callChainIds_;
817 }
VaddrInFiles() const818 const std::deque<uint64_t>& PerfCallChain::VaddrInFiles() const
819 {
820     return vaddrInFiles_;
821 }
FileIds() const822 const std::deque<uint64_t>& PerfCallChain::FileIds() const
823 {
824     return fileIds_;
825 }
SymbolIds() const826 const std::deque<uint64_t>& PerfCallChain::SymbolIds() const
827 {
828     return symbolIds_;
829 }
830 
Names() const831 const std::deque<std::string>& PerfCallChain::Names() const
832 {
833     return names_;
834 }
SetName(uint64_t index,const std::string & name)835 void PerfCallChain::SetName(uint64_t index, const std::string& name)
836 {
837     names_[index] = name;
838 }
Clear()839 void PerfCallChain::Clear()
840 {
841     CacheBase::Clear();
842     sampleIds_.clear();
843     callChainIds_.clear();
844     vaddrInFiles_.clear();
845     fileIds_.clear();
846     symbolIds_.clear();
847     names_.clear();
848 }
AppendNewPerfFiles(uint64_t fileIds,uint32_t serial,DataIndex symbols,DataIndex filePath)849 size_t PerfFiles::AppendNewPerfFiles(uint64_t fileIds, uint32_t serial, DataIndex symbols, DataIndex filePath)
850 {
851     ids_.emplace_back(Size());
852     fileIds_.emplace_back(fileIds);
853     serials_.emplace_back(serial);
854     symbols_.emplace_back(symbols);
855     filePaths_.emplace_back(filePath);
856     return Size() - 1;
857 }
FileIds() const858 const std::deque<uint64_t>& PerfFiles::FileIds() const
859 {
860     return fileIds_;
861 }
862 
Serials() const863 const std::deque<uint32_t>& PerfFiles::Serials() const
864 {
865     return serials_;
866 }
Symbols() const867 const std::deque<DataIndex>& PerfFiles::Symbols() const
868 {
869     return symbols_;
870 }
FilePaths() const871 const std::deque<DataIndex>& PerfFiles::FilePaths() const
872 {
873     return filePaths_;
874 }
875 
Clear()876 void PerfFiles::Clear()
877 {
878     CacheBase::Clear();
879     fileIds_.clear();
880     serials_.clear();
881     symbols_.clear();
882     filePaths_.clear();
883 }
884 
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)885 size_t PerfSample::AppendNewPerfSample(uint32_t sampleId,
886                                        uint64_t timeStamp,
887                                        uint32_t tid,
888                                        uint64_t eventCount,
889                                        uint64_t eventTypeId,
890                                        uint64_t timestampTrace,
891                                        uint64_t cpuId,
892                                        uint64_t threadState)
893 {
894     ids_.emplace_back(Size());
895     sampleIds_.emplace_back(sampleId);
896     timeStamps_.emplace_back(timeStamp);
897     tids_.emplace_back(tid);
898     eventCounts_.emplace_back(eventCount);
899     eventTypeIds_.emplace_back(eventTypeId);
900     timestampTraces_.emplace_back(timestampTrace);
901     cpuIds_.emplace_back(cpuId);
902     threadStates_.emplace_back(threadState);
903     return Size() - 1;
904 }
SampleIds() const905 const std::deque<uint32_t>& PerfSample::SampleIds() const
906 {
907     return sampleIds_;
908 }
Tids() const909 const std::deque<uint32_t>& PerfSample::Tids() const
910 {
911     return tids_;
912 }
EventCounts() const913 const std::deque<uint64_t>& PerfSample::EventCounts() const
914 {
915     return eventCounts_;
916 }
EventTypeIds() const917 const std::deque<uint64_t>& PerfSample::EventTypeIds() const
918 {
919     return eventTypeIds_;
920 }
TimestampTraces() const921 const std::deque<uint64_t>& PerfSample::TimestampTraces() const
922 {
923     return timestampTraces_;
924 }
CpuIds() const925 const std::deque<uint64_t>& PerfSample::CpuIds() const
926 {
927     return cpuIds_;
928 }
ThreadStates() const929 const std::deque<DataIndex>& PerfSample::ThreadStates() const
930 {
931     return threadStates_;
932 }
933 
Clear()934 void PerfSample::Clear()
935 {
936     CacheBase::Clear();
937     sampleIds_.clear();
938     tids_.clear();
939     eventCounts_.clear();
940     eventTypeIds_.clear();
941     timestampTraces_.clear();
942     cpuIds_.clear();
943     threadStates_.clear();
944 }
945 
AppendNewPerfThread(uint32_t pid,uint32_t tid,DataIndex threadName)946 size_t PerfThread::AppendNewPerfThread(uint32_t pid, uint32_t tid, DataIndex threadName)
947 {
948     ids_.emplace_back(Size());
949     pids_.emplace_back(pid);
950     tids_.emplace_back(tid);
951     threadNames_.emplace_back(threadName);
952     return Size() - 1;
953 }
Pids() const954 const std::deque<uint32_t>& PerfThread::Pids() const
955 {
956     return pids_;
957 }
Tids() const958 const std::deque<uint32_t>& PerfThread::Tids() const
959 {
960     return tids_;
961 }
ThreadNames() const962 const std::deque<DataIndex>& PerfThread::ThreadNames() const
963 {
964     return threadNames_;
965 }
Clear()966 void PerfThread::Clear()
967 {
968     CacheBase::Clear();
969     tids_.clear();
970     pids_.clear();
971     threadNames_.clear();
972 }
AppendNewPerfReport(DataIndex type,DataIndex value)973 size_t PerfReport::AppendNewPerfReport(DataIndex type, DataIndex value)
974 {
975     ids_.emplace_back(Size());
976     types_.emplace_back(type);
977     values_.emplace_back(value);
978     return Size() - 1;
979 }
Types() const980 const std::deque<DataIndex>& PerfReport::Types() const
981 {
982     return types_;
983 }
Values() const984 const std::deque<DataIndex>& PerfReport::Values() const
985 {
986     return values_;
987 }
AppendNewFilter(uint64_t id,DataIndex name,uint32_t internalPid)988 size_t ProcessMeasureFilter::AppendNewFilter(uint64_t id, DataIndex name, uint32_t internalPid)
989 {
990     internalPids_.emplace_back(internalPid);
991     ids_.emplace_back(id);
992     names_.emplace_back(name);
993     return Size() - 1;
994 }
AppendNewFilter(uint64_t id,DataIndex type,DataIndex name,uint64_t cpu)995 size_t ClockEventData::AppendNewFilter(uint64_t id, DataIndex type, DataIndex name, uint64_t cpu)
996 {
997     cpus_.emplace_back(cpu);
998     ids_.emplace_back(id);
999     types_.emplace_back(type);
1000     names_.emplace_back(name);
1001     return Size() - 1;
1002 }
AppendNewFilter(uint64_t id,uint64_t rate,DataIndex name,uint64_t cpu)1003 size_t ClkEventData::AppendNewFilter(uint64_t id, uint64_t rate, DataIndex name, uint64_t cpu)
1004 {
1005     ids_.emplace_back(id);
1006     rates_.emplace_back(rate);
1007     names_.emplace_back(name);
1008     cpus_.emplace_back(cpu);
1009     return Size() - 1;
1010 }
AppendSysCallData(int64_t sysCallNum,DataIndex type,uint32_t ipid,uint64_t timeStamp,int64_t ret)1011 size_t SysCall::AppendSysCallData(int64_t sysCallNum, DataIndex type, uint32_t ipid, uint64_t timeStamp, int64_t ret)
1012 {
1013     sysCallNums_.emplace_back(sysCallNum);
1014     types_.emplace_back(type);
1015     ipids_.emplace_back(ipid);
1016     timeStamps_.emplace_back(timeStamp);
1017     rets_.emplace_back(ret);
1018     return Size() - 1;
1019 }
StatAndInfo()1020 StatAndInfo::StatAndInfo()
1021 {
1022     // sched_switch_received | sched_switch_not_match | sched_switch_not_not_supported etc.
1023     for (int32_t i = TRACE_EVENT_START; i < TRACE_EVENT_MAX; i++) {
1024         event_[i] = config_.eventNameMap_.at(static_cast<SupportedTraceEventType>(i));
1025     }
1026     for (int32_t j = STAT_EVENT_START; j < STAT_EVENT_MAX; j++) {
1027         stat_[j] = config_.eventErrorDescMap_.at(static_cast<StatType>(j));
1028     }
1029 
1030     for (int32_t i = TRACE_EVENT_START; i < TRACE_EVENT_MAX; i++) {
1031         for (int32_t j = STAT_EVENT_START; j < STAT_EVENT_MAX; j++) {
1032             statSeverity_[i][j] = config_.eventParserStatSeverityDescMap_.at(static_cast<SupportedTraceEventType>(i))
1033                                       .at(static_cast<StatType>(j));
1034         }
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             statSeverityDesc_[i][j] = config_.serverityLevelDescMap_.at(statSeverity_[i][j]);
1040         }
1041     }
1042 
1043     for (int32_t i = TRACE_EVENT_START; i < TRACE_EVENT_MAX; i++) {
1044         for (int32_t j = STAT_EVENT_START; j < STAT_EVENT_MAX; j++) {
1045             statCount_[i][j] = 0;
1046         }
1047     }
1048     clockid2ClockNameMap_ = {
1049         {TS_CLOCK_UNKNOW, "unknown"},        {TS_CLOCK_BOOTTIME, "boottime"},
1050         {TS_CLOCK_REALTIME, "realtime"},     {TS_CLOCK_REALTIME_COARSE, "realtime_corse"},
1051         {TS_MONOTONIC, "monotonic"},         {TS_MONOTONIC_COARSE, "monotonic-coarse"},
1052         {TS_MONOTONIC_RAW, "monotonic-raw"},
1053     };
1054 }
IncreaseStat(SupportedTraceEventType eventType,StatType type)1055 void StatAndInfo::IncreaseStat(SupportedTraceEventType eventType, StatType type)
1056 {
1057     statCount_[eventType][type]++;
1058 }
GetValue(SupportedTraceEventType eventType,StatType type) const1059 const uint32_t& StatAndInfo::GetValue(SupportedTraceEventType eventType, StatType type) const
1060 {
1061     return statCount_[eventType][type];
1062 }
GetEvent(SupportedTraceEventType eventType) const1063 const std::string& StatAndInfo::GetEvent(SupportedTraceEventType eventType) const
1064 {
1065     return event_[eventType];
1066 }
GetStat(StatType type) const1067 const std::string& StatAndInfo::GetStat(StatType type) const
1068 {
1069     return stat_[type];
1070 }
GetSeverityDesc(SupportedTraceEventType eventType,StatType type) const1071 const std::string& StatAndInfo::GetSeverityDesc(SupportedTraceEventType eventType, StatType type) const
1072 {
1073     return statSeverityDesc_[eventType][type];
1074 }
GetSeverity(SupportedTraceEventType eventType,StatType type) const1075 const StatSeverityLevel& StatAndInfo::GetSeverity(SupportedTraceEventType eventType, StatType type) const
1076 {
1077     return statSeverity_[eventType][type];
1078 }
1079 
Size() const1080 uint64_t SymbolsData::Size() const
1081 {
1082     return addrs_.size();
1083 }
InsertSymbol(const DataIndex & name,const uint64_t & addr)1084 void SymbolsData::InsertSymbol(const DataIndex& name, const uint64_t& addr)
1085 {
1086     addrs_.emplace_back(addr);
1087     funcName_.emplace_back(name);
1088 }
GetConstFuncNames() const1089 const std::deque<DataIndex>& SymbolsData::GetConstFuncNames() const
1090 {
1091     return funcName_;
1092 }
GetConstAddrs() const1093 const std::deque<uint64_t>& SymbolsData::GetConstAddrs() const
1094 {
1095     return addrs_;
1096 }
MetaData()1097 MetaData::MetaData()
1098 {
1099     columnNames_.resize(METADATA_ITEM_MAX);
1100     values_.resize(METADATA_ITEM_MAX);
1101     columnNames_[METADATA_ITEM_DATASIZE] = METADATA_ITEM_DATASIZE_COLNAME;
1102     columnNames_[METADATA_ITEM_PARSETOOL_NAME] = METADATA_ITEM_PARSETOOL_NAME_COLNAME;
1103     columnNames_[METADATA_ITEM_PARSERTOOL_VERSION] = METADATA_ITEM_PARSERTOOL_VERSION_COLNAME;
1104     columnNames_[METADATA_ITEM_PARSERTOOL_PUBLISH_DATETIME] = METADATA_ITEM_PARSERTOOL_PUBLISH_DATETIME_COLNAME;
1105     columnNames_[METADATA_ITEM_SOURCE_FILENAME] = METADATA_ITEM_SOURCE_FILENAME_COLNAME;
1106     columnNames_[METADATA_ITEM_OUTPUT_FILENAME] = METADATA_ITEM_OUTPUT_FILENAME_COLNAME;
1107     columnNames_[METADATA_ITEM_PARSERTIME] = METADATA_ITEM_PARSERTIME_COLNAME;
1108     columnNames_[METADATA_ITEM_TRACE_DURATION] = METADATA_ITEM_TRACE_DURATION_COLNAME;
1109     columnNames_[METADATA_ITEM_SOURCE_DATETYPE] = METADATA_ITEM_SOURCE_DATETYPE_COLNAME;
1110     values_[METADATA_ITEM_PARSETOOL_NAME] = "trace_streamer";
1111 }
SetTraceType(const std::string & traceType)1112 void MetaData::SetTraceType(const std::string& traceType)
1113 {
1114     values_[METADATA_ITEM_SOURCE_DATETYPE] = traceType;
1115 }
SetSourceFileName(const std::string & fileName)1116 void MetaData::SetSourceFileName(const std::string& fileName)
1117 {
1118     MetaData::values_[METADATA_ITEM_SOURCE_FILENAME] = fileName;
1119 }
SetOutputFileName(const std::string & fileName)1120 void MetaData::SetOutputFileName(const std::string& fileName)
1121 {
1122     MetaData::values_[METADATA_ITEM_OUTPUT_FILENAME] = fileName;
1123 }
SetParserToolVersion(const std::string & version)1124 void MetaData::SetParserToolVersion(const std::string& version)
1125 {
1126     values_[METADATA_ITEM_PARSERTOOL_VERSION] = version;
1127 }
SetParserToolPublishDateTime(const std::string & datetime)1128 void MetaData::SetParserToolPublishDateTime(const std::string& datetime)
1129 {
1130     values_[METADATA_ITEM_PARSERTOOL_PUBLISH_DATETIME] = datetime;
1131 }
SetTraceDataSize(uint64_t dataSize)1132 void MetaData::SetTraceDataSize(uint64_t dataSize)
1133 {
1134     std::stringstream ss;
1135     ss << dataSize;
1136     values_[METADATA_ITEM_DATASIZE] = ss.str();
1137     // 	Function 'time' may return error. It is not allowed to do anything that might fail inside the constructor.
1138     time_t rawtime;
1139     struct tm* timeinfo = nullptr;
1140     void(time(&rawtime));
1141     timeinfo = localtime(&rawtime);
1142     char buffer[MAX_SIZE_LEN];
1143     strftime(buffer, MAX_SIZE_LEN, "%Y-%m-%d %H:%M:%S", timeinfo);
1144     values_[METADATA_ITEM_PARSERTIME].append(buffer);
1145     // sometimes there will be a extra \n at last
1146     values_[METADATA_ITEM_PARSERTIME].pop_back();
1147 }
SetTraceDuration(uint64_t dur)1148 void MetaData::SetTraceDuration(uint64_t dur)
1149 {
1150     values_[METADATA_ITEM_TRACE_DURATION] = std::to_string(dur) + " s";
1151 }
Value(uint64_t row) const1152 const std::string& MetaData::Value(uint64_t row) const
1153 {
1154     return values_[row];
1155 }
Name(uint64_t row) const1156 const std::string& MetaData::Name(uint64_t row) const
1157 {
1158     return columnNames_[row];
1159 }
GetStringIndex(std::string_view str)1160 DataIndex DataDict::GetStringIndex(std::string_view str)
1161 {
1162     auto hashValue = hashFun(str);
1163     auto itor = dataDictInnerMap_.find(hashValue);
1164     if (itor != dataDictInnerMap_.end()) {
1165         return itor->second;
1166     }
1167     mutex_.lock();
1168     dataDict_.emplace_back(std::string(str));
1169     DataIndex stringIdentity = dataDict_.size() - 1;
1170     dataDictInnerMap_.emplace(hashValue, stringIdentity);
1171     mutex_.unlock();
1172     return stringIdentity;
1173 }
GetStringIndexNoWrite(std::string_view str) const1174 DataIndex DataDict::GetStringIndexNoWrite(std::string_view str) const
1175 {
1176     auto hashValue = hashFun(str);
1177     auto itor = dataDictInnerMap_.find(hashValue);
1178     if (itor != dataDictInnerMap_.end()) {
1179         return itor->second;
1180     }
1181     return INVALID_UINT64;
1182 }
AppendNewData(uint64_t newTimeStamp,uint64_t dur,double totalLoad,double userLoad,double systemLoad,int64_t threads)1183 size_t CpuUsageDetailData::AppendNewData(uint64_t newTimeStamp,
1184                                          uint64_t dur,
1185                                          double totalLoad,
1186                                          double userLoad,
1187                                          double systemLoad,
1188                                          int64_t threads)
1189 {
1190     timeStamps_.emplace_back(newTimeStamp);
1191     durs_.emplace_back(dur);
1192     totalLoad_.emplace_back(totalLoad);
1193     userLoad_.emplace_back(userLoad);
1194     systemLoad_.emplace_back(systemLoad);
1195     threads_.emplace_back(threads);
1196     return Size() - 1;
1197 }
Durs() const1198 const std::deque<uint64_t>& CpuUsageDetailData::Durs() const
1199 {
1200     return durs_;
1201 }
TotalLoad() const1202 const std::deque<double>& CpuUsageDetailData::TotalLoad() const
1203 {
1204     return totalLoad_;
1205 }
UserLoad() const1206 const std::deque<double>& CpuUsageDetailData::UserLoad() const
1207 {
1208     return userLoad_;
1209 }
SystemLoad() const1210 const std::deque<double>& CpuUsageDetailData::SystemLoad() const
1211 {
1212     return systemLoad_;
1213 }
Threads() const1214 const std::deque<int64_t>& CpuUsageDetailData::Threads() const
1215 {
1216     return threads_;
1217 }
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)1218 size_t LiveProcessDetailData::AppendNewData(uint64_t newTimeStamp,
1219                                             uint64_t dur,
1220                                             int32_t processID,
1221                                             std::string processName,
1222                                             int32_t parentProcessID,
1223                                             int32_t uid,
1224                                             std::string userName,
1225                                             double cpuUsage,
1226                                             int32_t pssInfo,
1227                                             uint64_t cpuTime,
1228                                             int32_t threads,
1229                                             int64_t diskWrites,
1230                                             int64_t diskReads)
1231 {
1232     timeStamps_.emplace_back(newTimeStamp);
1233     durs_.emplace_back(dur);
1234     processID_.emplace_back(processID);
1235     processName_.emplace_back(processName);
1236     parentProcessID_.emplace_back(parentProcessID);
1237     uid_.emplace_back(uid);
1238     userName_.emplace_back(userName);
1239     cpuUsage_.emplace_back(cpuUsage);
1240     pssInfo_.emplace_back(pssInfo);
1241     threads_.emplace_back(threads);
1242     diskWrites_.emplace_back(diskWrites);
1243     diskReads_.emplace_back(diskReads);
1244     cpuTimes_.emplace_back(cpuTime);
1245     return Size() - 1;
1246 }
Durs() const1247 const std::deque<uint64_t>& LiveProcessDetailData::Durs() const
1248 {
1249     return durs_;
1250 }
ProcessID() const1251 const std::deque<int32_t>& LiveProcessDetailData::ProcessID() const
1252 {
1253     return processID_;
1254 }
ProcessName() const1255 const std::deque<std::string>& LiveProcessDetailData::ProcessName() const
1256 {
1257     return processName_;
1258 }
ParentProcessID() const1259 const std::deque<int32_t>& LiveProcessDetailData::ParentProcessID() const
1260 {
1261     return parentProcessID_;
1262 }
Uid() const1263 const std::deque<int32_t>& LiveProcessDetailData::Uid() const
1264 {
1265     return uid_;
1266 }
UserName() const1267 const std::deque<std::string>& LiveProcessDetailData::UserName() const
1268 {
1269     return userName_;
1270 }
CpuUsage() const1271 const std::deque<double>& LiveProcessDetailData::CpuUsage() const
1272 {
1273     return cpuUsage_;
1274 }
PssInfo() const1275 const std::deque<int32_t>& LiveProcessDetailData::PssInfo() const
1276 {
1277     return pssInfo_;
1278 }
Threads() const1279 const std::deque<int32_t>& LiveProcessDetailData::Threads() const
1280 {
1281     return threads_;
1282 }
DiskWrites() const1283 const std::deque<int64_t>& LiveProcessDetailData::DiskWrites() const
1284 {
1285     return diskWrites_;
1286 }
DiskReads() const1287 const std::deque<int64_t>& LiveProcessDetailData::DiskReads() const
1288 {
1289     return diskReads_;
1290 }
1291 
CpuTimes() const1292 const std::deque<uint64_t>& LiveProcessDetailData::CpuTimes() const
1293 {
1294     return cpuTimes_;
1295 }
1296 
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)1297 size_t NetDetailData::AppendNewNetData(uint64_t newTimeStamp,
1298                                        uint64_t tx,
1299                                        uint64_t rx,
1300                                        uint64_t dur,
1301                                        double rxSpeed,
1302                                        double txSpeed,
1303                                        uint64_t packetIn,
1304                                        double packetInSec,
1305                                        uint64_t packetOut,
1306                                        double packetOutSec,
1307                                        const std::string& netType)
1308 {
1309     timeStamps_.emplace_back(newTimeStamp);
1310     txs_.emplace_back(tx);
1311     rxs_.emplace_back(rx);
1312     durs_.emplace_back(dur);
1313     txSpeeds_.emplace_back(txSpeed);
1314     rxSpeeds_.emplace_back(rxSpeed);
1315     netTypes_.emplace_back(netType);
1316     packetIn_.emplace_back(packetIn);
1317     packetInSec_.emplace_back(packetInSec);
1318     packetOut_.emplace_back(packetOut);
1319     packetOutSec_.emplace_back(packetOutSec);
1320 
1321     return Size() - 1;
1322 }
Durs() const1323 const std::deque<uint64_t>& NetDetailData::Durs() const
1324 {
1325     return durs_;
1326 }
RxSpeed() const1327 const std::deque<double>& NetDetailData::RxSpeed() const
1328 {
1329     return rxSpeeds_;
1330 }
TxSpeed() const1331 const std::deque<double>& NetDetailData::TxSpeed() const
1332 {
1333     return txSpeeds_;
1334 }
NetTypes() const1335 const std::deque<std::string>& NetDetailData::NetTypes() const
1336 {
1337     return netTypes_;
1338 }
RxDatas() const1339 const std::deque<uint64_t>& NetDetailData::RxDatas() const
1340 {
1341     return rxs_;
1342 }
TxDatas() const1343 const std::deque<uint64_t>& NetDetailData::TxDatas() const
1344 {
1345     return txs_;
1346 }
PacketIn() const1347 const std::deque<uint64_t>& NetDetailData::PacketIn() const
1348 {
1349     return packetIn_;
1350 }
PacketInSec() const1351 const std::deque<double>& NetDetailData::PacketInSec() const
1352 {
1353     return packetInSec_;
1354 }
PacketOut() const1355 const std::deque<uint64_t>& NetDetailData::PacketOut() const
1356 {
1357     return packetOut_;
1358 }
PacketOutSec() const1359 const std::deque<double>& NetDetailData::PacketOutSec() const
1360 {
1361     return packetOutSec_;
1362 }
1363 
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)1364 void DiskIOData::AppendNewData(uint64_t ts,
1365                                uint64_t dur,
1366                                uint64_t rd,
1367                                uint64_t wr,
1368                                uint64_t rdPerSec,
1369                                uint64_t wrPerSec,
1370                                double rdCountPerSec,
1371                                double wrCountPerSec,
1372                                uint64_t rdCount,
1373                                uint64_t wrCount)
1374 {
1375     timeStamps_.emplace_back(ts);
1376     durs_.emplace_back(dur);
1377     rdDatas_.emplace_back(rd);
1378     wrDatas_.emplace_back(wr);
1379     rdPerSec_.emplace_back(rdPerSec);
1380     wrPerSec_.emplace_back(wrPerSec);
1381     rdCountPerSec_.emplace_back(rdCountPerSec);
1382     wrCountPerSec_.emplace_back(wrCountPerSec);
1383     rdCountDatas_.emplace_back(rdCount);
1384     wrCountDatas_.emplace_back(wrCount);
1385 }
Durs() const1386 const std::deque<uint64_t>& DiskIOData::Durs() const
1387 {
1388     return durs_;
1389 }
RdDatas() const1390 const std::deque<uint64_t>& DiskIOData::RdDatas() const
1391 {
1392     return rdDatas_;
1393 }
WrDatas() const1394 const std::deque<uint64_t>& DiskIOData::WrDatas() const
1395 {
1396     return wrDatas_;
1397 }
RdSpeedDatas() const1398 const std::deque<double>& DiskIOData::RdSpeedDatas() const
1399 {
1400     return rdPerSec_;
1401 }
WrSpeedDatas() const1402 const std::deque<double>& DiskIOData::WrSpeedDatas() const
1403 {
1404     return wrPerSec_;
1405 }
1406 
RdCountPerSecDatas() const1407 const std::deque<double>& DiskIOData::RdCountPerSecDatas() const
1408 {
1409     return rdCountPerSec_;
1410 }
WrCountPerSecDatas() const1411 const std::deque<double>& DiskIOData::WrCountPerSecDatas() const
1412 {
1413     return wrCountPerSec_;
1414 }
RdCountDatas() const1415 const std::deque<uint64_t>& DiskIOData::RdCountDatas() const
1416 {
1417     return rdCountDatas_;
1418 }
WrCountDatas() const1419 const std::deque<uint64_t>& DiskIOData::WrCountDatas() const
1420 {
1421     return wrCountDatas_;
1422 }
1423 
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)1424 size_t FileSystemSample::AppendNewData(uint32_t callChainId,
1425                                        uint16_t type,
1426                                        uint32_t ipid,
1427                                        uint32_t itid,
1428                                        uint64_t startTs,
1429                                        uint64_t endTs,
1430                                        uint64_t dur,
1431                                        DataIndex returnValue,
1432                                        DataIndex errorCode,
1433                                        size_t size,
1434                                        int32_t fd,
1435                                        DataIndex fileId,
1436                                        DataIndex firstArgument,
1437                                        DataIndex secondArgument,
1438                                        DataIndex thirdArgument,
1439                                        DataIndex fourthArgument)
1440 {
1441     callChainIds_.emplace_back(callChainId);
1442     types_.emplace_back(type);
1443     ipids_.emplace_back(ipid);
1444     itids_.emplace_back(itid);
1445     startTs_.emplace_back(startTs);
1446     endTs_.emplace_back(endTs);
1447     durs_.emplace_back(dur);
1448     returnValues_.emplace_back(returnValue);
1449     errorCodes_.emplace_back(errorCode);
1450     fds_.emplace_back(fd);
1451     fileIds_.emplace_back(fileId);
1452     Sizes_.emplace_back(size);
1453     firstArguments_.emplace_back(firstArgument);
1454     secondArguments_.emplace_back(secondArgument);
1455     thirdArguments_.emplace_back(thirdArgument);
1456     fourthArguments_.emplace_back(fourthArgument);
1457     ids_.emplace_back(Size());
1458     return Size() - 1;
1459 }
CallChainIds() const1460 const std::deque<uint32_t>& FileSystemSample::CallChainIds() const
1461 {
1462     return callChainIds_;
1463 }
Types() const1464 const std::deque<uint16_t>& FileSystemSample::Types() const
1465 {
1466     return types_;
1467 }
Ipids() const1468 const std::deque<uint32_t>& FileSystemSample::Ipids() const
1469 {
1470     return ipids_;
1471 }
Itids() const1472 const std::deque<uint32_t>& FileSystemSample::Itids() const
1473 {
1474     return itids_;
1475 }
StartTs() const1476 const std::deque<uint64_t>& FileSystemSample::StartTs() const
1477 {
1478     return startTs_;
1479 }
EndTs() const1480 const std::deque<uint64_t>& FileSystemSample::EndTs() const
1481 {
1482     return endTs_;
1483 }
Durs() const1484 const std::deque<uint64_t>& FileSystemSample::Durs() const
1485 {
1486     return durs_;
1487 }
ReturnValues() const1488 const std::deque<DataIndex>& FileSystemSample::ReturnValues() const
1489 {
1490     return returnValues_;
1491 }
ErrorCodes() const1492 const std::deque<DataIndex>& FileSystemSample::ErrorCodes() const
1493 {
1494     return errorCodes_;
1495 }
Fds() const1496 const std::deque<int32_t>& FileSystemSample::Fds() const
1497 {
1498     return fds_;
1499 }
FileIds() const1500 const std::deque<DataIndex>& FileSystemSample::FileIds() const
1501 {
1502     return fileIds_;
1503 }
Sizes() const1504 const std::deque<size_t>& FileSystemSample::Sizes() const
1505 {
1506     return Sizes_;
1507 }
FirstArguments() const1508 const std::deque<DataIndex>& FileSystemSample::FirstArguments() const
1509 {
1510     return firstArguments_;
1511 }
SecondArguments() const1512 const std::deque<DataIndex>& FileSystemSample::SecondArguments() const
1513 {
1514     return secondArguments_;
1515 }
ThirdArguments() const1516 const std::deque<DataIndex>& FileSystemSample::ThirdArguments() const
1517 {
1518     return thirdArguments_;
1519 }
FourthArguments() const1520 const std::deque<DataIndex>& FileSystemSample::FourthArguments() const
1521 {
1522     return fourthArguments_;
1523 }
1524 
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)1525 size_t PagedMemorySampleData::AppendNewData(uint32_t callChainId,
1526                                             uint16_t type,
1527                                             uint32_t ipid,
1528                                             uint64_t startTs,
1529                                             uint64_t endTs,
1530                                             uint64_t dur,
1531                                             size_t size,
1532                                             DataIndex addr,
1533                                             uint32_t itid)
1534 {
1535     callChainIds_.emplace_back(callChainId);
1536     types_.emplace_back(type);
1537     ipids_.emplace_back(ipid);
1538     startTs_.emplace_back(startTs);
1539     endTs_.emplace_back(endTs);
1540     durs_.emplace_back(dur);
1541     Sizes_.emplace_back(size);
1542     addrs_.emplace_back(addr);
1543     itids_.emplace_back(itid);
1544     ids_.emplace_back(Size());
1545     return Size() - 1;
1546 }
CallChainIds() const1547 const std::deque<uint32_t>& PagedMemorySampleData::CallChainIds() const
1548 {
1549     return callChainIds_;
1550 }
Types() const1551 const std::deque<uint16_t>& PagedMemorySampleData::Types() const
1552 {
1553     return types_;
1554 }
Ipids() const1555 const std::deque<uint32_t>& PagedMemorySampleData::Ipids() const
1556 {
1557     return ipids_;
1558 }
Itids() const1559 const std::deque<uint32_t>& PagedMemorySampleData::Itids() const
1560 {
1561     return itids_;
1562 }
StartTs() const1563 const std::deque<uint64_t>& PagedMemorySampleData::StartTs() const
1564 {
1565     return startTs_;
1566 }
EndTs() const1567 const std::deque<uint64_t>& PagedMemorySampleData::EndTs() const
1568 {
1569     return endTs_;
1570 }
Durs() const1571 const std::deque<uint64_t>& PagedMemorySampleData::Durs() const
1572 {
1573     return durs_;
1574 }
Sizes() const1575 const std::deque<size_t>& PagedMemorySampleData::Sizes() const
1576 {
1577     return Sizes_;
1578 }
Addr() const1579 const std::deque<DataIndex>& PagedMemorySampleData::Addr() const
1580 {
1581     return addrs_;
1582 }
1583 
AppendNewData(uint32_t callChainId,uint32_t depth,DataIndex ip,DataIndex symbolId,DataIndex filePathId)1584 size_t EbpfCallStackData::AppendNewData(uint32_t callChainId,
1585                                         uint32_t depth,
1586                                         DataIndex ip,
1587                                         DataIndex symbolId,
1588                                         DataIndex filePathId)
1589 {
1590     callChainIds_.emplace_back(callChainId);
1591     depths_.emplace_back(depth);
1592     ips_.emplace_back(ip);
1593     symbolIds_.emplace_back(symbolId);
1594     filePathIds_.emplace_back(filePathId);
1595     ids_.emplace_back(Size());
1596     return Size() - 1;
1597 }
UpdateSymbolAndFilePathIndex(size_t row,DataIndex symbolId,DataIndex filePathId)1598 void EbpfCallStackData::UpdateSymbolAndFilePathIndex(size_t row, DataIndex symbolId, DataIndex filePathId)
1599 {
1600     if (row >= Size()) {
1601         TS_LOGE("The updated row does not exist!");
1602         return;
1603     }
1604     symbolIds_[row] = symbolId;
1605     filePathIds_[row] = filePathId;
1606 }
CallChainIds() const1607 const std::deque<uint32_t>& EbpfCallStackData::CallChainIds() const
1608 {
1609     return callChainIds_;
1610 }
Depths() const1611 const std::deque<uint32_t>& EbpfCallStackData::Depths() const
1612 {
1613     return depths_;
1614 }
Ips() const1615 const std::deque<DataIndex>& EbpfCallStackData::Ips() const
1616 {
1617     return ips_;
1618 }
SymbolIds() const1619 const std::deque<DataIndex>& EbpfCallStackData::SymbolIds() const
1620 {
1621     return symbolIds_;
1622 }
FilePathIds() const1623 const std::deque<DataIndex>& EbpfCallStackData::FilePathIds() const
1624 {
1625     return filePathIds_;
1626 }
1627 #if WITH_EBPF_HELP
AppendNewData(uint64_t start,uint64_t end,uint32_t offset,uint32_t pid,uint32_t fileNameLen,uint64_t fileNameIndex)1628 size_t EbpfProcessMaps::AppendNewData(uint64_t start,
1629                                       uint64_t end,
1630                                       uint32_t offset,
1631                                       uint32_t pid,
1632                                       uint32_t fileNameLen,
1633                                       uint64_t fileNameIndex)
1634 {
1635     starts_.emplace_back(start);
1636     ends_.emplace_back(end);
1637     offsets_.emplace_back(offset);
1638     pids_.emplace_back(pid);
1639     fileNameLens_.emplace_back(fileNameLen);
1640     fileNameIndexs_.emplace_back(fileNameIndex);
1641     ids_.emplace_back(Size());
1642     return Size() - 1;
1643 }
1644 
Starts() const1645 const std::deque<uint64_t>& EbpfProcessMaps::Starts() const
1646 {
1647     return starts_;
1648 }
Ends() const1649 const std::deque<uint64_t>& EbpfProcessMaps::Ends() const
1650 {
1651     return ends_;
1652 }
Offsets() const1653 const std::deque<uint32_t>& EbpfProcessMaps::Offsets() const
1654 {
1655     return offsets_;
1656 }
Pids() const1657 const std::deque<uint32_t>& EbpfProcessMaps::Pids() const
1658 {
1659     return pids_;
1660 }
FileNameLens() const1661 const std::deque<uint32_t>& EbpfProcessMaps::FileNameLens() const
1662 {
1663     return fileNameLens_;
1664 }
FileNameIndexs() const1665 const std::deque<uint64_t>& EbpfProcessMaps::FileNameIndexs() const
1666 {
1667     return fileNameIndexs_;
1668 }
1669 
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)1670 size_t EbpfElf::AppendNewData(uint64_t elfId,
1671                               uint64_t textVaddr,
1672                               uint32_t textOffset,
1673                               uint32_t strTabLen,
1674                               uint32_t symTabLen,
1675                               uint32_t fileNameLen,
1676                               uint32_t symEntLen,
1677                               uint64_t fileNameIndex)
1678 {
1679     elfIds_.emplace_back(elfId);
1680     textVaddrs_.emplace_back(textVaddr);
1681     textOffsets_.emplace_back(textOffset);
1682     strTabLens_.emplace_back(strTabLen);
1683     symTabLens_.emplace_back(symTabLen);
1684     fileNameLens_.emplace_back(fileNameLen);
1685     symEntLens_.emplace_back(symEntLen);
1686     fileNameIndexs_.emplace_back(fileNameIndex);
1687     ids_.emplace_back(Size());
1688     return Size() - 1;
1689 }
ElfIds() const1690 const std::deque<uint64_t>& EbpfElf::ElfIds() const
1691 {
1692     return elfIds_;
1693 }
TextVaddrs() const1694 const std::deque<uint64_t>& EbpfElf::TextVaddrs() const
1695 {
1696     return textVaddrs_;
1697 }
TextOffsets() const1698 const std::deque<uint32_t>& EbpfElf::TextOffsets() const
1699 {
1700     return textOffsets_;
1701 }
StrTabLens() const1702 const std::deque<uint32_t>& EbpfElf::StrTabLens() const
1703 {
1704     return strTabLens_;
1705 }
SymTabLens() const1706 const std::deque<uint32_t>& EbpfElf::SymTabLens() const
1707 {
1708     return symTabLens_;
1709 }
FileNameLens() const1710 const std::deque<uint32_t>& EbpfElf::FileNameLens() const
1711 {
1712     return fileNameLens_;
1713 }
SymEntLens() const1714 const std::deque<uint32_t>& EbpfElf::SymEntLens() const
1715 {
1716     return symEntLens_;
1717 }
FileNameIndexs() const1718 const std::deque<uint64_t>& EbpfElf::FileNameIndexs() const
1719 {
1720     return fileNameIndexs_;
1721 }
1722 
AppendNewData(uint64_t elfId,uint32_t stName,uint64_t stValue,uint64_t stSize)1723 size_t EbpfElfSymbol::AppendNewData(uint64_t elfId, uint32_t stName, uint64_t stValue, uint64_t stSize)
1724 {
1725     elfIds_.emplace_back(elfId);
1726     stNames_.emplace_back(stName);
1727     stValues_.emplace_back(stValue);
1728     stSizes_.emplace_back(stSize);
1729     ids_.emplace_back(Size());
1730     return Size() - 1;
1731 }
ElfIds() const1732 const std::deque<uint64_t>& EbpfElfSymbol::ElfIds() const
1733 {
1734     return elfIds_;
1735 }
StNames() const1736 const std::deque<uint32_t>& EbpfElfSymbol::StNames() const
1737 {
1738     return stNames_;
1739 }
StValues() const1740 const std::deque<uint64_t>& EbpfElfSymbol::StValues() const
1741 {
1742     return stValues_;
1743 }
StSizes() const1744 const std::deque<uint64_t>& EbpfElfSymbol::StSizes() const
1745 {
1746     return stSizes_;
1747 }
1748 #endif
AppendAppName(uint8_t flags,DataIndex eventSource,DataIndex appName)1749 uint32_t AppNames::AppendAppName(uint8_t flags, DataIndex eventSource, DataIndex appName)
1750 {
1751     flags_.push_back(flags);
1752     appNames_.push_back(eventSource);
1753     keyNames_.push_back(appName);
1754     ids_.push_back(keyNames_.size() - 1);
1755     return Size() - 1;
1756 }
Falgs() const1757 const std::deque<uint8_t>& AppNames::Falgs() const
1758 {
1759     return flags_;
1760 }
EventSourceId() const1761 const std::deque<DataIndex>& AppNames::EventSourceId() const
1762 {
1763     return appNames_;
1764 }
AppName() const1765 const std::deque<DataIndex>& AppNames::AppName() const
1766 {
1767     return keyNames_;
1768 }
1769 
AppendData(uint64_t serial,uint64_t ts,uint32_t nameId,uint32_t keyId,int32_t type,double numericValue,DataIndex stringValue)1770 void SysEventMeasureData::AppendData(uint64_t serial,
1771                                      uint64_t ts,
1772                                      uint32_t nameId,
1773                                      uint32_t keyId,
1774                                      int32_t type,
1775                                      double numericValue,
1776                                      DataIndex stringValue)
1777 {
1778     serial_.emplace_back(serial);
1779     ts_.emplace_back(ts);
1780     nameFilterIds_.emplace_back(nameId);
1781     appKeyFilterIds_.emplace_back(keyId);
1782     types_.emplace_back(type);
1783     numValues_.emplace_back(numericValue);
1784     stringValues_.emplace_back(stringValue);
1785     ids_.push_back(rowCount_);
1786     rowCount_++;
1787 }
Serial() const1788 const std::deque<uint64_t>& SysEventMeasureData::Serial() const
1789 {
1790     return serial_;
1791 }
Ts() const1792 const std::deque<uint64_t>& SysEventMeasureData::Ts() const
1793 {
1794     return ts_;
1795 }
NameFilterId() const1796 const std::deque<uint32_t>& SysEventMeasureData::NameFilterId() const
1797 {
1798     return nameFilterIds_;
1799 }
AppKeyFilterId() const1800 const std::deque<uint32_t>& SysEventMeasureData::AppKeyFilterId() const
1801 {
1802     return appKeyFilterIds_;
1803 }
Type() const1804 const std::deque<int32_t>& SysEventMeasureData::Type() const
1805 {
1806     return types_;
1807 }
NumValue() const1808 const std::deque<double>& SysEventMeasureData::NumValue() const
1809 {
1810     return numValues_;
1811 }
StringValue() const1812 const std::deque<DataIndex>& SysEventMeasureData::StringValue() const
1813 {
1814     return stringValues_;
1815 }
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)1816 void DeviceStateData::AppendNewData(int32_t brightness,
1817                                     int32_t btState,
1818                                     int32_t location,
1819                                     int32_t wifi,
1820                                     int32_t streamDefault,
1821                                     int32_t voiceCall,
1822                                     int32_t music,
1823                                     int32_t streamRing,
1824                                     int32_t media,
1825                                     int32_t voiceAssistant,
1826                                     int32_t system,
1827                                     int32_t alarm,
1828                                     int32_t notification,
1829                                     int32_t btSco,
1830                                     int32_t enforcedAudible,
1831                                     int32_t streamDtmf,
1832                                     int32_t streamTts,
1833                                     int32_t accessibility,
1834                                     int32_t recording,
1835                                     int32_t streamAll)
1836 {
1837     brightness_.emplace_back(brightness);
1838     btStates_.emplace_back(btState);
1839     locations_.emplace_back(location);
1840     wifis_.emplace_back(wifi);
1841     streamDefaults_.emplace_back(streamDefault);
1842     voiceCalls_.emplace_back(voiceCall);
1843     musics_.emplace_back(music);
1844     streamRings_.emplace_back(streamRing);
1845     medias_.emplace_back(media);
1846     voiceAssistants_.emplace_back(voiceAssistant);
1847     systems_.emplace_back(system);
1848     alarms_.emplace_back(alarm);
1849     notifications_.emplace_back(notification);
1850     btScos_.emplace_back(btSco);
1851     enforcedAudibles_.emplace_back(enforcedAudible);
1852     streamDtmfs_.emplace_back(streamDtmf);
1853     streamTts_.emplace_back(streamTts);
1854     accessibilitys_.emplace_back(accessibility);
1855     recordings_.emplace_back(recording);
1856     streamAlls_.emplace_back(streamAll);
1857     ids_.push_back(rowCounts_);
1858     rowCounts_++;
1859 }
Brightness() const1860 const std::deque<int32_t>& DeviceStateData::Brightness() const
1861 {
1862     return brightness_;
1863 }
BtState() const1864 const std::deque<int32_t>& DeviceStateData::BtState() const
1865 {
1866     return btStates_;
1867 }
Location() const1868 const std::deque<int32_t>& DeviceStateData::Location() const
1869 {
1870     return locations_;
1871 }
Wifi() const1872 const std::deque<int32_t>& DeviceStateData::Wifi() const
1873 {
1874     return wifis_;
1875 }
StreamDefault() const1876 const std::deque<int32_t>& DeviceStateData::StreamDefault() const
1877 {
1878     return streamDefaults_;
1879 }
VoiceCall() const1880 const std::deque<int32_t>& DeviceStateData::VoiceCall() const
1881 {
1882     return voiceCalls_;
1883 }
Music() const1884 const std::deque<int32_t>& DeviceStateData::Music() const
1885 {
1886     return musics_;
1887 }
StreamRing() const1888 const std::deque<int32_t>& DeviceStateData::StreamRing() const
1889 {
1890     return streamRings_;
1891 }
Media() const1892 const std::deque<int32_t>& DeviceStateData::Media() const
1893 {
1894     return medias_;
1895 }
VoiceAssistant() const1896 const std::deque<int32_t>& DeviceStateData::VoiceAssistant() const
1897 {
1898     return voiceAssistants_;
1899 }
System() const1900 const std::deque<int32_t>& DeviceStateData::System() const
1901 {
1902     return systems_;
1903 }
Alarm() const1904 const std::deque<int32_t>& DeviceStateData::Alarm() const
1905 {
1906     return alarms_;
1907 }
Notification() const1908 const std::deque<int32_t>& DeviceStateData::Notification() const
1909 {
1910     return notifications_;
1911 }
BtSco() const1912 const std::deque<int32_t>& DeviceStateData::BtSco() const
1913 {
1914     return btScos_;
1915 }
EnforcedAudible() const1916 const std::deque<int32_t>& DeviceStateData::EnforcedAudible() const
1917 {
1918     return enforcedAudibles_;
1919 }
StreamDtmf() const1920 const std::deque<int32_t>& DeviceStateData::StreamDtmf() const
1921 {
1922     return streamDtmfs_;
1923 }
StreamTts() const1924 const std::deque<int32_t>& DeviceStateData::StreamTts() const
1925 {
1926     return streamTts_;
1927 }
Accessibility() const1928 const std::deque<int32_t>& DeviceStateData::Accessibility() const
1929 {
1930     return accessibilitys_;
1931 }
Recording() const1932 const std::deque<int32_t>& DeviceStateData::Recording() const
1933 {
1934     return recordings_;
1935 }
StreamAll() const1936 const std::deque<int32_t>& DeviceStateData::StreamAll() const
1937 {
1938     return streamAlls_;
1939 }
AppendNewData(std::string traceSource,std::string key,std::string value)1940 void TraceConfigData::AppendNewData(std::string traceSource, std::string key, std::string value)
1941 {
1942     traceSource_.emplace_back(traceSource);
1943     key_.emplace_back(key);
1944     value_.emplace_back(value);
1945     ids_.push_back(rowCounts_);
1946     rowCounts_++;
1947 }
TraceSource() const1948 const std::deque<std::string>& TraceConfigData::TraceSource() const
1949 {
1950     return traceSource_;
1951 }
Key() const1952 const std::deque<std::string>& TraceConfigData::Key() const
1953 {
1954     return key_;
1955 }
Value() const1956 const std::deque<std::string>& TraceConfigData::Value() const
1957 {
1958     return value_;
1959 }
AppendNewData(uint64_t timeStamp,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)1960 void SmapsData::AppendNewData(uint64_t timeStamp,
1961                               std::string startAddr,
1962                               std::string endAddr,
1963                               uint64_t dirty,
1964                               uint64_t swapper,
1965                               uint64_t rss,
1966                               uint64_t pss,
1967                               uint64_t size,
1968                               double reside,
1969                               DataIndex protectionId,
1970                               DataIndex pathId)
1971 {
1972     timeStamps_.emplace_back(timeStamp);
1973     startAddrs_.emplace_back(startAddr);
1974     endAddrs_.emplace_back(endAddr);
1975     dirtys_.emplace_back(dirty);
1976     swappers_.emplace_back(swapper);
1977     rss_.emplace_back(rss);
1978     pss_.emplace_back(pss);
1979     sizes_.emplace_back(size);
1980     resides_.emplace_back(reside);
1981     protectionIds_.emplace_back(protectionId);
1982     pathIds_.emplace_back(pathId);
1983     ids_.push_back(rowCount_);
1984     rowCount_++;
1985 }
TimeStamps() const1986 const std::deque<uint64_t>& SmapsData::TimeStamps() const
1987 {
1988     return timeStamps_;
1989 }
StartAddrs() const1990 const std::deque<std::string>& SmapsData::StartAddrs() const
1991 {
1992     return startAddrs_;
1993 }
EndAddrs() const1994 const std::deque<std::string>& SmapsData::EndAddrs() const
1995 {
1996     return endAddrs_;
1997 }
Dirtys() const1998 const std::deque<uint64_t>& SmapsData::Dirtys() const
1999 {
2000     return dirtys_;
2001 }
Swappers() const2002 const std::deque<uint64_t>& SmapsData::Swappers() const
2003 {
2004     return swappers_;
2005 }
Rss() const2006 const std::deque<uint64_t>& SmapsData::Rss() const
2007 {
2008     return rss_;
2009 }
Pss() const2010 const std::deque<uint64_t>& SmapsData::Pss() const
2011 {
2012     return pss_;
2013 }
Sizes() const2014 const std::deque<uint64_t>& SmapsData::Sizes() const
2015 {
2016     return sizes_;
2017 }
Resides() const2018 const std::deque<double>& SmapsData::Resides() const
2019 {
2020     return resides_;
2021 }
ProtectionIds() const2022 const std::deque<DataIndex>& SmapsData::ProtectionIds() const
2023 {
2024     return protectionIds_;
2025 }
PathIds() const2026 const std::deque<DataIndex>& SmapsData::PathIds() const
2027 {
2028     return pathIds_;
2029 }
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)2030 void BioLatencySampleData::AppendNewData(uint32_t callChainId,
2031                                          uint64_t type,
2032                                          uint32_t ipid,
2033                                          uint32_t itid,
2034                                          uint64_t startTs,
2035                                          uint64_t endTs,
2036                                          uint64_t latencyDur,
2037                                          uint32_t tier,
2038                                          uint64_t size,
2039                                          uint64_t blockNumber,
2040                                          uint64_t filePathId,
2041                                          uint64_t durPer4k)
2042 {
2043     callChainIds_.emplace_back(callChainId);
2044     types_.emplace_back(type);
2045     ipids_.emplace_back(ipid);
2046     itids_.emplace_back(itid);
2047     startTs_.emplace_back(startTs);
2048     endTs_.emplace_back(endTs);
2049     latencyDurs_.emplace_back(latencyDur);
2050     tiers_.emplace_back(tier);
2051     sizes_.emplace_back(size);
2052     blockNumbers_.emplace_back(blockNumber);
2053     filePathIds_.emplace_back(filePathId);
2054     durPer4ks_.emplace_back(durPer4k);
2055     ids_.emplace_back(rowCount_);
2056     rowCount_++;
2057 }
CallChainIds() const2058 const std::deque<uint32_t>& BioLatencySampleData::CallChainIds() const
2059 {
2060     return callChainIds_;
2061 }
Types() const2062 const std::deque<uint64_t>& BioLatencySampleData::Types() const
2063 {
2064     return types_;
2065 }
Ipids() const2066 const std::deque<uint32_t>& BioLatencySampleData::Ipids() const
2067 {
2068     return ipids_;
2069 }
Itids() const2070 const std::deque<uint32_t>& BioLatencySampleData::Itids() const
2071 {
2072     return itids_;
2073 }
StartTs() const2074 const std::deque<uint64_t>& BioLatencySampleData::StartTs() const
2075 {
2076     return startTs_;
2077 }
EndTs() const2078 const std::deque<uint64_t>& BioLatencySampleData::EndTs() const
2079 {
2080     return endTs_;
2081 }
LatencyDurs() const2082 const std::deque<uint64_t>& BioLatencySampleData::LatencyDurs() const
2083 {
2084     return latencyDurs_;
2085 }
Tiers() const2086 const std::deque<uint32_t>& BioLatencySampleData::Tiers() const
2087 {
2088     return tiers_;
2089 }
Sizes() const2090 const std::deque<uint64_t>& BioLatencySampleData::Sizes() const
2091 {
2092     return sizes_;
2093 }
BlockNumbers() const2094 const std::deque<uint64_t>& BioLatencySampleData::BlockNumbers() const
2095 {
2096     return blockNumbers_;
2097 }
FilePathIds() const2098 const std::deque<uint64_t>& BioLatencySampleData::FilePathIds() const
2099 {
2100     return filePathIds_;
2101 }
DurPer4k() const2102 const std::deque<uint64_t>& BioLatencySampleData::DurPer4k() const
2103 {
2104     return durPer4ks_;
2105 }
DataSourceClockIdData()2106 DataSourceClockIdData::DataSourceClockIdData()
2107     : dataSource2ClockIdMap_({{DATA_SOURCE_TYPE_TRACE, TS_CLOCK_UNKNOW},
2108                               {DATA_SOURCE_TYPE_MEM, TS_CLOCK_UNKNOW},
2109                               {DATA_SOURCE_TYPE_HILOG, TS_CLOCK_UNKNOW},
2110                               {DATA_SOURCE_TYPE_NATIVEHOOK, TS_CLOCK_UNKNOW},
2111                               {DATA_SOURCE_TYPE_FPS, TS_CLOCK_UNKNOW},
2112                               {DATA_SOURCE_TYPE_NETWORK, TS_CLOCK_UNKNOW},
2113                               {DATA_SOURCE_TYPE_DISKIO, TS_CLOCK_UNKNOW},
2114                               {DATA_SOURCE_TYPE_CPU, TS_CLOCK_UNKNOW},
2115                               {DATA_SOURCE_TYPE_PROCESS, TS_CLOCK_UNKNOW},
2116                               {DATA_SOURCE_TYPE_HISYSEVENT, TS_CLOCK_UNKNOW},
2117                               {DATA_SOURCE_TYPE_JSMEMORY, TS_CLOCK_UNKNOW}}),
2118       dataSource2PluginNameMap_({
2119           {DATA_SOURCE_TYPE_TRACE, "ftrace-plugin"},
2120           {DATA_SOURCE_TYPE_MEM, "memory-plugin"},
2121           {DATA_SOURCE_TYPE_HILOG, "hilog-plugin"},
2122           {DATA_SOURCE_TYPE_NATIVEHOOK, "nativehook"},
2123           {DATA_SOURCE_TYPE_FPS, "hidump-plugin"},
2124           {DATA_SOURCE_TYPE_NETWORK, "network-plugin"},
2125           {DATA_SOURCE_TYPE_DISKIO, "diskio-plugin"},
2126           {DATA_SOURCE_TYPE_CPU, "cpu-plugin"},
2127           {DATA_SOURCE_TYPE_PROCESS, "process-plugin"},
2128           {DATA_SOURCE_TYPE_HISYSEVENT, "hisysevent-plugin"},
2129           {DATA_SOURCE_TYPE_JSMEMORY, "arkts-plugin"},
2130       })
2131 {
2132 }
Finish()2133 void DataSourceClockIdData::Finish()
2134 {
2135     for (auto i = dataSource2ClockIdMap_.begin(); i != dataSource2ClockIdMap_.end(); i++) {
2136         if (i->second) { // ignore the empty datasource, for which the clockid is default TS_CLOCK_UNKNOW 0
2137             dataSourceNames_.emplace_back(dataSource2PluginNameMap_.at(i->first));
2138             clockIds_.emplace_back(i->second);
2139         }
2140     }
2141 }
SetDataSourceClockId(DataSourceType source,uint32_t id)2142 void DataSourceClockIdData::SetDataSourceClockId(DataSourceType source, uint32_t id)
2143 {
2144     dataSource2ClockIdMap_.at(source) = id;
2145 }
AppendFrame(uint64_t ts,uint32_t ipid,uint32_t itid,uint32_t vsyncId,uint64_t callStackSliceId)2146 size_t FrameSlice::AppendFrame(uint64_t ts, uint32_t ipid, uint32_t itid, uint32_t vsyncId, uint64_t callStackSliceId)
2147 {
2148     timeStamps_.emplace_back(ts);
2149     ipids_.emplace_back(ipid);
2150     internalTids_.emplace_back(itid);
2151     vsyncIds_.emplace_back(vsyncId);
2152     callStackIds_.emplace_back(callStackSliceId);
2153     endTss_.emplace_back(INVALID_UINT64);
2154     dsts_.emplace_back(INVALID_UINT64);
2155     ids_.emplace_back(ids_.size());
2156     durs_.emplace_back(INVALID_UINT64);
2157     types_.emplace_back(0);
2158     flags_.emplace_back(INVALID_UINT8);
2159     srcs_.emplace_back("");
2160     depths_.emplace_back(0);
2161     frameNos_.emplace_back(0);
2162     return Size() - 1;
2163 }
AppendFrame(uint64_t ts,uint32_t ipid,uint32_t itid,uint32_t vsyncId,uint64_t callStackSliceId,uint64_t end,uint8_t type)2164 size_t FrameSlice::AppendFrame(uint64_t ts,
2165                                uint32_t ipid,
2166                                uint32_t itid,
2167                                uint32_t vsyncId,
2168                                uint64_t callStackSliceId,
2169                                uint64_t end,
2170                                uint8_t type)
2171 {
2172     auto row = AppendFrame(ts, ipid, itid, vsyncId, callStackSliceId);
2173     SetEndTime(row, end);
2174     SetType(row, type);
2175     depths_.emplace_back(0);
2176     frameNos_.emplace_back(0);
2177     durs_[row] = end - ts;
2178     return row;
2179 }
2180 
SetEndTime(uint64_t row,uint64_t end)2181 void FrameSlice::SetEndTime(uint64_t row, uint64_t end)
2182 {
2183     endTss_[row] = end;
2184 }
SetType(uint64_t row,uint8_t type)2185 void FrameSlice::SetType(uint64_t row, uint8_t type)
2186 {
2187     types_[row] = type;
2188 }
SetDst(uint64_t row,uint64_t dst)2189 void FrameSlice::SetDst(uint64_t row, uint64_t dst)
2190 {
2191     dsts_[row] = dst;
2192 }
2193 
SetSrcs(uint64_t row,const std::vector<uint64_t> & fromSlices)2194 void FrameSlice::SetSrcs(uint64_t row, const std::vector<uint64_t>& fromSlices)
2195 {
2196     std::string s = "";
2197     for (auto&& i : fromSlices) {
2198         s += std::to_string(i) + ",";
2199     }
2200     s.pop_back();
2201     srcs_[row] = s;
2202 }
SetFlags(uint64_t row,const uint32_t flags)2203 void FrameSlice::SetFlags(uint64_t row, const uint32_t flags)
2204 {
2205     flags_[row] = flags;
2206 }
Ipids() const2207 const std::deque<uint32_t> FrameSlice::Ipids() const
2208 {
2209     return ipids_;
2210 }
VsyncIds() const2211 const std::deque<uint32_t> FrameSlice::VsyncIds() const
2212 {
2213     return vsyncIds_;
2214 }
CallStackIds() const2215 const std::deque<uint64_t> FrameSlice::CallStackIds() const
2216 {
2217     return callStackIds_;
2218 }
EndTss() const2219 const std::deque<uint64_t> FrameSlice::EndTss() const
2220 {
2221     return endTss_;
2222 }
Dsts() const2223 const std::deque<uint64_t> FrameSlice::Dsts() const
2224 {
2225     return dsts_;
2226 }
Durs() const2227 const std::deque<uint64_t> FrameSlice::Durs() const
2228 {
2229     return durs_;
2230 }
Types() const2231 const std::deque<uint8_t> FrameSlice::Types() const
2232 {
2233     return types_;
2234 }
Flags() const2235 const std::deque<uint8_t> FrameSlice::Flags() const
2236 {
2237     return flags_;
2238 }
2239 
Depths() const2240 const std::deque<uint8_t> FrameSlice::Depths() const
2241 {
2242     return depths_;
2243 }
FrameNos() const2244 const std::deque<uint32_t> FrameSlice::FrameNos() const
2245 {
2246     return frameNos_;
2247 }
Srcs() const2248 const std::deque<std::string>& FrameSlice::Srcs() const
2249 {
2250     return srcs_;
2251 }
UpdateCallStackSliceId(uint64_t row,uint64_t callStackSliceId)2252 void FrameSlice::UpdateCallStackSliceId(uint64_t row, uint64_t callStackSliceId)
2253 {
2254     callStackIds_[row] = callStackSliceId;
2255 }
SetEndTimeAndFlag(uint64_t row,uint64_t ts,uint64_t expectDur,uint64_t expectEnd)2256 void FrameSlice::SetEndTimeAndFlag(uint64_t row, uint64_t ts, uint64_t expectDur, uint64_t expectEnd)
2257 {
2258     UNUSED(expectDur);
2259     durs_[row] = ts - timeStamps_[row];
2260     if (flags_[row] != ABNORMAL_START_END_TIME) {
2261         flags_[row] = expectEnd >= ts ? 0 : 1;
2262     }
2263 }
Erase(uint64_t row)2264 void FrameSlice::Erase(uint64_t row)
2265 {
2266     flags_[row] = INVALID_ROW;
2267 }
AppendNew(FrameSlice * frameSlice,uint64_t src,uint64_t dst)2268 size_t FrameMaps::AppendNew(FrameSlice* frameSlice, uint64_t src, uint64_t dst)
2269 {
2270     timeStamps_.emplace_back(0);
2271     ids_.emplace_back(ids_.size());
2272     srcs_.push_back(src);
2273     dsts_.push_back(dst);
2274     if (frameSlice->Types().at(dst) == FrameSlice::EXPECT_SLICE) {
2275         uint64_t expRsStartTime = frameSlice->TimeStampData().at(dst);
2276         uint64_t expUiEndTime = frameSlice->TimeStampData().at(src) + frameSlice->Durs().at(src);
2277         if (std::abs(static_cast<long long>(expRsStartTime - expUiEndTime)) >= ONE_MILLION_NANOSECONDS) {
2278             auto acturalRow = dst - 1;
2279             frameSlice->SetFlags(acturalRow, FrameSlice::ABNORMAL_START_END_TIME);
2280         }
2281     }
2282 
2283     return Size() - 1;
2284 }
SrcIndexs() const2285 const std::deque<uint64_t>& FrameMaps::SrcIndexs() const
2286 {
2287     return srcs_;
2288 }
DstIndexs() const2289 const std::deque<uint64_t>& FrameMaps::DstIndexs() const
2290 {
2291     return dsts_;
2292 }
2293 
AppendNew(uint32_t frameRow,uint64_t dur)2294 size_t GPUSlice::AppendNew(uint32_t frameRow, uint64_t dur)
2295 {
2296     frameRows_.emplace_back(frameRow);
2297     durs_.emplace_back(dur);
2298     return Size() - 1;
2299 }
FrameRows() const2300 const std::deque<uint32_t>& GPUSlice::FrameRows() const
2301 {
2302     return frameRows_;
2303 }
Durs() const2304 const std::deque<uint64_t>& GPUSlice::Durs() const
2305 {
2306     return durs_;
2307 }
Size() const2308 const size_t GPUSlice::Size() const
2309 {
2310     return durs_.size();
2311 }
2312 
AppendNewData(uint32_t ipid,uint32_t tid,uint32_t callId,uint64_t startTime,uint64_t endTime,uint32_t startName,DataIndex packedName)2313 size_t AppStartup::AppendNewData(uint32_t ipid,
2314                                  uint32_t tid,
2315                                  uint32_t callId,
2316                                  uint64_t startTime,
2317                                  uint64_t endTime,
2318                                  uint32_t startName,
2319                                  DataIndex packedName)
2320 {
2321     ipids_.emplace_back(ipid);
2322     tids_.emplace_back(tid);
2323     callIds_.emplace_back(callId);
2324     startTimes_.emplace_back(startTime);
2325     endTimes_.emplace_back(endTime);
2326     startNames_.emplace_back(startName);
2327     packedNames_.emplace_back(packedName);
2328     ids_.emplace_back(Size());
2329     return Size() - 1;
2330 }
Pids() const2331 const std::deque<uint32_t>& AppStartup::Pids() const
2332 {
2333     return ipids_;
2334 }
Tids() const2335 const std::deque<uint32_t>& AppStartup::Tids() const
2336 {
2337     return tids_;
2338 }
CallIds() const2339 const std::deque<uint32_t>& AppStartup::CallIds() const
2340 {
2341     return callIds_;
2342 }
StartTimes() const2343 const std::deque<uint64_t>& AppStartup::StartTimes() const
2344 {
2345     return startTimes_;
2346 }
EndTimes() const2347 const std::deque<uint64_t>& AppStartup::EndTimes() const
2348 {
2349     return endTimes_;
2350 }
StartNames() const2351 const std::deque<uint32_t>& AppStartup::StartNames() const
2352 {
2353     return startNames_;
2354 }
PackedNames() const2355 const std::deque<DataIndex>& AppStartup::PackedNames() const
2356 {
2357     return packedNames_;
2358 }
2359 
AppendNewData(uint32_t ipid,uint32_t tid,uint32_t callId,uint64_t startTime,uint64_t endTime,DataIndex soName,uint32_t depth)2360 size_t SoStaticInitalization::AppendNewData(uint32_t ipid,
2361                                             uint32_t tid,
2362                                             uint32_t callId,
2363                                             uint64_t startTime,
2364                                             uint64_t endTime,
2365                                             DataIndex soName,
2366                                             uint32_t depth)
2367 {
2368     ipids_.emplace_back(ipid);
2369     tids_.emplace_back(tid);
2370     callIds_.emplace_back(callId);
2371     startTimes_.emplace_back(startTime);
2372     endTimes_.emplace_back(endTime);
2373     soNames_.emplace_back(soName);
2374     depths_.emplace_back(depth);
2375     ids_.emplace_back(Size());
2376     return Size() - 1;
2377 }
Pids() const2378 const std::deque<uint32_t>& SoStaticInitalization::Pids() const
2379 {
2380     return ipids_;
2381 }
Tids() const2382 const std::deque<uint32_t>& SoStaticInitalization::Tids() const
2383 {
2384     return tids_;
2385 }
CallIds() const2386 const std::deque<uint32_t>& SoStaticInitalization::CallIds() const
2387 {
2388     return callIds_;
2389 }
StartTimes() const2390 const std::deque<uint64_t>& SoStaticInitalization::StartTimes() const
2391 {
2392     return startTimes_;
2393 }
EndTimes() const2394 const std::deque<uint64_t>& SoStaticInitalization::EndTimes() const
2395 {
2396     return endTimes_;
2397 }
SoNames() const2398 const std::deque<DataIndex>& SoStaticInitalization::SoNames() const
2399 {
2400     return soNames_;
2401 }
Depths() const2402 const std::deque<uint32_t> SoStaticInitalization::Depths() const
2403 {
2404     return depths_;
2405 }
2406 
AppendNewData(uint32_t id,std::string filePath,uint64_t startTime,uint64_t endTime,uint32_t ipid,uint64_t selfSizeCount)2407 size_t JsHeapFiles::AppendNewData(uint32_t id,
2408                                   std::string filePath,
2409                                   uint64_t startTime,
2410                                   uint64_t endTime,
2411                                   uint32_t ipid,
2412                                   uint64_t selfSizeCount)
2413 {
2414     fileIds_.emplace_back(id);
2415     filePaths_.emplace_back(filePath);
2416     startTimes_.emplace_back(startTime);
2417     endTimes_.emplace_back(endTime);
2418     ipids_.emplace_back(ipid);
2419     selfSizeCount_.emplace_back(selfSizeCount);
2420     ids_.emplace_back(Size());
2421     return Size() - 1;
2422 }
IDs() const2423 const std::deque<uint32_t>& JsHeapFiles::IDs() const
2424 {
2425     return fileIds_;
2426 }
FilePaths() const2427 const std::deque<std::string>& JsHeapFiles::FilePaths() const
2428 {
2429     return filePaths_;
2430 }
StartTimes() const2431 const std::deque<uint64_t>& JsHeapFiles::StartTimes() const
2432 {
2433     return startTimes_;
2434 }
EndTimes() const2435 const std::deque<uint64_t>& JsHeapFiles::EndTimes() const
2436 {
2437     return endTimes_;
2438 }
Pids() const2439 const std::deque<uint32_t>& JsHeapFiles::Pids() const
2440 {
2441     return ipids_;
2442 }
2443 
SelfSizeCount() const2444 const std::deque<uint64_t>& JsHeapFiles::SelfSizeCount() const
2445 {
2446     return selfSizeCount_;
2447 }
2448 
AppendNewData(uint32_t fileId,uint32_t edgeIndex,uint32_t type,uint32_t nameOrIndex,uint32_t toNode,uint32_t fromNodeId,uint32_t toNodeId)2449 size_t JsHeapEdges::AppendNewData(uint32_t fileId,
2450                                   uint32_t edgeIndex,
2451                                   uint32_t type,
2452                                   uint32_t nameOrIndex,
2453                                   uint32_t toNode,
2454                                   uint32_t fromNodeId,
2455                                   uint32_t toNodeId)
2456 {
2457     fileIds_.emplace_back(fileId);
2458     edgeIndexs_.emplace_back(edgeIndex);
2459     types_.emplace_back(type);
2460     nameOrIndexs_.emplace_back(nameOrIndex);
2461     toNodes_.emplace_back(toNode);
2462     fromNodeIds_.emplace_back(fromNodeId);
2463     toNodeIds_.emplace_back(toNodeId);
2464     ids_.emplace_back(Size());
2465     return Size() - 1;
2466 }
FileIds() const2467 const std::deque<uint32_t>& JsHeapEdges::FileIds() const
2468 {
2469     return fileIds_;
2470 }
EdgeIndexs() const2471 const std::deque<uint32_t>& JsHeapEdges::EdgeIndexs() const
2472 {
2473     return edgeIndexs_;
2474 }
Types() const2475 const std::deque<uint32_t>& JsHeapEdges::Types() const
2476 {
2477     return types_;
2478 }
NameOrIndexs() const2479 const std::deque<uint32_t>& JsHeapEdges::NameOrIndexs() const
2480 {
2481     return nameOrIndexs_;
2482 }
ToNodes() const2483 const std::deque<uint32_t>& JsHeapEdges::ToNodes() const
2484 {
2485     return toNodes_;
2486 }
FromNodeIds() const2487 const std::deque<uint32_t>& JsHeapEdges::FromNodeIds() const
2488 {
2489     return fromNodeIds_;
2490 }
ToNodeIds() const2491 const std::deque<uint32_t>& JsHeapEdges::ToNodeIds() const
2492 {
2493     return toNodeIds_;
2494 }
2495 
2496 size_t
AppendNewData(uint32_t fileId,std::string key,uint32_t type,int32_t intValue,std::string strValue)2497     JsHeapInfo::AppendNewData(uint32_t fileId, std::string key, uint32_t type, int32_t intValue, std::string strValue)
2498 {
2499     fileIds_.emplace_back(fileId);
2500     keys_.emplace_back(key);
2501     types_.emplace_back(type);
2502     intValues_.emplace_back(intValue);
2503     strValues_.emplace_back(strValue);
2504     ids_.emplace_back(Size());
2505     return Size() - 1;
2506 }
FileIds() const2507 const std::deque<uint32_t>& JsHeapInfo::FileIds() const
2508 {
2509     return fileIds_;
2510 }
Keys() const2511 const std::deque<std::string>& JsHeapInfo::Keys() const
2512 {
2513     return keys_;
2514 }
Types() const2515 const std::deque<uint32_t>& JsHeapInfo::Types() const
2516 {
2517     return types_;
2518 }
IntValues() const2519 const std::deque<int32_t>& JsHeapInfo::IntValues() const
2520 {
2521     return intValues_;
2522 }
StrValues() const2523 const std::deque<std::string>& JsHeapInfo::StrValues() const
2524 {
2525     return strValues_;
2526 }
2527 
AppendNewData(uint32_t fileId,uint32_t objectIndex,uint32_t scriptId,uint32_t line,uint32_t column)2528 size_t JsHeapLocation::AppendNewData(uint32_t fileId,
2529                                      uint32_t objectIndex,
2530                                      uint32_t scriptId,
2531                                      uint32_t line,
2532                                      uint32_t column)
2533 {
2534     fileIds_.emplace_back(fileId);
2535     objectIndexs_.emplace_back(objectIndex);
2536     scriptIds_.emplace_back(scriptId);
2537     lines_.emplace_back(line);
2538     columns_.emplace_back(column);
2539     ids_.emplace_back(Size());
2540     return Size() - 1;
2541 }
FileIds() const2542 const std::deque<uint32_t>& JsHeapLocation::FileIds() const
2543 {
2544     return fileIds_;
2545 }
ObjectIndexs() const2546 const std::deque<uint32_t>& JsHeapLocation::ObjectIndexs() const
2547 {
2548     return objectIndexs_;
2549 }
ScriptIds() const2550 const std::deque<uint32_t>& JsHeapLocation::ScriptIds() const
2551 {
2552     return scriptIds_;
2553 }
Lines() const2554 const std::deque<uint32_t>& JsHeapLocation::Lines() const
2555 {
2556     return lines_;
2557 }
Columns() const2558 const std::deque<uint32_t>& JsHeapLocation::Columns() const
2559 {
2560     return columns_;
2561 }
2562 
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)2563 size_t JsHeapNodes::AppendNewData(uint32_t fileId,
2564                                   uint32_t nodeIndex,
2565                                   uint32_t type,
2566                                   uint32_t name,
2567                                   uint32_t id,
2568                                   uint32_t selfSize,
2569                                   uint32_t edgeCount,
2570                                   uint32_t traceNodeId,
2571                                   uint32_t detachedNess)
2572 {
2573     fileIds_.emplace_back(fileId);
2574     nodeIndexs_.emplace_back(nodeIndex);
2575     types_.emplace_back(type);
2576     names_.emplace_back(name);
2577     nodeIds_.emplace_back(id);
2578     selfSizes_.emplace_back(selfSize);
2579     edgeCounts_.emplace_back(edgeCount);
2580     traceNodeIds_.emplace_back(traceNodeId);
2581     detachedNess_.emplace_back(detachedNess);
2582     ids_.emplace_back(Size());
2583     return Size() - 1;
2584 }
FileIds() const2585 const std::deque<uint32_t>& JsHeapNodes::FileIds() const
2586 {
2587     return fileIds_;
2588 }
NodeIndexs() const2589 const std::deque<uint32_t>& JsHeapNodes::NodeIndexs() const
2590 {
2591     return nodeIndexs_;
2592 }
Types() const2593 const std::deque<uint32_t>& JsHeapNodes::Types() const
2594 {
2595     return types_;
2596 }
Names() const2597 const std::deque<uint32_t>& JsHeapNodes::Names() const
2598 {
2599     return names_;
2600 }
NodeIds() const2601 const std::deque<uint32_t>& JsHeapNodes::NodeIds() const
2602 {
2603     return nodeIds_;
2604 }
SelfSizes() const2605 const std::deque<uint32_t>& JsHeapNodes::SelfSizes() const
2606 {
2607     return selfSizes_;
2608 }
EdgeCounts() const2609 const std::deque<uint32_t>& JsHeapNodes::EdgeCounts() const
2610 {
2611     return edgeCounts_;
2612 }
TraceNodeIds() const2613 const std::deque<uint32_t>& JsHeapNodes::TraceNodeIds() const
2614 {
2615     return traceNodeIds_;
2616 }
DetachedNess() const2617 const std::deque<uint32_t>& JsHeapNodes::DetachedNess() const
2618 {
2619     return detachedNess_;
2620 }
2621 
AppendNewData(uint32_t fileId,uint64_t timeStampUs,uint32_t lastAssignedId)2622 size_t JsHeapSample::AppendNewData(uint32_t fileId, uint64_t timeStampUs, uint32_t lastAssignedId)
2623 {
2624     fileIds_.emplace_back(fileId);
2625     timeStampUs_.emplace_back(timeStampUs);
2626     lastAssignedIds_.emplace_back(lastAssignedId);
2627     ids_.emplace_back(Size());
2628     return Size() - 1;
2629 }
FileIds() const2630 const std::deque<uint32_t>& JsHeapSample::FileIds() const
2631 {
2632     return fileIds_;
2633 }
TimeStampUs() const2634 const std::deque<uint64_t>& JsHeapSample::TimeStampUs() const
2635 {
2636     return timeStampUs_;
2637 }
LastAssignedIds() const2638 const std::deque<uint32_t>& JsHeapSample::LastAssignedIds() const
2639 {
2640     return lastAssignedIds_;
2641 }
2642 
AppendNewData(uint32_t fileId,uint32_t fileIndex,std::string string)2643 size_t JsHeapString::AppendNewData(uint32_t fileId, uint32_t fileIndex, std::string string)
2644 {
2645     fileIds_.emplace_back(fileId);
2646     fileIndexs_.emplace_back(fileIndex);
2647     strings_.emplace_back(string);
2648     ids_.emplace_back(Size());
2649     return Size() - 1;
2650 }
FileIds() const2651 const std::deque<uint32_t>& JsHeapString::FileIds() const
2652 {
2653     return fileIds_;
2654 }
FileIndexs() const2655 const std::deque<uint64_t>& JsHeapString::FileIndexs() const
2656 {
2657     return fileIndexs_;
2658 }
Strings() const2659 const std::deque<std::string>& JsHeapString::Strings() const
2660 {
2661     return strings_;
2662 }
2663 
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)2664 size_t JsHeapTraceFuncInfo::AppendNewData(uint32_t fileId,
2665                                           uint32_t functionIndex,
2666                                           uint32_t functionId,
2667                                           uint32_t name,
2668                                           uint32_t scriptName,
2669                                           uint32_t scriptId,
2670                                           uint32_t line,
2671                                           uint32_t column)
2672 {
2673     fileIds_.emplace_back(fileId);
2674     functionIndexs_.emplace_back(functionIndex);
2675     functionIds_.emplace_back(functionId);
2676     names_.emplace_back(name);
2677     scriptNames_.emplace_back(scriptName);
2678     scriptIds_.emplace_back(scriptId);
2679     lines_.emplace_back(line);
2680     columns_.emplace_back(column);
2681     ids_.emplace_back(Size());
2682     return Size() - 1;
2683 }
FileIds() const2684 const std::deque<uint32_t>& JsHeapTraceFuncInfo::FileIds() const
2685 {
2686     return fileIds_;
2687 }
FunctionIndexs() const2688 const std::deque<uint32_t>& JsHeapTraceFuncInfo::FunctionIndexs() const
2689 {
2690     return functionIndexs_;
2691 }
FunctionIds() const2692 const std::deque<uint32_t>& JsHeapTraceFuncInfo::FunctionIds() const
2693 {
2694     return functionIds_;
2695 }
Names() const2696 const std::deque<uint32_t>& JsHeapTraceFuncInfo::Names() const
2697 {
2698     return names_;
2699 }
ScriptNames() const2700 const std::deque<uint32_t>& JsHeapTraceFuncInfo::ScriptNames() const
2701 {
2702     return scriptNames_;
2703 }
ScriptIds() const2704 const std::deque<uint32_t>& JsHeapTraceFuncInfo::ScriptIds() const
2705 {
2706     return scriptIds_;
2707 }
Lines() const2708 const std::deque<uint32_t>& JsHeapTraceFuncInfo::Lines() const
2709 {
2710     return lines_;
2711 }
Columns() const2712 const std::deque<uint32_t>& JsHeapTraceFuncInfo::Columns() const
2713 {
2714     return columns_;
2715 }
2716 
AppendNewData(uint32_t fileId,uint32_t traceNodeId,uint32_t functionInfoIndex,uint32_t count,uint32_t size,int32_t parentId)2717 size_t JsHeapTraceNode::AppendNewData(uint32_t fileId,
2718                                       uint32_t traceNodeId,
2719                                       uint32_t functionInfoIndex,
2720                                       uint32_t count,
2721                                       uint32_t size,
2722                                       int32_t parentId)
2723 {
2724     fileIds_.emplace_back(fileId);
2725     traceNodeIds_.emplace_back(traceNodeId);
2726     functionInfoIndexs_.emplace_back(functionInfoIndex);
2727     counts_.emplace_back(count);
2728     sizes_.emplace_back(size);
2729     parentIds_.emplace_back(parentId);
2730     ids_.emplace_back(Size());
2731     return Size() - 1;
2732 }
FileIds() const2733 const std::deque<uint32_t>& JsHeapTraceNode::FileIds() const
2734 {
2735     return fileIds_;
2736 }
TraceNodeIDs() const2737 const std::deque<uint32_t>& JsHeapTraceNode::TraceNodeIDs() const
2738 {
2739     return traceNodeIds_;
2740 }
FunctionInfoIndexs() const2741 const std::deque<uint32_t>& JsHeapTraceNode::FunctionInfoIndexs() const
2742 {
2743     return functionInfoIndexs_;
2744 }
Counts() const2745 const std::deque<uint32_t>& JsHeapTraceNode::Counts() const
2746 {
2747     return counts_;
2748 }
NodeSizes() const2749 const std::deque<uint32_t>& JsHeapTraceNode::NodeSizes() const
2750 {
2751     return sizes_;
2752 }
ParentIds() const2753 const std::deque<int32_t>& JsHeapTraceNode::ParentIds() const
2754 {
2755     return parentIds_;
2756 }
2757 
AppendAllocationTaskData(uint32_t allocationTaskRow,uint32_t allocationTaskId,uint32_t executeId,uint32_t priority,uint32_t executeState)2758 size_t TaskPoolInfo::AppendAllocationTaskData(uint32_t allocationTaskRow,
2759                                               uint32_t allocationTaskId,
2760                                               uint32_t executeId,
2761                                               uint32_t priority,
2762                                               uint32_t executeState)
2763 {
2764     allocationTaskRows_.emplace_back(allocationTaskRow);
2765     executeTaskRows_.emplace_back(INVALID_INT32);
2766     returnTaskRows_.emplace_back(INVALID_INT32);
2767     allocationTaskIds_.emplace_back(allocationTaskId);
2768     executeTaskIds_.emplace_back(INVALID_INT32);
2769     returnTaskIds_.emplace_back(INVALID_INT32);
2770     executeIds_.emplace_back(executeId);
2771     prioritys_.emplace_back(priority);
2772     executeStates_.emplace_back(executeState);
2773     returnStates_.emplace_back(INVALID_INT32);
2774     ids_.emplace_back(Size());
2775     return Size() - 1;
2776 }
AppendExecuteTaskData(uint32_t executeTaskRow,uint32_t executeTaskId,uint32_t executeId)2777 size_t TaskPoolInfo::AppendExecuteTaskData(uint32_t executeTaskRow, uint32_t executeTaskId, uint32_t executeId)
2778 {
2779     allocationTaskRows_.emplace_back(INVALID_INT32);
2780     executeTaskRows_.emplace_back(executeTaskRow);
2781     returnTaskRows_.emplace_back(INVALID_INT32);
2782     allocationTaskIds_.emplace_back(INVALID_INT32);
2783     executeTaskIds_.emplace_back(executeTaskId);
2784     returnTaskIds_.emplace_back(INVALID_INT32);
2785     executeIds_.emplace_back(executeId);
2786     prioritys_.emplace_back(INVALID_INT32);
2787     executeStates_.emplace_back(INVALID_INT32);
2788     returnStates_.emplace_back(INVALID_INT32);
2789     ids_.emplace_back(Size());
2790     return Size() - 1;
2791 }
AppendReturnTaskData(uint32_t returnTaskRow,uint32_t returnTaskId,uint32_t executeId,uint32_t returnState)2792 size_t TaskPoolInfo::AppendReturnTaskData(uint32_t returnTaskRow,
2793                                           uint32_t returnTaskId,
2794                                           uint32_t executeId,
2795                                           uint32_t returnState)
2796 {
2797     allocationTaskRows_.emplace_back(INVALID_INT32);
2798     executeTaskRows_.emplace_back(INVALID_INT32);
2799     returnTaskRows_.emplace_back(returnTaskRow);
2800     allocationTaskIds_.emplace_back(INVALID_INT32);
2801     executeTaskIds_.emplace_back(INVALID_INT32);
2802     returnTaskIds_.emplace_back(returnTaskId);
2803     executeIds_.emplace_back(executeId);
2804     prioritys_.emplace_back(INVALID_INT32);
2805     executeStates_.emplace_back(INVALID_INT32);
2806     returnStates_.emplace_back(returnState);
2807     ids_.emplace_back(Size());
2808     return Size() - 1;
2809 }
AllocationTaskRows() const2810 const std::deque<uint32_t>& TaskPoolInfo::AllocationTaskRows() const
2811 {
2812     return allocationTaskRows_;
2813 }
ExecuteTaskRows() const2814 const std::deque<uint32_t>& TaskPoolInfo::ExecuteTaskRows() const
2815 {
2816     return executeTaskRows_;
2817 }
ReturnTaskRows() const2818 const std::deque<uint32_t>& TaskPoolInfo::ReturnTaskRows() const
2819 {
2820     return returnTaskRows_;
2821 }
AllocationTaskIds() const2822 const std::deque<uint32_t>& TaskPoolInfo::AllocationTaskIds() const
2823 {
2824     return allocationTaskIds_;
2825 }
ExecuteTaskIds() const2826 const std::deque<uint32_t>& TaskPoolInfo::ExecuteTaskIds() const
2827 {
2828     return executeTaskIds_;
2829 }
ReturnTaskIds() const2830 const std::deque<uint32_t>& TaskPoolInfo::ReturnTaskIds() const
2831 {
2832     return returnTaskIds_;
2833 }
ExecuteIds() const2834 const std::deque<uint32_t>& TaskPoolInfo::ExecuteIds() const
2835 {
2836     return executeIds_;
2837 }
Prioritys() const2838 const std::deque<uint32_t>& TaskPoolInfo::Prioritys() const
2839 {
2840     return prioritys_;
2841 }
ExecuteStates() const2842 const std::deque<uint32_t>& TaskPoolInfo::ExecuteStates() const
2843 {
2844     return executeStates_;
2845 }
ReturnStates() const2846 const std::deque<uint32_t>& TaskPoolInfo::ReturnStates() const
2847 {
2848     return returnStates_;
2849 }
UpdateAllocationTaskData(uint32_t index,uint32_t allocationTaskRow,uint32_t allocationTaskId,uint32_t priority,uint32_t executeState)2850 void TaskPoolInfo::UpdateAllocationTaskData(uint32_t index,
2851                                             uint32_t allocationTaskRow,
2852                                             uint32_t allocationTaskId,
2853                                             uint32_t priority,
2854                                             uint32_t executeState)
2855 {
2856     if (index < Size()) {
2857         allocationTaskRows_[index] = allocationTaskRow;
2858         allocationTaskIds_[index] = allocationTaskId;
2859         prioritys_[index] = priority;
2860         executeStates_[index] = executeState;
2861     }
2862 }
UpdateExecuteTaskData(uint32_t index,uint32_t executeTaskRow,uint32_t executeTaskId)2863 void TaskPoolInfo::UpdateExecuteTaskData(uint32_t index, uint32_t executeTaskRow, uint32_t executeTaskId)
2864 {
2865     if (index < Size()) {
2866         executeTaskRows_[index] = executeTaskRow;
2867         executeTaskIds_[index] = executeTaskId;
2868     }
2869 }
UpdateReturnTaskData(uint32_t index,uint32_t returnTaskRow,uint32_t returnTaskId,uint32_t returnState)2870 void TaskPoolInfo::UpdateReturnTaskData(uint32_t index,
2871                                         uint32_t returnTaskRow,
2872                                         uint32_t returnTaskId,
2873                                         uint32_t returnState)
2874 {
2875     if (index < Size()) {
2876         returnTaskRows_[index] = returnTaskRow;
2877         returnTaskIds_[index] = returnTaskId;
2878         returnStates_[index] = returnState;
2879     }
2880 }
2881 } // namespace TraceStdtype
2882 } // namespace SysTuning
2883