1 /* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"){ 4 } 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include "hitracechain_ffi.h" 18 #include "hitracechain_impl.h" 19 20 using namespace OHOS::CJSystemapi; 21 22 extern "C" { FfiOHOSHiTraceChainBegin(const char * name,int flag)23 CHiTraceId FfiOHOSHiTraceChainBegin(const char* name, int flag) 24 { 25 OHOS::HiviewDFX::HiTraceId id = HiTraceChainImpl::Begin(name, flag); 26 return Parse(id); 27 } 28 FfiOHOSHiTraceChainEnd(CHiTraceId id)29 void FfiOHOSHiTraceChainEnd(CHiTraceId id) 30 { 31 OHOS::HiviewDFX::HiTraceId traceId = Parse(id); 32 HiTraceChainImpl::End(traceId); 33 } 34 FfiOHOSHiTraceChainGetId()35 CHiTraceId FfiOHOSHiTraceChainGetId() 36 { 37 OHOS::HiviewDFX::HiTraceId id = HiTraceChainImpl::GetId(); 38 return Parse(id); 39 } 40 FfiOHOSHiTraceChainSetId(CHiTraceId id)41 void FfiOHOSHiTraceChainSetId(CHiTraceId id) 42 { 43 OHOS::HiviewDFX::HiTraceId traceId = Parse(id); 44 HiTraceChainImpl::SetId(traceId); 45 } 46 FfiOHOSHiTraceChainClearId()47 void FfiOHOSHiTraceChainClearId() 48 { 49 HiTraceChainImpl::ClearId(); 50 } 51 FfiOHOSHiTraceChainCreateSpan()52 CHiTraceId FfiOHOSHiTraceChainCreateSpan() 53 { 54 OHOS::HiviewDFX::HiTraceId id = HiTraceChainImpl::CreateSpan(); 55 return Parse(id); 56 } 57 FfiOHOSHiTraceChainTracepoint(uint32_t mode,uint32_t type,CHiTraceId id,const char * str)58 void FfiOHOSHiTraceChainTracepoint(uint32_t mode, uint32_t type, CHiTraceId id, const char* str) 59 { 60 OHOS::HiviewDFX::HiTraceId traceId = Parse(id); 61 HiTraceChainImpl::Tracepoint(mode, type, traceId, str); 62 } 63 FfiOHOSHiTraceChainIsValid(CHiTraceId id)64 bool FfiOHOSHiTraceChainIsValid(CHiTraceId id) 65 { 66 OHOS::HiviewDFX::HiTraceId traceId = Parse(id); 67 return HiTraceChainImpl::IsValid(traceId); 68 } 69 FfiOHOSHiTraceChainIsFlagEnabled(CHiTraceId id,int32_t flag)70 bool FfiOHOSHiTraceChainIsFlagEnabled(CHiTraceId id, int32_t flag) 71 { 72 OHOS::HiviewDFX::HiTraceId traceId = Parse(id); 73 return HiTraceChainImpl::IsFlagEnabled(traceId, flag); 74 } 75 FfiOHOSHiTraceChainEnableFlag(CHiTraceId id,int32_t flag)76 void FfiOHOSHiTraceChainEnableFlag(CHiTraceId id, int32_t flag) 77 { 78 OHOS::HiviewDFX::HiTraceId traceId = Parse(id); 79 return HiTraceChainImpl::EnableFlag(traceId, flag); 80 } 81 }