# Copyright (c) 2020 Tobias Svehagen
# Copyright (c) 2023 Meta
#
# SPDX-License-Identifier: Apache-2.0

menuconfig ZVFS
	bool "Zephyr virtual filesystem (ZVFS) support [EXPERIMENTAL]"
	select FDTABLE
	select EXPERIMENTAL
	help
	  ZVFS is a central, Zephyr-native library that provides a common interoperable API for all
	  types of file descriptors such as those from the non-virtual FS, sockets, eventfds, FILE *'s
	  and more. It is designed to be used by all Zephyr subsystems that need to work with files.

if ZVFS

config ZVFS_EVENTFD
	bool "ZVFS event file descriptor support"
	imply ZVFS_POLL
	help
	  Enable support for ZVFS event file descriptors. An eventfd can
	  be used as an event wait/notify mechanism together with POSIX calls
	  like read, write and poll.

if ZVFS_EVENTFD

config ZVFS_EVENTFD_MAX
	int "Maximum number of ZVFS eventfd's"
	default 8 if WIFI_NM_WPA_SUPPLICANT
	default 1
	range 1 4096
	help
	  The maximum number of supported event file descriptors.

endif # ZVFS_EVENTFD

config ZVFS_POLL
	bool "ZVFS poll"
	select POLL
	help
	  Enable support for zvfs_poll().

if ZVFS_POLL

config ZVFS_POLL_MAX
	int "Max number of supported zvfs_poll() entries"
	default NET_SOCKETS_POLL_MAX if NET_SOCKETS_POLL_MAX > 0
	default 8 if NRF70_ENABLE_DUAL_VIF
	default 6 if WIFI_NM_WPA_SUPPLICANT
	default 4 if SHELL_BACKEND_TELNET
	default 3
	help
	  Maximum number of entries supported for poll() call.

config ZVFS_SELECT
	bool "ZVFS select"
	help
	  Enable support for zvfs_select().

endif # ZVFS_POLL

endif # ZVFS
