XFusion API v1.3.0
载入中...
搜索中...
未找到
xf_vfs.h
浏览该文件的文档.
1
10/*
11 * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
12 *
13 * SPDX-License-Identifier: Apache-2.0
14 */
15
35#ifndef __XF_VFS_H__
36#define __XF_VFS_H__
37
38/* ==================== [Includes] ========================================== */
39
40#include <stdarg.h>
41#include <errno.h>
42
43#include "xf_vfs_ops.h"
44#include "xf_vfs_types.h"
45
46#ifdef __cplusplus
47extern "C" {
48#endif
49
50/* ==================== [Defines] =========================================== */
51
52/* ==================== [Typedefs] ========================================== */
53
54/* ==================== [Global Prototypes] ================================= */
55
86xf_err_t xf_vfs_register(const char *base_path, const xf_vfs_t *vfs, void *ctx);
87
103xf_err_t xf_vfs_register_fd_range(const xf_vfs_t *vfs, void *ctx, int min_fd, int max_fd);
104
121xf_err_t xf_vfs_register_with_id(const xf_vfs_t *vfs, void *ctx, xf_vfs_id_t *vfs_id);
122
130xf_err_t xf_vfs_unregister(const char *base_path);
131
140
154
168xf_err_t xf_vfs_register_fd_with_local_fd(xf_vfs_id_t vfs_id, int local_fd, bool permanent, int *fd);
169
181
182/*
183 这些函数原本是系统调用,为了最大跨平台兼容性,现在直接调用。
184 */
186xf_vfs_ssize_t xf_vfs_write(int fd, const void *data, size_t size);
187xf_vfs_off_t xf_vfs_lseek(int fd, xf_vfs_off_t size, int mode);
188xf_vfs_ssize_t xf_vfs_read(int fd, void *dst, size_t size);
189int xf_vfs_open(const char *path, int flags, int mode);
190int xf_vfs_close(int fd);
191int xf_vfs_fstat(int fd, xf_vfs_stat_t *st);
192#define xf_vfs_fcntl(fd, cmd, arg) xf_vfs_fcntl_r((fd), (cmd), (arg))
193int xf_vfs_fcntl_r(int fd, int cmd, int arg);
194int xf_vfs_ioctl(int fd, int cmd, ...);
195int xf_vfs_fsync(int fd);
196
197#if XF_VFS_SUPPORT_DIR_IS_ENABLE
198int xf_vfs_stat(const char *path, xf_vfs_stat_t *st);
199int xf_vfs_link(const char *n1, const char *n2);
200int xf_vfs_unlink(const char *path);
201int xf_vfs_rename(const char *src, const char *dst);
202int xf_vfs_utime(const char *path, const xf_vfs_utimbuf_t *times);
203xf_vfs_dir_t *xf_vfs_opendir(const char *name);
205int xf_vfs_readdir_r(xf_vfs_dir_t *pdir, xf_vfs_dirent_t *entry, xf_vfs_dirent_t **out_dirent);
206long xf_vfs_telldir(xf_vfs_dir_t *pdir);
207void xf_vfs_seekdir(xf_vfs_dir_t *pdir, long loc);
210int xf_vfs_mkdir(const char *name, xf_vfs_mode_t mode);
211int xf_vfs_rmdir(const char *name);
212int xf_vfs_access(const char *path, int amode);
213int xf_vfs_truncate(const char *path, xf_vfs_off_t length);
214int xf_vfs_ftruncate(int fd, xf_vfs_off_t length);
215#endif
230xf_vfs_ssize_t xf_vfs_pread(int fd, void *dst, size_t size, xf_vfs_off_t offset);
231
244xf_vfs_ssize_t xf_vfs_pwrite(int fd, const void *src, size_t size, xf_vfs_off_t offset);
245
261void xf_vfs_dump_fds(void);
262
277
278#if XF_VFS_SUPPORT_SELECT_IS_ENABLE
279
305int xf_vfs_select(int nfds, xf_fd_set *readfds, xf_fd_set *writefds, xf_fd_set *errorfds, xf_vfs_timeval_t *timeout);
306
316
327
328#endif /* XF_VFS_SUPPORT_SELECT_IS_ENABLE */
329
330/* ==================== [Macros] ============================================ */
331
337#ifdef __cplusplus
338} /* extern "C" */
339#endif
340
341#endif /* __XF_VFS_H__ */
int32_t xf_err_t
整形错误类型。 错误码具体值见 xf_err_code_t.
Definition xf_err.h:69
void xf_vfs_dump_registered_paths(void)
Dump all registered FSs to the provided FILE*
Definition xf_vfs.c:367
int xf_vfs_unlink(const char *path)
Definition xf_vfs.c:770
int xf_vfs_mkdir(const char *name, xf_vfs_mode_t mode)
Definition xf_vfs.c:890
xf_err_t xf_vfs_register_fd(xf_vfs_id_t vfs_id, int *fd)
Definition xf_vfs.c:288
long xf_vfs_telldir(xf_vfs_dir_t *pdir)
Definition xf_vfs.c:851
int xf_vfs_fsync(int fd)
Definition xf_vfs.c:707
xf_err_t xf_vfs_unregister_with_id(xf_vfs_id_t vfs_id)
Definition xf_vfs.c:240
xf_vfs_dir_t * xf_vfs_opendir(const char *name)
Definition xf_vfs.c:811
xf_err_t xf_vfs_register(const char *base_path, const xf_vfs_t *vfs, void *ctx)
Definition xf_vfs.c:177
int xf_vfs_ioctl(int fd, int cmd,...)
Definition xf_vfs.c:691
int xf_vfs_close(int fd)
Definition xf_vfs.c:642
int xf_vfs_access(const char *path, int amode)
Definition xf_vfs.c:922
xf_vfs_dirent_t * xf_vfs_readdir(xf_vfs_dir_t *pdir)
Definition xf_vfs.c:827
int xf_vfs_ftruncate(int fd, xf_vfs_off_t length)
Definition xf_vfs.c:951
int xf_vfs_closedir(xf_vfs_dir_t *pdir)
Definition xf_vfs.c:878
int xf_vfs_readdir_r(xf_vfs_dir_t *pdir, xf_vfs_dirent_t *entry, xf_vfs_dirent_t **out_dirent)
Definition xf_vfs.c:839
int xf_vfs_fstat(int fd, xf_vfs_stat_t *st)
Definition xf_vfs.c:665
void xf_vfs_dump_fds(void)
Dump the existing VFS FDs data to FILE* fp
Definition xf_vfs.c:347
int xf_vfs_id_t
xf_err_t xf_vfs_unregister(const char *base_path)
Definition xf_vfs.c:267
void xf_vfs_select_triggered_isr(xf_vfs_select_sem_t sem, int *woken)
Notification from a VFS driver about a read/write/error condition (ISR version)
Definition xf_vfs.c:1293
xf_err_t xf_vfs_register_with_id(const xf_vfs_t *vfs, void *ctx, xf_vfs_id_t *vfs_id)
Definition xf_vfs.c:230
xf_err_t xf_vfs_register_fd_with_local_fd(xf_vfs_id_t vfs_id, int local_fd, bool permanent, int *fd)
Definition xf_vfs.c:293
xf_vfs_ssize_t xf_vfs_pread(int fd, void *dst, size_t size, xf_vfs_off_t offset)
Implements the VFS layer of POSIX pread()
Definition xf_vfs.c:616
xf_vfs_ssize_t xf_vfs_pwrite(int fd, const void *src, size_t size, xf_vfs_off_t offset)
Implements the VFS layer of POSIX pwrite()
Definition xf_vfs.c:629
xf_err_t xf_vfs_register_fd_range(const xf_vfs_t *vfs, void *ctx, int min_fd, int max_fd)
Definition xf_vfs.c:182
int xf_vfs_open(const char *path, int flags, int mode)
Definition xf_vfs.c:538
int xf_vfs_rename(const char *src, const char *dst)
Definition xf_vfs.c:786
int xf_vfs_rmdir(const char *name)
Definition xf_vfs.c:906
int xf_vfs_link(const char *n1, const char *n2)
Definition xf_vfs.c:748
void xf_vfs_select_triggered(xf_vfs_select_sem_t sem)
Notification from a VFS driver about a read/write/error condition
Definition xf_vfs.c:1270
xf_err_t xf_vfs_unregister_fd(xf_vfs_id_t vfs_id, int fd)
Definition xf_vfs.c:325
int xf_vfs_truncate(const char *path, xf_vfs_off_t length)
Definition xf_vfs.c:935
int xf_vfs_utime(const char *path, const xf_vfs_utimbuf_t *times)
Definition xf_vfs.c:735
int xf_vfs_fcntl_r(int fd, int cmd, int arg)
Definition xf_vfs.c:678
void xf_vfs_seekdir(xf_vfs_dir_t *pdir, long loc)
Definition xf_vfs.c:863
xf_vfs_ssize_t xf_vfs_read(int fd, void *dst, size_t size)
Definition xf_vfs.c:603
void xf_vfs_rewinddir(xf_vfs_dir_t *pdir)
Definition xf_vfs.c:873
xf_vfs_off_t xf_vfs_lseek(int fd, xf_vfs_off_t size, int mode)
Definition xf_vfs.c:590
int xf_vfs_select(int nfds, xf_fd_set *readfds, xf_fd_set *writefds, xf_fd_set *errorfds, xf_vfs_timeval_t *timeout)
Synchronous I/O multiplexing which implements the functionality of POSIX select() for VFS
Definition xf_vfs.c:1040
xf_vfs_ssize_t xf_vfs_write(int fd, const void *data, size_t size)
Definition xf_vfs.c:577
static xf_osal_semaphore_t sem
Definition xf_main.c:35
Opaque directory structure
Directory entry structure
VFS semaphore type for select()
VFS definition structure
aos_utimbuf 结构描述了文件系统 inode 的 最后访问时间和最后修改时间。
static ex_scan_ctx_t ctx
Definition xf_main.c:69
unsigned long xf_vfs_mode_t
long xf_vfs_off_t
signed int xf_vfs_ssize_t