XFusion API v1.3.0
载入中...
搜索中...
未找到
xf_lock.c
浏览该文件的文档.
1
12/* ==================== [Includes] ========================================== */
13
14#include "xf_lock.h"
15#include "../xf_std/xf_stddef.h"
16
17/* ==================== [Defines] =========================================== */
18
19/* ==================== [Typedefs] ========================================== */
20
21/* ==================== [Static Prototypes] ================================= */
22
23/* ==================== [Static Variables] ================================== */
24
25static const xf_lock_ops_t *sp_ops = NULL;
26
27/* ==================== [Macros] ============================================ */
28
29/* ==================== [Global Functions] ================================== */
30
32{
33 if ((NULL == p_ops)
34 || (NULL == p_ops->init)
35 || (NULL == p_ops->trylock)
36 || (NULL == p_ops->unlock)) {
37 return XF_FAIL;
38 }
39 sp_ops = p_ops;
40 return XF_OK;
41}
42
49{
50 if ((NULL == sp_ops) || (NULL == p_lock)) {
51 return XF_FAIL;
52 }
53 return sp_ops->init(p_lock);
54}
55
57{
58 if ((NULL == sp_ops) || (NULL == sp_ops->destroy)) {
59 return XF_FAIL;
60 }
61 return (sp_ops->destroy(lock));
62}
63
65{
66 if ((NULL == sp_ops) || (NULL == sp_ops->trylock)) {
67 return XF_LOCK_FAIL;
68 }
69 return sp_ops->trylock(lock);
70}
71
73{
74 if ((NULL == sp_ops) || (NULL == sp_ops->lock)) {
75 return XF_LOCK_FAIL;
76 }
77 return sp_ops->lock(lock);
78}
79
80int xf_lock_timedlock(xf_lock_t lock, uint32_t timeout_ms)
81{
82 if ((NULL == sp_ops) || (NULL == sp_ops->timedlock)) {
83 return XF_LOCK_FAIL;
84 }
85 return sp_ops->timedlock(lock, timeout_ms);
86}
87
89{
90 if ((NULL == sp_ops) || (NULL == sp_ops->unlock)) {
91 return XF_LOCK_FAIL;
92 }
93 return sp_ops->unlock(lock);
94}
95
96/* ==================== [Static Functions] ================================== */
97
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
xf_err_t xf_lock_init(xf_lock_t *p_lock)
初始化锁.
Definition xf_lock.c:48
int xf_lock_unlock(xf_lock_t lock)
解锁.
Definition xf_lock.c:88
#define XF_LOCK_FAIL
int xf_lock_lock(xf_lock_t lock)
锁定直至成功.
Definition xf_lock.c:72
int xf_lock_trylock(xf_lock_t lock)
尝试上锁.
Definition xf_lock.c:64
int xf_lock_timedlock(xf_lock_t lock, uint32_t timeout_ms)
锁定直至成功或者超时.
Definition xf_lock.c:80
void * xf_lock_t
lock 句柄.
xf_err_t xf_lock_destroy(xf_lock_t lock)
销毁锁.
Definition xf_lock.c:56
static void lock(fdb_db_t db)
Definition xf_main.c:199
锁操作结构体.
xf_lock_ops_timedlock_t timedlock
xf_lock_ops_init_t init
xf_lock_ops_lock_t lock
xf_lock_ops_trylock_t trylock
xf_lock_ops_unlock_t unlock
xf_lock_ops_destroy_t destroy
static const xf_lock_ops_t * sp_ops
Definition xf_lock.c:25
xf_err_t xf_lock_register(const xf_lock_ops_t *const p_ops)
注册锁操作.
Definition xf_lock.c:31
锁抽象层。