diff --git a/doc/reference/file_system/index.rst b/doc/reference/file_system/index.rst index 1ea2f8c54d4..fb81ed429cd 100644 --- a/doc/reference/file_system/index.rst +++ b/doc/reference/file_system/index.rst @@ -3,13 +3,54 @@ File Systems ############ +Zephyr RTOS Virtual Filesystem Switch (VFS) allows applications to mount multiple +file systems at different mount points (e.g., ``/fatfs`` and ``/nffs``). The +mount point data structure contains all the necessary information required +to instantiate, mount, and operate on a file system. The File system Switch +decouples the applications from directly accessing an individual file system's +specific API or internal functions by introducing file system registration +mechanisms. + +In Zephyr, any file system implementation or library can be plugged into or +pulled out through a file system registration API. + +.. code-block:: c + + int fs_register(enum fs_type type, struct fs_file_system_t *fs); + + int fs_unregister(enum fs_type type, struct fs_file_system_t *fs); + +Zephyr RTOS supports multiple instances of a file system by making use of +the mount point as the disk volume name, which is used by the file system library +while formatting or mounting a disk. + +A file system is declared as: + +.. code-block:: c + + static struct fs_mount_t mp = { + .type = FS_FATFS, + .mnt_point = FATFS_MNTP, + .fs_data = &fat_fs, + }; + +where + +- ``FS_FATFS`` is the file system type like FATFS or NFFS. +- ``FATFS_MNTP`` is the mount point where the file system will be mounted. +- ``fat_fs`` is the file system data which will be used by fs_mount() API. + +Known Limitations +***************** + +NFFS supports only one instance of file system due to the library's internal +implementation limitation. -.. comment - not documenting - .. doxygengroup:: file_system - .. doxygengroup:: file_system_storage +Sample +****** +A sample of how the file system can be used is supplied in ``samples/subsys/fs``. API Reference *************