acl  3.5.3.0
acl_myflock.h
浏览该文件的文档.
1 #ifndef ACL_FLOCK_INCLUDE_H
2 #define ACL_FLOCK_INCLUDE_H
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include "acl_define.h"
9 
10 /**
11  * 对打开的文件句柄进行加锁
12  * @param fd {ACL_FILE_HANDLE} 文件句柄
13  * @param lock_style {int} 系统提供的API加锁类型(仅对UNIX有效)
14  * ACL_FLOCK_STYLE_FLOCK or ACL_FLOCK_STYLE_FCNTL
15  * @param operation {int} 加锁操作方式, ACL_FLOCK_OP_XXX
16  * @return {int} 0: 加锁成功; -1: 加锁失败
17  */
18 ACL_API int acl_myflock(ACL_FILE_HANDLE fd, int lock_style, int operation);
19 
20 /*
21  * Lock styles.
22  */
23 #define ACL_FLOCK_STYLE_FLOCK 1 /**< 调用 flock 函数加锁(unix) */
24 #define ACL_FLOCK_STYLE_FCNTL 2 /**< 调用 fcntl 函数加锁(unix) */
25 
26 /*
27  * Lock request types.
28  */
29 #define ACL_FLOCK_OP_NONE 0 /**< 解锁 */
30 #define ACL_FLOCK_OP_SHARED 1 /**< 共享锁 */
31 #define ACL_FLOCK_OP_EXCLUSIVE 2 /**< 排它独享锁 */
32 
33 /**
34  * 无等待加锁, 可以与 ACL_FLOCK_OP_SHARED, 或 ACL_FLOCK_OP_EXCLUSIVE 相与,
35  * 可以与 ACL_FLOCK_OP_SHARED 相与
36  */
37 #define ACL_FLOCK_OP_NOWAIT 4
38 
39 /**
40  * 加锁方式的位集合
41  */
42 #define ACL_FLOCK_OP_BITS \
43  (ACL_FLOCK_OP_SHARED | ACL_FLOCK_OP_EXCLUSIVE | ACL_FLOCK_OP_NOWAIT)
44 
45 #ifdef __cplusplus
46 }
47 #endif
48 
49 #endif
ACL_API int acl_myflock(ACL_FILE_HANDLE fd, int lock_style, int operation)