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