XFusion API v1.3.0
载入中...
搜索中...
未找到
xf_osal_port_xf_lock.c
浏览该文件的文档.
1
12/* ==================== [Includes] ========================================== */
13
14#include "xf_utils.h"
15#include "xf_utils_port.h"
16#include "xf_init.h"
17
18#include "xf_osal.h"
19
20#if XF_OSAL_MUTEX_IS_ENABLE
21
22/* ==================== [Defines] =========================================== */
23
24/* ==================== [Typedefs] ========================================== */
25
26/* ==================== [Static Prototypes] ================================= */
27
28static int port_xf_lock(void);
29
34static int _port_xf_lock_timedlock(xf_lock_t lock, uint32_t timeout_ms);
36
37/* ==================== [Static Variables] ================================== */
38
39static const xf_lock_ops_t lock_ops = {
41 .destroy = _port_xf_lock_destroy,
42 .trylock = _port_xf_lock_trylock,
43 .lock = _port_xf_lock_lock,
44 .timedlock = _port_xf_lock_timedlock,
45 .unlock = _port_xf_lock_unlock,
46};
47
48/* ==================== [Macros] ============================================ */
49
50/* ==================== [Global Functions] ================================== */
51
52/* ==================== [Static Functions] ================================== */
53
54static int port_xf_lock(void)
55{
57}
59
61{
63 xf_osal_mutex_attr_t mutex_attr = {
64 .name = "mutex",
65 };
66 mutex = xf_osal_mutex_create(&mutex_attr);
67 if (mutex == NULL) {
68 return XF_FAIL;
69 }
70 *(uintptr_t *)p_lock = (uintptr_t)mutex;
71 return XF_OK;
72}
73
79
86
93
94static int _port_xf_lock_timedlock(xf_lock_t lock, uint32_t timeout_ms)
95{
98 return (xf_ret == XF_OK) ? XF_LOCK_SUCC : XF_LOCK_FAIL;
99}
100
107
108#endif /* XF_OSAL_MUTEX_IS_ENABLE */
#define XF_INIT_EXPORT_PREV(function)
抽象层预初始化,初始化 HAL NAL 等抽象层.
Definition xf_init.h:131
uint32_t xf_osal_kernel_ms_to_ticks(uint32_t ms)
将 ms 数转为滴答数.
void * xf_osal_mutex_t
互斥锁句柄。
xf_err_t xf_osal_mutex_release(xf_osal_mutex_t mutex)
释放互斥锁。
xf_err_t xf_osal_mutex_acquire(xf_osal_mutex_t mutex, uint32_t timeout)
获取互斥锁。
xf_osal_mutex_t xf_osal_mutex_create(const xf_osal_mutex_attr_t *attr)
创建并初始化互斥锁。
xf_err_t xf_osal_mutex_delete(xf_osal_mutex_t mutex)
删除互斥锁。
#define XF_OSAL_WAIT_FOREVER
Definition xf_osal_def.h:30
int32_t xf_err_t
整形错误类型。 错误码具体值见 xf_err_code_t.
Definition xf_err.h:69
@ XF_FAIL
Definition xf_err.h:42
@ XF_OK
Definition xf_err.h:43
#define XF_LOCK_SUCC
#define XF_LOCK_FAIL
void * xf_lock_t
lock 句柄.
static xf_osal_mutex_t mutex
Definition xf_main.c:35
static void lock(fdb_db_t db)
Definition xf_main.c:199
互斥锁的属性结构。
锁操作结构体.
xf_lock_ops_init_t init
xf_err_t xf_lock_register(const xf_lock_ops_t *const p_ops)
注册锁操作.
Definition xf_lock.c:31
xf_osal 公共头文件。
static int _port_xf_lock_lock(xf_lock_t lock)
static int port_xf_lock(void)
static const xf_lock_ops_t lock_ops
static xf_err_t _port_xf_lock_init(xf_lock_t *p_lock)
static int _port_xf_lock_trylock(xf_lock_t lock)
static xf_err_t _port_xf_lock_destroy(xf_lock_t lock)
static int _port_xf_lock_timedlock(xf_lock_t lock, uint32_t timeout_ms)
static int _port_xf_lock_unlock(xf_lock_t lock)
xf_utils 模块对接总头文件。