xt-sdk 文档
v1.0.3
xt-sdk 嵌入式 SDK API 参考
Toggle main menu visibility
载入中...
搜索中...
未找到
xt_vfs_port.h
浏览该文件的文档.
1
12
13
#ifndef __XT_VFS_PORT_H__
14
#define __XT_VFS_PORT_H__
15
16
/* ==================== [Includes] ========================================== */
17
18
#include "
xtiny.h
"
19
20
#ifdef __cplusplus
21
extern
"C"
{
22
#endif
23
24
/* ==================== [Defines] =========================================== */
25
27
#if !defined(XT_VFS_ENABLE_THREAD_SAFE)
28
#define XT_VFS_ENABLE_THREAD_SAFE 1
29
#endif
30
32
#if !defined(XT_VFS_USE_HEAP)
33
#define XT_VFS_USE_HEAP 1
34
#endif
35
37
#if !defined(XT_VFS_ENABLE_CWD)
38
#define XT_VFS_ENABLE_CWD 0
39
#endif
40
42
#if !defined(XT_VFS_ENABLE_DIR)
43
#define XT_VFS_ENABLE_DIR 1
44
#endif
45
47
#if !defined(XT_VFS_ENABLE_STATIC_TEST)
48
#define XT_VFS_ENABLE_STATIC_TEST 0
49
#endif
50
52
#if !defined(XT_VFS_PATH_MAX)
53
#define XT_VFS_PATH_MAX 128
54
#endif
55
57
#if !defined(XT_VFS_FILENAME_MAX)
58
#define XT_VFS_FILENAME_MAX 64
59
#endif
60
62
#if !defined(XT_VFS_MOUNT_PREFIX_MAX)
63
#define XT_VFS_MOUNT_PREFIX_MAX 16
64
#endif
65
67
#if !defined(XT_VFS_MAX_MOUNTS)
68
#define XT_VFS_MAX_MOUNTS 4
69
#endif
70
72
#if !defined(XT_VFS_MAX_FILES)
73
#define XT_VFS_MAX_FILES 8
74
#endif
75
77
#if !defined(XT_VFS_MAX_DIRS)
78
#define XT_VFS_MAX_DIRS 4
79
#endif
80
82
#if !defined(XT_VFS_MAX_THREADS)
83
#define XT_VFS_MAX_THREADS 8
84
#endif
85
86
/* ---- 锁宏 ---- */
87
88
#if XT_VFS_ENABLE_THREAD_SAFE
89
90
#include "cmsis_os2.h"
91
93
#define XT_VFS_LOCK_DEF() osMutexId_t _vfs_lock
94
96
#define XT_VFS_LOCK_INIT(vfs) \
97
do { \
98
(vfs)->_vfs_lock = osMutexNew(NULL); \
99
} while (0)
100
102
#define XT_VFS_LOCK(vfs) osMutexAcquire((vfs)->_vfs_lock, osWaitForever)
103
105
#define XT_VFS_UNLOCK(vfs) osMutexRelease((vfs)->_vfs_lock)
106
108
#define XT_VFS_LOCK_DEINIT(vfs) \
109
do { \
110
if ((vfs)->_vfs_lock != NULL) { \
111
osMutexDelete((vfs)->_vfs_lock); \
112
(vfs)->_vfs_lock = NULL; \
113
} \
114
} while (0)
115
116
#else
/* !XT_VFS_ENABLE_THREAD_SAFE */
117
119
#define XT_VFS_LOCK_DEF()
121
#define XT_VFS_LOCK_INIT(vfs) (void)(vfs)
123
#define XT_VFS_LOCK(vfs) (void)(vfs)
125
#define XT_VFS_UNLOCK(vfs) (void)(vfs)
127
#define XT_VFS_LOCK_DEINIT(vfs) (void)(vfs)
128
129
#endif
/* XT_VFS_ENABLE_THREAD_SAFE */
130
131
/* ---- 内存宏 ---- */
132
133
#if XT_VFS_USE_HEAP
134
136
#define XT_VFS_MALLOC(size) xt_malloc(size)
137
#define XT_VFS_FREE(ptr) xt_free(ptr)
138
#define XT_VFS_CALLOC(n, sz) xt_calloc(n, sz)
139
140
#else
/* !XT_VFS_USE_HEAP */
141
149
#define XT_VFS_MALLOC(size) NULL
151
#define XT_VFS_FREE(ptr) (void)(ptr)
153
#define XT_VFS_CALLOC(n, sz) NULL
154
155
#endif
/* XT_VFS_USE_HEAP */
156
157
/* ==================== [Typedefs] ========================================== */
158
162
typedef
struct
xt_vfs_thread_ctx
{
163
void
*
thread_id
;
164
int32_t
last_errno
;
165
uint16_t
open_count
;
166
char
cwd
[
XT_VFS_PATH_MAX
];
167
}
xt_vfs_thread_ctx_t
;
168
177
typedef
struct
xt_vfs_config
{
178
uint16_t
max_mounts
;
179
uint16_t
max_files
;
180
uint16_t
max_dirs
;
181
uint16_t
max_threads
;
182
183
void
*
mount_mem
;
184
size_t
mount_mem_size
;
185
void
*
file_mem
;
186
size_t
file_mem_size
;
187
void
*
dir_mem
;
188
size_t
dir_mem_size
;
189
void
*
thread_mem
;
190
size_t
thread_mem_size
;
191
}
xt_vfs_config_t
;
192
193
/* ==================== [Macros] ============================================ */
194
195
#ifdef __cplusplus
196
}
/* extern "C" */
197
#endif
198
199
#endif
/* __XT_VFS_PORT_H__ */
xt_vfs_config
VFS 初始化配置
定义
xt_vfs_port.h:177
xt_vfs_config::mount_mem_size
size_t mount_mem_size
定义
xt_vfs_port.h:184
xt_vfs_config::max_mounts
uint16_t max_mounts
定义
xt_vfs_port.h:178
xt_vfs_config::mount_mem
void * mount_mem
定义
xt_vfs_port.h:183
xt_vfs_config::max_threads
uint16_t max_threads
定义
xt_vfs_port.h:181
xt_vfs_config::thread_mem_size
size_t thread_mem_size
定义
xt_vfs_port.h:190
xt_vfs_config::dir_mem
void * dir_mem
定义
xt_vfs_port.h:187
xt_vfs_config::dir_mem_size
size_t dir_mem_size
定义
xt_vfs_port.h:188
xt_vfs_config::max_files
uint16_t max_files
定义
xt_vfs_port.h:179
xt_vfs_config::file_mem_size
size_t file_mem_size
定义
xt_vfs_port.h:186
xt_vfs_config::thread_mem
void * thread_mem
定义
xt_vfs_port.h:189
xt_vfs_config::max_dirs
uint16_t max_dirs
定义
xt_vfs_port.h:180
xt_vfs_config::file_mem
void * file_mem
定义
xt_vfs_port.h:185
xt_vfs_thread_ctx
线程上下文——存储每线程 errno 和可选 CWD
定义
xt_vfs_port.h:162
xt_vfs_thread_ctx::cwd
char cwd[128]
定义
xt_vfs_port.h:166
xt_vfs_thread_ctx::last_errno
int32_t last_errno
定义
xt_vfs_port.h:164
xt_vfs_thread_ctx::thread_id
void * thread_id
定义
xt_vfs_port.h:163
xt_vfs_thread_ctx::open_count
uint16_t open_count
定义
xt_vfs_port.h:165
XT_VFS_PATH_MAX
#define XT_VFS_PATH_MAX
最大路径长度(含结尾 '\0')
定义
xt_vfs_port.h:53
xt_vfs_config_t
struct xt_vfs_config xt_vfs_config_t
VFS 初始化配置
xt_vfs_thread_ctx_t
struct xt_vfs_thread_ctx xt_vfs_thread_ctx_t
线程上下文——存储每线程 errno 和可选 CWD
xtiny.h
XTINY 总头文件
components
xt_vfs
xt_vfs_port.h
生成于
, 为 xt-sdk 文档使用
1.17.0