1 /* 2 * Copyright (c) 2025 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 "socperf_hitrace_chain.h" 17 18 namespace OHOS { 19 namespace SOCPERF { 20 namespace { 21 constexpr int32_t DEFAULT_FLAGS = HiTraceFlag::HITRACE_FLAG_INCLUDE_ASYNC | 22 HiTraceFlag::HITRACE_FLAG_DONOT_CREATE_SPAN | 23 HiTraceFlag::HITRACE_FLAG_NO_BE_INFO; 24 } 25 SocPerfHiTraceChain(const char * name,const int32_t flags)26SocPerfHiTraceChain::SocPerfHiTraceChain(const char *name, const int32_t flags) 27 { 28 HiTraceIdStruct currentId = HiTraceChainGetId(); 29 isBegin_ = !HiTraceChainIsValid(¤tId); 30 if (isBegin_) { 31 traceId_ = HiTraceChainBegin(name, (flags >= 0) ? flags : DEFAULT_FLAGS); 32 } 33 } 34 ~SocPerfHiTraceChain()35SocPerfHiTraceChain::~SocPerfHiTraceChain() 36 { 37 if (isBegin_) { 38 HiTraceChainEnd(&traceId_); 39 } 40 } 41 } // namespace SOCPERF 42 } // namespace OHOS