menu "Virtual file system"

    config VFS_SUPPORT_IO
        bool "Provide basic I/O functions"
        default y
        help
            If enabled, the following functions are provided by the VFS component.

            open, close, read, write, pread, pwrite, lseek, fstat, fsync, ioctl, fcntl

            Filesystem drivers can then be registered to handle these functions
            for specific paths.

            Disabling this option can save memory when the support for these functions
            is not required.

            Note that the following functions can still be used with socket file descriptors
            when this option is disabled:

            close, read, write, ioctl, fcntl.

    config VFS_SUPPORT_DIR
        bool "Provide directory related functions"
        default y
        # If some filesystem is used, adding I/O support is probably needed and
        # is not a big overhead, compared to code size of the filesystem,
        # so make this depend on IO.
        depends on VFS_SUPPORT_IO
        help
            If enabled, the following functions are provided by the VFS component.

            stat, link, unlink, rename, utime, access, truncate, rmdir, mkdir,
            opendir, closedir, readdir, readdir_r, seekdir, telldir, rewinddir

            Filesystem drivers can then be registered to handle these functions
            for specific paths.

            Disabling this option can save memory when the support for these functions
            is not required.

    config VFS_SUPPORT_SELECT
        bool "Provide select function"
        default y
        # Dependency on !LWIP_USE_ONLY_LWIP_SELECT is for compatibility
        depends on VFS_SUPPORT_IO && !LWIP_USE_ONLY_LWIP_SELECT
        help
            If enabled, select function is provided by the VFS component, and can be used
            on peripheral file descriptors (such as UART) and sockets at the same time.

            If disabled, the default select implementation will be provided by LWIP for
            sockets only.

            Disabling this option can reduce code size if support for "select" on UART file
            descriptors is not required.

    config VFS_SUPPRESS_SELECT_DEBUG_OUTPUT
        bool "Suppress select() related debug outputs"
        depends on VFS_SUPPORT_SELECT
        default y
        help
            Select() related functions might produce an unconveniently lot of
            debug outputs when one sets the default log level to DEBUG or higher.
            It is possible to suppress these debug outputs by enabling this
            option.

    config VFS_SELECT_IN_RAM
        bool "Make VFS driver select() callbacks IRAM-safe"
        default n
        depends on VFS_SUPPORT_SELECT
        help
            If enabled, VFS driver select() callback function will be placed in IRAM.

    config VFS_SUPPORT_TERMIOS
        bool "Provide termios.h functions"
        default y
        # Very likely, only makes sense for UART VFS driver, which itself depends on VFS_SUPPORT_IO
        depends on VFS_SUPPORT_IO
        help
            Disabling this option can save memory when the support for termios.h is not required.

    config VFS_MAX_COUNT
        int "Maximum Number of Virtual Filesystems"
        default 8
        range 1 20
        depends on VFS_SUPPORT_IO
        help
            Define maximum number of virtual filesystems that can be registered.


    menu "Host File System I/O (Semihosting)"
        depends on VFS_SUPPORT_IO

        config VFS_SEMIHOSTFS_MAX_MOUNT_POINTS
            int "Host FS: Maximum number of the host filesystem mount points"
            default 1
            help
                Define maximum number of host filesystem mount points.
    endmenu

endmenu