13d0407baSopenharmony_ci/*
23d0407baSopenharmony_ci * Copyright (c) 2022 FuZhou Lockzhiner Electronic Co., Ltd. All rights reserved.
33d0407baSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
43d0407baSopenharmony_ci * you may not use this file except in compliance with the License.
53d0407baSopenharmony_ci * You may obtain a copy of the License at
63d0407baSopenharmony_ci *
73d0407baSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
83d0407baSopenharmony_ci *
93d0407baSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
103d0407baSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
113d0407baSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
123d0407baSopenharmony_ci * See the License for the specific language governing permissions and
133d0407baSopenharmony_ci * limitations under the License.
143d0407baSopenharmony_ci */
153d0407baSopenharmony_ci
163d0407baSopenharmony_ci/**
173d0407baSopenharmony_ci * @addtogroup Lockzhiner
183d0407baSopenharmony_ci *
193d0407baSopenharmony_ci * @file mutex.h
203d0407baSopenharmony_ci */
213d0407baSopenharmony_ci
223d0407baSopenharmony_ci#ifndef LZ_HARDWARE_MUTEX_H
233d0407baSopenharmony_ci#define LZ_HARDWARE_MUTEX_H
243d0407baSopenharmony_ci
253d0407baSopenharmony_citypedef struct _ToyMutex {
263d0407baSopenharmony_ci    unsigned int muxHandle;
273d0407baSopenharmony_ci} ToyMutex;
283d0407baSopenharmony_ci
293d0407baSopenharmony_ci/**
303d0407baSopenharmony_ci * @par Description:
313d0407baSopenharmony_ci * This API is used to initialize the mutex.
323d0407baSopenharmony_ci * Return LZ_HARDWARE_SUCCESS on creating successful, return specific error code otherwise.
333d0407baSopenharmony_ci *
343d0407baSopenharmony_ci * @param mutex   the mutex to be initialized
353d0407baSopenharmony_ci *
363d0407baSopenharmony_ci */
373d0407baSopenharmony_ciunsigned int ToyMutexInit(ToyMutex *lock);
383d0407baSopenharmony_ci
393d0407baSopenharmony_ci/**
403d0407baSopenharmony_ci * @par Description:
413d0407baSopenharmony_ci * This API is used to destroy the mutex.
423d0407baSopenharmony_ci * Return LZ_HARDWARE_SUCCESS on destroying successful, return specific error code otherwise.
433d0407baSopenharmony_ci *
443d0407baSopenharmony_ci * @param mutex   the mutex to be destroied
453d0407baSopenharmony_ci *
463d0407baSopenharmony_ci */
473d0407baSopenharmony_ciunsigned int ToyMutexDestroy(ToyMutex *lock);
483d0407baSopenharmony_ci
493d0407baSopenharmony_ci/**
503d0407baSopenharmony_ci * @par Description:
513d0407baSopenharmony_ci * This API is used to lock the mutex.
523d0407baSopenharmony_ci * Return LZ_HARDWARE_SUCCESS on destroying successful, return specific error code otherwise.
533d0407baSopenharmony_ci *
543d0407baSopenharmony_ci * @param mutex   the mutex to be locked
553d0407baSopenharmony_ci *
563d0407baSopenharmony_ci */
573d0407baSopenharmony_ciunsigned int ToyMutexLock(ToyMutex *lock);
583d0407baSopenharmony_ci
593d0407baSopenharmony_ci/**
603d0407baSopenharmony_ci * @par Description:
613d0407baSopenharmony_ci * This API is used to try to lock the mutex.
623d0407baSopenharmony_ci * Return LZ_HARDWARE_SUCCESS on locking successful, return specific error code otherwise.
633d0407baSopenharmony_ci *
643d0407baSopenharmony_ci * @param mutex   the mutex to be locked
653d0407baSopenharmony_ci *
663d0407baSopenharmony_ci */
673d0407baSopenharmony_ciunsigned int ToyMutexTryLock(ToyMutex *lock);
683d0407baSopenharmony_ci
693d0407baSopenharmony_ci/**
703d0407baSopenharmony_ci * @par Description:
713d0407baSopenharmony_ci * This API is used to unlock the mutex.
723d0407baSopenharmony_ci * Return LZ_HARDWARE_SUCCESS on unlocking successful, return specific error code otherwise.
733d0407baSopenharmony_ci *
743d0407baSopenharmony_ci * @param mutex   the mutex to be unlocked
753d0407baSopenharmony_ci *
763d0407baSopenharmony_ci */
773d0407baSopenharmony_ciunsigned int ToyMutexUnlock(ToyMutex *lock);
783d0407baSopenharmony_ci
793d0407baSopenharmony_ci#endif
803d0407baSopenharmony_ci
81