/* * Copyright (c) 2020 Nordic Semiconductor ASA * * SPDX-License-Identifier: Apache-2.0 */ #ifndef ZEPHYR_INCLUDE_FS_FS_SYS_H_ #define ZEPHYR_INCLUDE_FS_FS_SYS_H_ #ifdef __cplusplus extern "C" { #endif /** * @ingroup file_system_api * @{ */ /** * @brief File System interface structure * * @param open Opens or creates a file, depending on flags given * @param read Reads nbytes number of bytes * @param write Writes nbytes number of bytes * @param lseek Moves the file position to a new location in the file * @param tell Retrieves the current position in the file * @param truncate Truncates/expands the file to the new length * @param sync Flushes the cache of an open file * @param close Flushes the associated stream and closes the file * @param opendir Opens an existing directory specified by the path * @param readdir Reads directory entries of an open directory * @param closedir Closes an open directory * @param mount Mounts a file system * @param unmount Unmounts a file system * @param unlink Deletes the specified file or directory * @param rename Renames a file or directory * @param mkdir Creates a new directory using specified path * @param stat Checks the status of a file or directory specified by the path * @param statvfs Returns the total and available space on the file system * volume */ struct fs_file_system_t { /* File operations */ int (*open)(struct fs_file_t *filp, const char *fs_path, fs_mode_t flags); ssize_t (*read)(struct fs_file_t *filp, void *dest, size_t nbytes); ssize_t (*write)(struct fs_file_t *filp, const void *src, size_t nbytes); int (*lseek)(struct fs_file_t *filp, off_t off, int whence); off_t (*tell)(struct fs_file_t *filp); int (*truncate)(struct fs_file_t *filp, off_t length); int (*sync)(struct fs_file_t *filp); int (*close)(struct fs_file_t *filp); /* Directory operations */ int (*opendir)(struct fs_dir_t *dirp, const char *fs_path); int (*readdir)(struct fs_dir_t *dirp, struct fs_dirent *entry); int (*closedir)(struct fs_dir_t *dirp); /* File system level operations */ int (*mount)(struct fs_mount_t *mountp); int (*unmount)(struct fs_mount_t *mountp); int (*unlink)(struct fs_mount_t *mountp, const char *name); int (*rename)(struct fs_mount_t *mountp, const char *from, const char *to); int (*mkdir)(struct fs_mount_t *mountp, const char *name); int (*stat)(struct fs_mount_t *mountp, const char *path, struct fs_dirent *entry); int (*statvfs)(struct fs_mount_t *mountp, const char *path, struct fs_statvfs *stat); }; /** * @} */ #ifdef __cplusplus } #endif #endif /* ZEPHYR_INCLUDE_FS_FS_SYS_H_ */