1cb69b360Sopenharmony_ci/* 2cb69b360Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 3cb69b360Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4cb69b360Sopenharmony_ci * you may not use this file except in compliance with the License. 5cb69b360Sopenharmony_ci * You may obtain a copy of the License at 6cb69b360Sopenharmony_ci * 7cb69b360Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8cb69b360Sopenharmony_ci * 9cb69b360Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10cb69b360Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11cb69b360Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12cb69b360Sopenharmony_ci * See the License for the specific language governing permissions and 13cb69b360Sopenharmony_ci * limitations under the License. 14cb69b360Sopenharmony_ci */ 15cb69b360Sopenharmony_ci 16cb69b360Sopenharmony_ci#ifndef POWERMGR_RUNNING_LOCK_MGR_H 17cb69b360Sopenharmony_ci#define POWERMGR_RUNNING_LOCK_MGR_H 18cb69b360Sopenharmony_ci 19cb69b360Sopenharmony_ci#include "running_lock_entry.h" 20cb69b360Sopenharmony_ci 21cb69b360Sopenharmony_ci#ifdef __cplusplus 22cb69b360Sopenharmony_ciextern "C" { 23cb69b360Sopenharmony_ci#endif // __cplusplus 24cb69b360Sopenharmony_ci 25cb69b360Sopenharmony_civoid RunningLockMgrInit(void); 26cb69b360Sopenharmony_ciint32_t RunningLockMgrAcquireEntry(RunningLockEntry *entry, int32_t timeoutMs); 27cb69b360Sopenharmony_ciint32_t RunningLockMgrReleaseEntry(RunningLockEntry *entry); 28cb69b360Sopenharmony_ciuint32_t RunningLockMgrGetLockCount(RunningLockType type); 29cb69b360Sopenharmony_ciuint32_t RunningLockMgrGetTotalLockCount(); 30cb69b360Sopenharmony_ci 31cb69b360Sopenharmony_cistatic inline BOOL RunningLockMgrIsLockHolding(RunningLockType type) 32cb69b360Sopenharmony_ci{ 33cb69b360Sopenharmony_ci return (RunningLockMgrGetLockCount(type) > 0) ? TRUE : FALSE; 34cb69b360Sopenharmony_ci} 35cb69b360Sopenharmony_ci 36cb69b360Sopenharmony_cistatic inline BOOL RunningLockMgrIsAnyLockHolding() 37cb69b360Sopenharmony_ci{ 38cb69b360Sopenharmony_ci return (RunningLockMgrGetTotalLockCount() > 0) ? TRUE : FALSE; 39cb69b360Sopenharmony_ci} 40cb69b360Sopenharmony_ci 41cb69b360Sopenharmony_ci#ifdef __cplusplus 42cb69b360Sopenharmony_ci} 43cb69b360Sopenharmony_ci#endif // __cplusplus 44cb69b360Sopenharmony_ci#endif // POWERMGR_RUNNING_LOCK_MGR_H 45