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
16 #include "base/log/ace_trace.h"
17
18 #include "hitrace_meter.h"
19
20 #include "base/utils/utils.h"
21
22 namespace OHOS::Ace {
23 namespace {
24 static constexpr uint64_t ACE_TRACE_COMMERCIAL = HITRACE_TAG_ACE | HITRACE_TAG_COMMERCIAL;
25 static constexpr uint64_t ANIMATION_TRACE_COMMERCIAL = HITRACE_TAG_ANIMATION | HITRACE_TAG_COMMERCIAL;
26 }
27
AceTraceBegin(const char * name)28 void AceTraceBegin(const char* name)
29 {
30 CHECK_NULL_VOID(name);
31 std::string nameStr(name);
32 StartTrace(HITRACE_TAG_ACE, nameStr);
33 }
34
AceTraceEnd()35 void AceTraceEnd()
36 {
37 FinishTrace(HITRACE_TAG_ACE);
38 }
39
AceTraceBeginCommercial(const char * name)40 void AceTraceBeginCommercial(const char* name)
41 {
42 StartTrace(ACE_TRACE_COMMERCIAL, name);
43 }
44
AceTraceEndCommercial()45 void AceTraceEndCommercial()
46 {
47 FinishTrace(ACE_TRACE_COMMERCIAL);
48 }
49
AceAsyncTraceBegin(int32_t taskId,const char * name,bool isAnimationTrace)50 void AceAsyncTraceBegin(int32_t taskId, const char* name, bool isAnimationTrace)
51 {
52 CHECK_NULL_VOID(name);
53 std::string nameStr(name);
54 if (isAnimationTrace) {
55 StartAsyncTrace(HITRACE_TAG_ANIMATION, nameStr, taskId);
56 } else {
57 StartAsyncTrace(HITRACE_TAG_ACE, nameStr, taskId);
58 }
59 }
60
AceAsyncTraceEnd(int32_t taskId,const char * name,bool isAnimationTrace)61 void AceAsyncTraceEnd(int32_t taskId, const char* name, bool isAnimationTrace)
62 {
63 CHECK_NULL_VOID(name);
64 std::string nameStr(name);
65 if (isAnimationTrace) {
66 FinishAsyncTrace(HITRACE_TAG_ANIMATION, nameStr, taskId);
67 } else {
68 FinishAsyncTrace(HITRACE_TAG_ACE, nameStr, taskId);
69 }
70 }
71
AceAsyncTraceBeginCommercial(int32_t taskId,const char * name,bool isAnimationTrace)72 void AceAsyncTraceBeginCommercial(int32_t taskId, const char* name, bool isAnimationTrace)
73 {
74 CHECK_NULL_VOID(name);
75 std::string nameStr(name);
76 if (isAnimationTrace) {
77 StartAsyncTrace(ANIMATION_TRACE_COMMERCIAL, nameStr, taskId);
78 } else {
79 StartAsyncTrace(ACE_TRACE_COMMERCIAL, nameStr, taskId);
80 }
81 }
82
AceAsyncTraceEndCommercial(int32_t taskId,const char * name,bool isAnimationTrace)83 void AceAsyncTraceEndCommercial(int32_t taskId, const char* name, bool isAnimationTrace)
84 {
85 CHECK_NULL_VOID(name);
86 std::string nameStr(name);
87 if (isAnimationTrace) {
88 FinishAsyncTrace(ANIMATION_TRACE_COMMERCIAL, nameStr, taskId);
89 } else {
90 FinishAsyncTrace(ACE_TRACE_COMMERCIAL, nameStr, taskId);
91 }
92 }
93
AceCountTrace(const char * key,int32_t count)94 void AceCountTrace(const char *key, int32_t count)
95 {
96 CHECK_NULL_VOID(key);
97 std::string keyStr(key);
98 CountTrace(HITRACE_TAG_ACE, keyStr, count);
99 }
100 } // namespace OHOS::Ace
101