1 /*
2  * Copyright (c) 2024 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 <stdbool.h>
17 
18 #include "hitrace/hitracechainc.h"
19 
20 typedef HiTraceIdValid HiTraceId_Valid;
21 typedef HiTraceVersion HiTrace_Version;
22 typedef HiTraceFlag HiTrace_Flag;
23 typedef HiTraceTracepointType HiTrace_Tracepoint_Type;
24 typedef HiTraceCommunicationMode HiTrace_Communication_Mode;
25 typedef HiTraceIdStruct HiTraceId;
26 
OH_HiTrace_BeginChain(const char * name,int flags)27 HiTraceId OH_HiTrace_BeginChain(const char* name, int flags)
28 {
29     return HiTraceChainBegin(name, flags);
30 }
31 
OH_HiTrace_EndChain()32 void OH_HiTrace_EndChain()
33 {
34     HiTraceId id = HiTraceChainGetId();
35     HiTraceChainEnd(&id);
36 }
37 
OH_HiTrace_GetId()38 HiTraceId OH_HiTrace_GetId()
39 {
40     return HiTraceChainGetId();
41 }
42 
OH_HiTrace_SetId(const HiTraceId * id)43 void OH_HiTrace_SetId(const HiTraceId* id)
44 {
45     HiTraceChainSetId(id);
46 }
47 
OH_HiTrace_ClearId(void)48 void OH_HiTrace_ClearId(void)
49 {
50     HiTraceChainClearId();
51 }
52 
OH_HiTrace_CreateSpan(void)53 HiTraceId OH_HiTrace_CreateSpan(void)
54 {
55     return HiTraceChainCreateSpan();
56 }
57 
OH_HiTrace_Tracepoint(HiTrace_Communication_Mode mode,HiTrace_Tracepoint_Type type,const HiTraceId * id,const char * fmt,...)58 void OH_HiTrace_Tracepoint(HiTrace_Communication_Mode mode, HiTrace_Tracepoint_Type type,
59                            const HiTraceId* id, const char* fmt, ...)
60 {
61     va_list args;
62     va_start(args, fmt);
63     HiTraceChainTracepointExWithArgs(mode, type, id, fmt, args);
64     va_end(args);
65 }
66 
OH_HiTrace_InitId(HiTraceId * id)67 void OH_HiTrace_InitId(HiTraceId* id)
68 {
69     HiTraceChainInitId(id);
70 }
71 
OH_HiTrace_IdFromBytes(HiTraceId * id,const uint8_t * pIdArray,int len)72 void OH_HiTrace_IdFromBytes(HiTraceId *id, const uint8_t* pIdArray, int len)
73 {
74     *id = HiTraceChainBytesToId(pIdArray, len);
75 }
76 
OH_HiTrace_IsIdValid(const HiTraceId * id)77 bool OH_HiTrace_IsIdValid(const HiTraceId* id)
78 {
79     return HiTraceChainIsValid(id);
80 }
81 
OH_HiTrace_IsFlagEnabled(const HiTraceId * id,HiTrace_Flag flag)82 bool OH_HiTrace_IsFlagEnabled(const HiTraceId* id, HiTrace_Flag flag)
83 {
84     return HiTraceChainIsFlagEnabled(id, flag);
85 }
86 
OH_HiTrace_EnableFlag(const HiTraceId * id,HiTrace_Flag flag)87 void OH_HiTrace_EnableFlag(const HiTraceId* id, HiTrace_Flag flag)
88 {
89     HiTraceChainEnableFlag((HiTraceId*)id, flag);
90 }
91 
OH_HiTrace_GetFlags(const HiTraceId * id)92 int OH_HiTrace_GetFlags(const HiTraceId* id)
93 {
94     return HiTraceChainGetFlags(id);
95 }
96 
OH_HiTrace_SetFlags(HiTraceId * id,int flags)97 void OH_HiTrace_SetFlags(HiTraceId* id, int flags)
98 {
99     HiTraceChainSetFlags(id, flags);
100 }
101 
OH_HiTrace_GetChainId(const HiTraceId * id)102 uint64_t OH_HiTrace_GetChainId(const HiTraceId* id)
103 {
104     return HiTraceChainGetChainId(id);
105 }
106 
OH_HiTrace_SetChainId(HiTraceId * id,uint64_t chainId)107 void OH_HiTrace_SetChainId(HiTraceId* id, uint64_t chainId)
108 {
109     HiTraceChainSetChainId(id, chainId);
110 }
111 
OH_HiTrace_GetSpanId(const HiTraceId * id)112 uint64_t OH_HiTrace_GetSpanId(const HiTraceId* id)
113 {
114     return HiTraceChainGetSpanId(id);
115 }
116 
OH_HiTrace_SetSpanId(HiTraceId * id,uint64_t spanId)117 void OH_HiTrace_SetSpanId(HiTraceId* id, uint64_t spanId)
118 {
119     HiTraceChainSetSpanId(id, spanId);
120 }
121 
OH_HiTrace_GetParentSpanId(const HiTraceId * id)122 uint64_t OH_HiTrace_GetParentSpanId(const HiTraceId* id)
123 {
124     return HiTraceChainGetParentSpanId(id);
125 }
126 
OH_HiTrace_SetParentSpanId(HiTraceId * id,uint64_t parentSpanId)127 void OH_HiTrace_SetParentSpanId(HiTraceId* id, uint64_t parentSpanId)
128 {
129     HiTraceChainSetParentSpanId(id, parentSpanId);
130 }
131 
OH_HiTrace_IdToBytes(const HiTraceId * id,uint8_t * pIdArray,int len)132 int OH_HiTrace_IdToBytes(const HiTraceId* id, uint8_t* pIdArray, int len)
133 {
134     return HiTraceChainIdToBytes(id, pIdArray, len);
135 }