acl
3.5.3.0
|
#include "acl_define.h"
#include "acl_vstream.h"
#include "acl_vstring.h"
#include "acl_ring.h"
#include "../thread/acl_thread.h"
#include <time.h>
类 | |
struct | ACL_FHANDLE |
宏定义 | |
#define | ACL_FHANDLE_O_FLOCK (1 << 0) |
#define | ACL_FHANDLE_O_MLOCK (1 << 1) |
#define | ACL_FHANDLE_O_MKDIR (1 << 2) |
#define | ACL_FHANDLE_O_NOATIME (1 << 3) |
#define | ACL_FHANDLE_O_DIRECT (1 << 4) |
#define | ACL_FHANDLE_O_SYNC (1 << 5) |
#define | ACL_FHANDLE_O_EXCL (1 << 6) |
#define | ACL_FHANDLE_S_FLOCK_ON (1 << 0) |
#define | ACL_FHANDLE_S_MUTEX_ON (1 << 1) |
#define | ACL_FHANDLE_PATH(x) (ACL_VSTREAM_PATH((x)->fp)) |
#define | ACL_FHANDLE_F_LOCK (1 << 0) |
类型定义 | |
typedef struct ACL_FHANDLE | ACL_FHANDLE |
函数 | |
void | acl_fhandle_init (int cache_size, int debug_section, unsigned int flags) |
void | acl_fhandle_end (void) |
ACL_FHANDLE * | acl_fhandle_open (size_t size, unsigned int oflags, const char *file_path, int(*on_open)(ACL_FHANDLE *, void *), void *open_arg, void(*on_close)(ACL_FHANDLE *)) |
void | acl_fhandle_close (ACL_FHANDLE *fs, int delay_timeout) |
void | acl_fhandle_lock (ACL_FHANDLE *fs) |
void | acl_fhandle_unlock (ACL_FHANDLE *fs) |
#define ACL_FHANDLE_F_LOCK (1 << 0) |
在文件 acl_fhandle.h 第 61 行定义.
#define ACL_FHANDLE_O_DIRECT (1 << 4) |
打开文件时添加 O_DIRECT 标志位
在文件 acl_fhandle.h 第 38 行定义.
#define ACL_FHANDLE_O_EXCL (1 << 6) |
打开文件时是否是自动加锁
在文件 acl_fhandle.h 第 40 行定义.
#define ACL_FHANDLE_O_FLOCK (1 << 0) |
使用文件锁
在文件 acl_fhandle.h 第 34 行定义.
#define ACL_FHANDLE_O_MKDIR (1 << 2) |
是否自动检查并创建不存在的目录
在文件 acl_fhandle.h 第 36 行定义.
#define ACL_FHANDLE_O_MLOCK (1 << 1) |
使用线程锁
在文件 acl_fhandle.h 第 35 行定义.
#define ACL_FHANDLE_O_NOATIME (1 << 3) |
打开文件时添加 O_NOATIME 标志位
在文件 acl_fhandle.h 第 37 行定义.
#define ACL_FHANDLE_O_SYNC (1 << 5) |
打开文件时添加 O_SYNC 标志位
在文件 acl_fhandle.h 第 39 行定义.
#define ACL_FHANDLE_PATH | ( | x | ) | (ACL_VSTREAM_PATH((x)->fp)) |
在文件 acl_fhandle.h 第 52 行定义.
#define ACL_FHANDLE_S_FLOCK_ON (1 << 0) |
该存储句柄已经加文件锁
在文件 acl_fhandle.h 第 43 行定义.
#define ACL_FHANDLE_S_MUTEX_ON (1 << 1) |
该存储句柄已经加线程锁
在文件 acl_fhandle.h 第 44 行定义.
typedef struct ACL_FHANDLE ACL_FHANDLE |
通用的存储文件句柄对象类型定义
在文件 acl_fhandle.h 第 19 行定义.
void acl_fhandle_close | ( | ACL_FHANDLE * | fs, |
int | delay_timeout | ||
) |
关闭一个文件句柄
fs | {ACL_FHANDLE*} |
delay_timeout | {int} 如果 > 0, 则延迟该时间后才真正关闭, 否则,其引用计数为 0 则立即关闭 |
void acl_fhandle_end | ( | void | ) |
当程序退出时需要调用此函数来释放系统资源
void acl_fhandle_init | ( | int | cache_size, |
int | debug_section, | ||
unsigned int | flags | ||
) |
初始化文件句柄操作,该函数须在程序运行初始化时被调用且只能被调用一次
cache_size | {int} 内部被打开文件句柄的最大个数 |
debug_section | {int} 调试级别 |
flags | {unsigned int} |
void acl_fhandle_lock | ( | ACL_FHANDLE * | fs | ) |
对一个文件句柄加锁(先加线程锁后加文件锁)
fs | {ACL_FHANDLE*} |
ACL_FHANDLE* acl_fhandle_open | ( | size_t | size, |
unsigned int | oflags, | ||
const char * | file_path, | ||
int(*)(ACL_FHANDLE *, void *) | on_open, | ||
void * | open_arg, | ||
void(*)(ACL_FHANDLE *) | on_close | ||
) |
打开一个文件
size | {size_t} 分配结构 FS_HANDDLE 需要的空间大小 |
oflags | {unsigned int} 打开文件句柄时的标志位, ACL_FHANDLE_O_XXX |
file_path | {const char*} 文件名(包含路径) |
on_open | {int (*)(ACL_FHANDLE*, void*)} 如果不为空, 则当文件句柄被成功打开后便调用此函数 |
open_arg | {void *} on_open 的回调参数之一 |
on_close | {void (*)(ACL_FHANDLE*)} 如果不为空, 则当文件句柄被正直关闭时便调用此函数 |
void acl_fhandle_unlock | ( | ACL_FHANDLE * | fs | ) |
对一个文件句柄解锁(先解文件锁再解线程锁)
fs | {ACL_FHANDLE*} |