• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 "hitrace/hitracechain.h"
17 #include "hitracechain_inner.h"
18 
19 namespace OHOS {
20 namespace HiviewDFX {
21 
Begin(const std::string & name,int flags)22 HiTraceId HiTraceChain::Begin(const std::string& name, int flags)
23 {
24     return HiTraceId(::HiTraceChainBegin(name.c_str(), flags));
25 }
26 
Begin(const std::string & name,int flags,unsigned int domain)27 HiTraceId HiTraceChain::Begin(const std::string& name, int flags, unsigned int domain)
28 {
29     return HiTraceId(::HiTraceChainBeginWithDomain(name.c_str(), flags, domain));
30 }
31 
End(const HiTraceId & id)32 void HiTraceChain::End(const HiTraceId& id)
33 {
34     ::HiTraceChainEnd(&(id.id_));
35     return;
36 }
37 
End(const HiTraceId & id,unsigned int domain)38 void HiTraceChain::End(const HiTraceId& id, unsigned int domain)
39 {
40     ::HiTraceChainEndWithDomain(&(id.id_), domain);
41     return;
42 }
43 
GetId()44 HiTraceId HiTraceChain::GetId()
45 {
46     return HiTraceId(::HiTraceChainGetId());
47 }
48 
GetIdAddress()49 HiTraceId* HiTraceChain::GetIdAddress()
50 {
51     return reinterpret_cast<HiTraceId*>(::HiTraceChainGetIdAddress());
52 }
53 
SetId(const HiTraceId & id)54 void HiTraceChain::SetId(const HiTraceId& id)
55 {
56     ::HiTraceChainSetId(&(id.id_));
57     return;
58 }
59 
ClearId()60 void HiTraceChain::ClearId()
61 {
62     ::HiTraceChainClearId();
63     return;
64 }
65 
CreateSpan()66 HiTraceId HiTraceChain::CreateSpan()
67 {
68     return HiTraceId(::HiTraceChainCreateSpan());
69 }
70 
Tracepoint(HiTraceTracepointType type,const HiTraceId & id,const char * fmt,...)71 void HiTraceChain::Tracepoint(HiTraceTracepointType type, const HiTraceId& id, const char* fmt, ...)
72 {
73     va_list args;
74 
75     va_start(args, fmt);
76     ::HiTraceChainTracepointInner(HITRACE_CM_DEFAULT, type, &(id.id_), 0, fmt, args);
77     va_end(args);
78 
79     return;
80 }
81 
Tracepoint(HiTraceCommunicationMode mode,HiTraceTracepointType type,const HiTraceId & id,const char * fmt,...)82 void HiTraceChain::Tracepoint(HiTraceCommunicationMode mode, HiTraceTracepointType type, const HiTraceId& id,
83     const char* fmt, ...)
84 {
85     va_list args;
86 
87     va_start(args, fmt);
88     ::HiTraceChainTracepointInner(mode, type, &(id.id_), 0, fmt, args);
89     va_end(args);
90 
91     return;
92 }
93 
Tracepoint(HiTraceCommunicationMode mode,HiTraceTracepointType type,const HiTraceId & id,unsigned int domain,const char * fmt,...)94 void HiTraceChain::Tracepoint(HiTraceCommunicationMode mode, HiTraceTracepointType type, const HiTraceId& id,
95     unsigned int domain, const char* fmt, ...)
96 {
97     va_list args;
98 
99     va_start(args, fmt);
100     ::HiTraceChainTracepointInner(mode, type, &(id.id_), domain, fmt, args);
101     va_end(args);
102 
103     return;
104 }
105 
SaveAndSet(const HiTraceId & id)106 HiTraceId HiTraceChain::SaveAndSet(const HiTraceId& id)
107 {
108     return HiTraceId(::HiTraceChainSaveAndSetId(&(id.id_)));
109 }
110 
Restore(const HiTraceId & id)111 void HiTraceChain::Restore(const HiTraceId& id)
112 {
113     ::HiTraceChainRestoreId(&(id.id_));
114 }
115 } // namespace HiviewDFX
116 } // namespace OHOS
117