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