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 }