1484543d1Sopenharmony_ci/* 2484543d1Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3484543d1Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4484543d1Sopenharmony_ci * you may not use this file except in compliance with the License. 5484543d1Sopenharmony_ci * You may obtain a copy of the License at 6484543d1Sopenharmony_ci * 7484543d1Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8484543d1Sopenharmony_ci * 9484543d1Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10484543d1Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11484543d1Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12484543d1Sopenharmony_ci * See the License for the specific language governing permissions and 13484543d1Sopenharmony_ci * limitations under the License. 14484543d1Sopenharmony_ci */ 15484543d1Sopenharmony_ci#ifndef __FFRT_BBOX_H__ 16484543d1Sopenharmony_ci#define __FFRT_BBOX_H__ 17484543d1Sopenharmony_ci#ifdef FFRT_BBOX_ENABLE 18484543d1Sopenharmony_ci#ifdef FFRT_CO_BACKTRACE_OH_ENABLE 19484543d1Sopenharmony_ci#include <string> 20484543d1Sopenharmony_ci#endif 21484543d1Sopenharmony_ciextern void TaskWakeCounterInc(void); 22484543d1Sopenharmony_ciextern void TaskPendingCounterInc(void); 23484543d1Sopenharmony_ciextern unsigned int GetBboxEnableState(void); 24484543d1Sopenharmony_ci 25484543d1Sopenharmony_ci// undefine in header for non-inline to explain why stop 26484543d1Sopenharmony_civoid BboxFreeze(void); 27484543d1Sopenharmony_ci 28484543d1Sopenharmony_ci// define in header for inline to speedup 29484543d1Sopenharmony_cistatic inline void BboxCheckAndFreeze(void) 30484543d1Sopenharmony_ci{ 31484543d1Sopenharmony_ci if (GetBboxEnableState() != 0) { 32484543d1Sopenharmony_ci BboxFreeze(); 33484543d1Sopenharmony_ci } 34484543d1Sopenharmony_ci} 35484543d1Sopenharmony_ci 36484543d1Sopenharmony_cibool FFRTIsWork(void); 37484543d1Sopenharmony_ci 38484543d1Sopenharmony_ci#ifdef FFRT_CO_BACKTRACE_OH_ENABLE 39484543d1Sopenharmony_ci#if (FFRT_TRACE_RECORD_LEVEL >= FFRT_TRACE_RECORD_LEVEL_2) 40484543d1Sopenharmony_cistd::string SaveTaskCounterInfo(void); 41484543d1Sopenharmony_ci#endif 42484543d1Sopenharmony_cistd::string SaveWorkerStatusInfo(void); 43484543d1Sopenharmony_cistd::string SaveReadyQueueStatusInfo(void); 44484543d1Sopenharmony_cistd::string SaveNormalTaskStatusInfo(void); 45484543d1Sopenharmony_cistd::string SaveQueueTaskStatusInfo(void); 46484543d1Sopenharmony_ci#endif 47484543d1Sopenharmony_ci#else 48484543d1Sopenharmony_cistatic inline void BboxCheckAndFreeze(void) 49484543d1Sopenharmony_ci{} 50484543d1Sopenharmony_ci#endif /* FFRT_BBOX_ENABLE */ 51484543d1Sopenharmony_civoid backtrace(int ignoreDepth); 52484543d1Sopenharmony_ci#endif /* __FFRT_BBOX_H__ */ 53