mcu_hi3321_watch/kernel/osal/include/lock/osal_rwlock.h
2025-05-26 20:15:20 +08:00

107 lines
1.8 KiB
C

/*
* Copyright (c) CompanyNameMagicTag 2021-2022. All rights reserved.
* Description: OS Abstract Layer.
*/
/**
* @defgroup osal_rwlock osal_rwlock
*/
#ifndef __OSAL_RWLOCK_H__
#define __OSAL_RWLOCK_H__
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
typedef struct {
void *rwlock;
} osal_rwlock;
/**
* @ingroup osal_rwlock
*
* @brief We need to initialize when we need to.
*
* @par Description:
* Read/write lock initialization.
*
* @return OSAL_FAILURE/OSAL_SUCCESS
*
* @par Support System:
* linux.
*/
int osal_rwlock_init(osal_rwlock *rw_lock);
/**
* @ingroup osal_rwlock
*
* @brief Lock it when you go in and read it.
*
* @par Description:
* Read lock.
*
* @par Support System:
* linux.
*/
void osal_rwlock_read_lock(osal_rwlock *rw_lock);
/**
* @ingroup osal_rwlock
*
* @brief Unlock when you read it out.
*
* @par Description:
* Read Unlock.
*
* @par Support System:
* linux.
*/
void osal_rwlock_read_unlock(osal_rwlock *rw_lock);
/**
* @ingroup osal_rwlock
*
* @brief Lock when you want to write.
*
* @par Description:
* Write lock.
*
* @par Support System:
* linux.
*/
void osal_rwlock_write_lock(osal_rwlock *rw_lock);
/**
* @ingroup osal_rwlock
*
* @brief Unlock after writing.
*
* @par Description:
* Write Unlock.
*
* @par Support System:
* linux.
*/
void osal_rwlock_write_unlock(osal_rwlock *rw_lock);
/**
* @ingroup osal_rwlock
*
* @brief We release rw_locks when we don't need it.
*
* @par Description:
* Release Lock.
*
* @par Support System:
* linux.
*/
void osal_rwlock_destory(osal_rwlock *rw_lock);
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif /* __OSAL_RWLOCK_H__ */