• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include "callstack_stdtype.h"
16 
17 namespace SysTuning {
18 namespace TraceStdtype {
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)19 size_t CallStack::AppendInternalAsyncSlice(uint64_t startT,
20                                            uint64_t durationNs,
21                                            InternalTid internalTid,
22                                            DataIndex cat,
23                                            uint16_t nameIdentify,
24                                            DataIndex name,
25                                            uint8_t depth,
26                                            uint64_t cookid,
27                                            const std::optional<uint64_t>& parentId)
28 {
29     AppendCommonInfo(startT, durationNs, internalTid);
30     AppendCallStack(cat, name, depth, parentId);
31     AppendDistributeInfo();
32     cookies_.emplace_back(cookid);
33     ids_.emplace_back(id_++);
34     identifys_.emplace_back(nameIdentify + depth);
35     return Size() - 1;
36 }
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)37 size_t CallStack::AppendInternalSlice(uint64_t startT,
38                                       uint64_t durationNs,
39                                       InternalTid internalTid,
40                                       DataIndex cat,
41                                       uint16_t nameIdentify,
42                                       DataIndex name,
43                                       uint8_t depth,
44                                       const std::optional<uint64_t>& parentId)
45 {
46     AppendCommonInfo(startT, durationNs, internalTid);
47     AppendCallStack(cat, name, depth, parentId);
48     identifys_.emplace_back(nameIdentify + depth);
49     ids_.emplace_back(id_++);
50     cookies_.emplace_back(INVALID_UINT64);
51     AppendDistributeInfo();
52     return Size() - 1;
53 }
54 
AppendCommonInfo(uint64_t startT,uint64_t durationNs,InternalTid internalTid)55 void CallStack::AppendCommonInfo(uint64_t startT, uint64_t durationNs, InternalTid internalTid)
56 {
57     timeStamps_.emplace_back(startT);
58     durs_.emplace_back(durationNs);
59     callIds_.emplace_back(internalTid);
60 }
AppendCallStack(DataIndex cat,DataIndex name,uint8_t depth,std::optional<uint64_t> parentId)61 void CallStack::AppendCallStack(DataIndex cat, DataIndex name, uint8_t depth, std::optional<uint64_t> parentId)
62 {
63     parentIds_.emplace_back(parentId);
64     cats_.emplace_back(cat);
65     names_.emplace_back(name);
66     depths_.emplace_back(depth);
67 }
SetDistributeInfo(size_t index,const std::string & chainId,const std::string & spanId,const std::string & parentSpanId,const std::string & flag,const std::string & args)68 void CallStack::SetDistributeInfo(size_t index,
69                                   const std::string& chainId,
70                                   const std::string& spanId,
71                                   const std::string& parentSpanId,
72                                   const std::string& flag,
73                                   const std::string& args)
74 {
75     chainIds_[index] = chainId;
76     spanIds_[index] = spanId;
77     parentSpanIds_[index] = parentSpanId;
78     flags_[index] = flag;
79     args_[index] = args;
80     argSet_[index] = INVALID_UINT32;
81 }
AppendDistributeInfo(const std::string & chainId,const std::string & spanId,const std::string & parentSpanId,const std::string & flag,const std::string & args)82 void CallStack::AppendDistributeInfo(const std::string& chainId,
83                                      const std::string& spanId,
84                                      const std::string& parentSpanId,
85                                      const std::string& flag,
86                                      const std::string& args)
87 {
88     chainIds_.emplace_back(chainId);
89     spanIds_.emplace_back(spanId);
90     parentSpanIds_.emplace_back(parentSpanId);
91     flags_.emplace_back(flag);
92     args_.emplace_back(args);
93     argSet_.emplace_back(INVALID_UINT32);
94 }
AppendDistributeInfo()95 void CallStack::AppendDistributeInfo()
96 {
97     chainIds_.emplace_back("");
98     spanIds_.emplace_back("");
99     parentSpanIds_.emplace_back("");
100     flags_.emplace_back("");
101     args_.emplace_back("");
102     argSet_.emplace_back(INVALID_UINT32);
103 }
SetDuration(size_t index,uint64_t timeStamp)104 void CallStack::SetDuration(size_t index, uint64_t timeStamp)
105 {
106     durs_[index] = timeStamp - timeStamps_[index];
107 }
SetDurationWithFlag(size_t index,uint64_t timeStamp)108 void CallStack::SetDurationWithFlag(size_t index, uint64_t timeStamp)
109 {
110     durs_[index] = timeStamp - timeStamps_[index];
111     flags_[index] = "1";
112 }
113 
SetFlag(size_t index,uint8_t flag)114 void CallStack::SetFlag(size_t index, uint8_t flag)
115 {
116     flags_[index] = std::to_string(flag);
117 }
SetDurationEx(size_t index,uint32_t dur)118 void CallStack::SetDurationEx(size_t index, uint32_t dur)
119 {
120     durs_[index] = dur;
121 }
122 
SetIrqDurAndArg(size_t index,uint64_t timeStamp,uint32_t argSetId)123 void CallStack::SetIrqDurAndArg(size_t index, uint64_t timeStamp, uint32_t argSetId)
124 {
125     SetDuration(index, timeStamp);
126     argSet_[index] = argSetId;
127 }
SetTimeStamp(size_t index,uint64_t timeStamp)128 void CallStack::SetTimeStamp(size_t index, uint64_t timeStamp)
129 {
130     timeStamps_[index] = timeStamp;
131 }
132 
SetDepth(size_t index,uint8_t depth)133 void CallStack::SetDepth(size_t index, uint8_t depth)
134 {
135     depths_[index] = depth;
136 }
SetArgSetId(size_t index,uint32_t argSetId)137 void CallStack::SetArgSetId(size_t index, uint32_t argSetId)
138 {
139     argSet_[index] = argSetId;
140 }
ParentIdData() const141 const std::deque<std::optional<uint64_t>>& CallStack::ParentIdData() const
142 {
143     return parentIds_;
144 }
CatsData() const145 const std::deque<DataIndex>& CallStack::CatsData() const
146 {
147     return cats_;
148 }
IdentifysData() const149 const std::deque<uint16_t>& CallStack::IdentifysData() const
150 {
151     return identifys_;
152 }
NamesData() const153 const std::deque<DataIndex>& CallStack::NamesData() const
154 {
155     return names_;
156 }
Depths() const157 const std::deque<uint8_t>& CallStack::Depths() const
158 {
159     return depths_;
160 }
Cookies() const161 const std::deque<uint64_t>& CallStack::Cookies() const
162 {
163     return cookies_;
164 }
CallIds() const165 const std::deque<uint32_t>& CallStack::CallIds() const
166 {
167     return callIds_;
168 }
ChainIds() const169 const std::deque<std::string>& CallStack::ChainIds() const
170 {
171     return chainIds_;
172 }
SpanIds() const173 const std::deque<std::string>& CallStack::SpanIds() const
174 {
175     return spanIds_;
176 }
ParentSpanIds() const177 const std::deque<std::string>& CallStack::ParentSpanIds() const
178 {
179     return parentSpanIds_;
180 }
Flags() const181 const std::deque<std::string>& CallStack::Flags() const
182 {
183     return flags_;
184 }
ArgsData() const185 const std::deque<std::string>& CallStack::ArgsData() const
186 {
187     return args_;
188 }
ArgSetIdsData() const189 const std::deque<uint32_t>& CallStack::ArgSetIdsData() const
190 {
191     return argSet_;
192 }
193 } // namespace TraceStdtype
194 } // namespace SysTuning
195