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
28
static
int
port_xf_lock
(
void
);
29
30
static
xf_err_t
_port_xf_lock_init
(
xf_lock_t
*p_lock);
31
static
xf_err_t
_port_xf_lock_destroy
(
xf_lock_t
lock
);
32
static
int
_port_xf_lock_trylock
(
xf_lock_t
lock
);
33
static
int
_port_xf_lock_lock
(
xf_lock_t
lock
);
34
static
int
_port_xf_lock_timedlock
(
xf_lock_t
lock
, uint32_t timeout_ms);
35
static
int
_port_xf_lock_unlock
(
xf_lock_t
lock
);
36
37
/* ==================== [Static Variables] ================================== */
38
39
static
const
xf_lock_ops_t
lock_ops
= {
40
.
init
=
_port_xf_lock_init
,
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
54
static
int
port_xf_lock
(
void
)
55
{
56
return
xf_lock_register
(&
lock_ops
);
57
}
58
XF_INIT_EXPORT_PREV
(
port_xf_lock
);
59
60
static
xf_err_t
_port_xf_lock_init
(
xf_lock_t
*p_lock)
61
{
62
xf_osal_mutex_t
mutex
= NULL;
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
74
static
xf_err_t
_port_xf_lock_destroy
(
xf_lock_t
lock
)
75
{
76
xf_osal_mutex_t
mutex
= (
xf_osal_mutex_t
)
lock
;
77
return
xf_osal_mutex_delete
(
mutex
);
78
}
79
80
static
int
_port_xf_lock_trylock
(
xf_lock_t
lock
)
81
{
82
xf_osal_mutex_t
mutex
= (
xf_osal_mutex_t
)
lock
;
83
xf_err_t
xf_ret =
xf_osal_mutex_acquire
(
mutex
, 0);
84
return
(xf_ret ==
XF_OK
) ?
XF_LOCK_SUCC
:
XF_LOCK_FAIL
;
85
}
86
87
static
int
_port_xf_lock_lock
(
xf_lock_t
lock
)
88
{
89
xf_osal_mutex_t
mutex
= (
xf_osal_mutex_t
)
lock
;
90
xf_err_t
xf_ret =
xf_osal_mutex_acquire
(
mutex
,
XF_OSAL_WAIT_FOREVER
);
91
return
(xf_ret ==
XF_OK
) ?
XF_LOCK_SUCC
:
XF_LOCK_FAIL
;
92
}
93
94
static
int
_port_xf_lock_timedlock
(
xf_lock_t
lock
, uint32_t timeout_ms)
95
{
96
xf_osal_mutex_t
mutex
= (
xf_osal_mutex_t
)
lock
;
97
xf_err_t
xf_ret =
xf_osal_mutex_acquire
(
mutex
,
xf_osal_kernel_ms_to_ticks
(timeout_ms));
98
return
(xf_ret ==
XF_OK
) ?
XF_LOCK_SUCC
:
XF_LOCK_FAIL
;
99
}
100
101
static
int
_port_xf_lock_unlock
(
xf_lock_t
lock
)
102
{
103
xf_osal_mutex_t
mutex
= (
xf_osal_mutex_t
)
lock
;
104
xf_err_t
xf_ret =
xf_osal_mutex_release
(
mutex
);
105
return
(xf_ret ==
XF_OK
) ?
XF_LOCK_SUCC
:
XF_LOCK_FAIL
;
106
}
107
108
#endif
/* XF_OSAL_MUTEX_IS_ENABLE */
XF_INIT_EXPORT_PREV
#define XF_INIT_EXPORT_PREV(function)
抽象层预初始化,初始化 HAL NAL 等抽象层.
Definition
xf_init.h:131
xf_osal_kernel_ms_to_ticks
uint32_t xf_osal_kernel_ms_to_ticks(uint32_t ms)
将 ms 数转为滴答数.
xf_osal_mutex_t
void * xf_osal_mutex_t
互斥锁句柄。
Definition
xf_osal_mutex.h:93
xf_osal_mutex_release
xf_err_t xf_osal_mutex_release(xf_osal_mutex_t mutex)
释放互斥锁。
xf_osal_mutex_acquire
xf_err_t xf_osal_mutex_acquire(xf_osal_mutex_t mutex, uint32_t timeout)
获取互斥锁。
xf_osal_mutex_create
xf_osal_mutex_t xf_osal_mutex_create(const xf_osal_mutex_attr_t *attr)
创建并初始化互斥锁。
xf_osal_mutex_delete
xf_err_t xf_osal_mutex_delete(xf_osal_mutex_t mutex)
删除互斥锁。
XF_OSAL_WAIT_FOREVER
#define XF_OSAL_WAIT_FOREVER
Definition
xf_osal_def.h:30
xf_err_t
int32_t xf_err_t
整形错误类型。 错误码具体值见 xf_err_code_t.
Definition
xf_err.h:69
XF_FAIL
@ XF_FAIL
Definition
xf_err.h:42
XF_OK
@ XF_OK
Definition
xf_err.h:43
XF_LOCK_SUCC
#define XF_LOCK_SUCC
Definition
xf_lock_types.h:32
XF_LOCK_FAIL
#define XF_LOCK_FAIL
Definition
xf_lock_types.h:33
xf_lock_t
void * xf_lock_t
lock 句柄.
Definition
xf_lock_types.h:40
mutex
static xf_osal_mutex_t mutex
Definition
xf_main.c:35
lock
static void lock(fdb_db_t db)
Definition
xf_main.c:199
_xf_osal_mutex_attr_t
互斥锁的属性结构。
Definition
xf_osal_mutex.h:98
_xf_osal_mutex_attr_t::name
const char * name
Definition
xf_osal_mutex.h:99
xf_lock_ops_s
锁操作结构体.
Definition
xf_lock_types.h:144
xf_lock_ops_s::init
xf_lock_ops_init_t init
Definition
xf_lock_types.h:145
xf_lock_register
xf_err_t xf_lock_register(const xf_lock_ops_t *const p_ops)
注册锁操作.
Definition
xf_lock.c:31
xf_osal.h
xf_osal 公共头文件。
_port_xf_lock_lock
static int _port_xf_lock_lock(xf_lock_t lock)
Definition
xf_osal_port_xf_lock.c:87
port_xf_lock
static int port_xf_lock(void)
Definition
xf_osal_port_xf_lock.c:54
lock_ops
static const xf_lock_ops_t lock_ops
Definition
xf_osal_port_xf_lock.c:39
_port_xf_lock_init
static xf_err_t _port_xf_lock_init(xf_lock_t *p_lock)
Definition
xf_osal_port_xf_lock.c:60
_port_xf_lock_trylock
static int _port_xf_lock_trylock(xf_lock_t lock)
Definition
xf_osal_port_xf_lock.c:80
_port_xf_lock_destroy
static xf_err_t _port_xf_lock_destroy(xf_lock_t lock)
Definition
xf_osal_port_xf_lock.c:74
_port_xf_lock_timedlock
static int _port_xf_lock_timedlock(xf_lock_t lock, uint32_t timeout_ms)
Definition
xf_osal_port_xf_lock.c:94
_port_xf_lock_unlock
static int _port_xf_lock_unlock(xf_lock_t lock)
Definition
xf_osal_port_xf_lock.c:101
xf_utils_port.h
xf_utils 模块对接总头文件。
components
xf_osal
xf_osal_port_xf_lock.c
生成于 2025年 一月 21日 星期二 17:25:09 , 为 XFusion API使用
1.9.8