zephyr/lib/os/Kconfig
Chris Friedt 487a8756c3 posix: eventfd: fix dependency cycle between net and posix
Until recently, the posix api was purely a consumer of the
network subsystem. However, a dependency cycle was added as
a stop-gap solution for challenges with the native platform.

Specifically,

1. eventfd symbols conflict with those of the host
2. eventfd was excluded from native libc builds via cmake

If any part of the posix were then to select the network
subsystem (which is a legitimate use case, given that networking
is a part of the posix api), we would get a build error due to
the Kconfig dependency cycle.

As usual, with dependency cycles, the cycle can be broken
via a third, mutual dependency.

What is the third mutual dependency? Naturally, it is ZVFS
which was planned some time ago. ZVFS will be where we
collect file-descriptor and FILE-pointer APIs so that we can
ensure consistency for Zephyr users.

This change deprecates EVENTFD_MAX in favour of
ZVFS_EVENTFD_MAX.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2024-06-04 16:27:12 -05:00

129 lines
3.5 KiB
Plaintext

# Copyright (c) 2016 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
menu "OS Support Library"
config FDTABLE
bool "File descriptor table"
help
This file provides generic file descriptor table implementation, suitable
for any I/O object implementing POSIX I/O semantics (i.e. read/write +
aux operations).
config ZVFS_OPEN_MAX
int "Maximum number of open file descriptors"
default 16 if WIFI_NM_WPA_SUPPLICANT
default 16 if POSIX_API
default 4
help
Maximum number of open file descriptors, this includes
files, sockets, special devices, etc.
config PRINTK_SYNC
bool "Serialize printk() calls"
default y if SMP && MP_MAX_NUM_CPUS > 1 && !(EFI_CONSOLE && LOG)
help
When true, a spinlock will be taken around the output from a
single printk() call, preventing the output data from
interleaving with concurrent usage from another CPU or an
preempting interrupt.
config MPSC_PBUF
bool "Multi producer, single consumer packet buffer"
select TIMEOUT_64BIT
help
Enable usage of mpsc packet buffer. Packet buffer is capable of
storing variable length packets in a circular way and operate directly
on the buffer memory.
config SPSC_PBUF
bool "Single producer, single consumer packet buffer"
help
Enable usage of spsc packet buffer. Packet buffer is capable of
storing variable length packets in a circular way and operate directly
on the buffer memory.
if SPSC_PBUF
choice SPSC_PBUF_CACHE_HANDLING
prompt "Cache handling"
default SPSC_PBUF_CACHE_ALWAYS if SPSC_PBUF_USE_CACHE && !SPSC_PBUF_NO_CACHE
default SPSC_PBUF_CACHE_NEVER if !SPSC_PBUF_USE_CACHE && SPSC_PBUF_NO_CACHE
default SPSC_PBUF_CACHE_FLAG
config SPSC_PBUF_CACHE_FLAG
bool "Use cache flag"
help
Use instance specific configuration flag for cache handling.
config SPSC_PBUF_CACHE_ALWAYS
bool "Always handle cache"
help
Handle cache writeback and invalidation for all instances. Option used
to avoid runtime check and thus reduce memory footprint.
config SPSC_PBUF_CACHE_NEVER
bool "Never handle cache"
help
Discar cache handling for all instances. Option used to avoid runtime
check and thus reduce memory footprint.
endchoice
config SPSC_PBUF_USE_CACHE
bool
config SPSC_PBUF_NO_CACHE
bool
if SPSC_PBUF_CACHE_FLAG || SPSC_PBUF_CACHE_ALWAYS
config SPSC_PBUF_REMOTE_DCACHE_LINE
int "Remote cache line size"
default 32
help
If a packet buffer is used for data sharing between two cores then
this value should be set to the data cache line size of the remote core.
If local data cache line is detected at runtime then it should be
maximum of local and remote line size.
endif # SPSC_PBUF_CACHE_FLAG || SPSC_PBUF_CACHE_ALWAYS
config SPSC_PBUF_UTILIZATION
bool "Track maximum utilization"
help
When enabled, maximum utilization is tracked which can be used to
determine the size of the packet buffer.
endif # SPSC_PBUF
if MPSC_PBUF
config MPSC_CLEAR_ALLOCATED
bool "Clear allocated packet"
help
When enabled packet space is zeroed before returning from allocation.
endif
config REBOOT
bool "Reboot functionality"
help
Enable the sys_reboot() API. Enabling this can drag in other subsystems
needed to perform a "safe" reboot (e.g. to stop the system clock before
issuing a reset).
config HAS_POWEROFF
bool
help
Option to signal that power off functionality is implemented.
config POWEROFF
bool "Power off functionality"
depends on HAS_POWEROFF
help
Enable support for system power off.
rsource "Kconfig.cbprintf"
rsource "zvfs/Kconfig"
endmenu