blob: d19e195c11fb5377702c2d4cd1d7e84eecc5879a [file] [log] [blame]
/*
* 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_ */