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 }