posix: deprecate POSIX_MAX_FDS and add POSIX_DEVICE_IO

The POSIX_MAX_FDS option does not correspond to any standard
POSIX option. It was used to define the size of the file
descriptor table, which is by no means exclusively used by
POSIX (also net, fs, ...).

POSIX_MAX_FDS is being deprecated in order to ensure that
Zephyr's POSIX Kconfig variables correspond to those defined in
the specification, as of IEEE 1003.1-2017. Namely,
POSIX_OPEN_MAX. CONFIG_POSIX_MAX_OPEN_FILES is being deprecated
for the same reason.

To mitigate any possible layering violations, that option is
not user selectable. It tracks the newly added
CONFIG_ZVFS_OPEN_MAX option, which is native to Zephyr.

With this deprecation, we introduce the following Kconfig
options that map directly to standard POSIX Option Groups by
simply removing "CONFIG_":

* CONFIG_POSIX_DEVICE_IO

Similarly, with this deprecation, we introduce the following
Kconfig options that map directly to standard POSIX Options by
simply removing "CONFIG":

* CONFIG_POSIX_OPEN_MAX

In order to maintain parity with the current feature set, we
introduce the following Kconfig options.

* CONFIG_POSIX_DEVICE_IO_ALIAS_CLOSE
* CONFIG_POSIX_DEVICE_IO_ALIAS_OPEN
* CONFIG_POSIX_DEVICE_IO_ALIAS_READ
* CONFIG_POSIX_DEVICE_IO_ALIAS_WRITE

Gate open(), close(), read(), and write() via the
CONFIG_POSIX_DEVICE_IO Kconfig option and move
implementations into device_io.c, to be conformant with the
spec.

Lastly, stage function names for upcoming ZVFS work, to be
completed as part of the LTSv3 Roadmap (e.g. zvfs_open(), ..).

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
This commit is contained in:
Chris Friedt 2024-05-21 22:45:15 -04:00 committed by David Leach
commit bc4374b5fe
57 changed files with 237 additions and 128 deletions

View file

@ -14,7 +14,7 @@ CONFIG_THRIFT_SSL_SOCKET=y
# tcp sockets (client, server): 2
# tls sockets (client, server): 2
# socketpairs for cancellation (accept, client, server): 6
CONFIG_POSIX_MAX_FDS=15
CONFIG_ZVFS_OPEN_MAX=15
# TLS configuration
CONFIG_MBEDTLS=y

View file

@ -51,7 +51,7 @@ CONFIG_NET_PKT_RX_COUNT=20
# stdin, stdout, stderr: 3
# socketpair for channel: 2
# eventfd for cancellation: 1
CONFIG_POSIX_MAX_FDS=6
CONFIG_ZVFS_OPEN_MAX=6
# Network address config
CONFIG_NET_IPV4=y

View file

@ -30,4 +30,4 @@ CONFIG_ZTEST=y
CONFIG_MAIN_STACK_SIZE=1344
CONFIG_NET_SOCKETS_POLL_MAX=9
CONFIG_POSIX_MAX_FDS=8
CONFIG_ZVFS_OPEN_MAX=8

View file

@ -9,7 +9,7 @@ CONFIG_ENTROPY_GENERATOR=y
CONFIG_TEST_RANDOM_GENERATOR=y
CONFIG_ZTEST_STACK_SIZE=1024
CONFIG_POSIX_MAX_FDS=10
CONFIG_ZVFS_OPEN_MAX=10
CONFIG_REQUIRES_FULL_LIBC=y
CONFIG_EVENTFD_MAX=10
CONFIG_NET_MAX_CONTEXTS=10

View file

@ -7,7 +7,7 @@ CONFIG_POSIX_API=y
CONFIG_ENTROPY_GENERATOR=y
CONFIG_TEST_RANDOM_GENERATOR=y
CONFIG_POSIX_MAX_FDS=10
CONFIG_ZVFS_OPEN_MAX=10
CONFIG_REQUIRES_FULL_LIBC=y
CONFIG_EVENTFD_MAX=10
CONFIG_NET_MAX_CONTEXTS=10

View file

@ -37,9 +37,9 @@ CONFIG_NET_BUF_TX_COUNT=128
CONFIG_NET_BUF_RX_COUNT=128
CONFIG_NET_PKT_TX_COUNT=16
CONFIG_NET_PKT_RX_COUNT=16
CONFIG_POSIX_MAX_FDS=32
CONFIG_ZVFS_OPEN_MAX=32
CONFIG_NET_SOCKETS_POLL_MAX=32
CONFIG_POSIX_MAX_FDS=32
CONFIG_ZVFS_OPEN_MAX=32
CONFIG_REQUIRES_FULL_LIBC=y
CONFIG_EVENTFD_MAX=10
CONFIG_NET_MAX_CONTEXTS=10

View file

@ -7,7 +7,7 @@ CONFIG_NET_L2_ETHERNET=n
CONFIG_NET_UDP=y
CONFIG_NET_IPV4=y
CONFIG_NET_SOCKETS=y
CONFIG_POSIX_MAX_FDS=2
CONFIG_ZVFS_OPEN_MAX=2
CONFIG_ZTEST_STACK_SIZE=2048
CONFIG_MAIN_STACK_SIZE=2048
CONFIG_NET_LOG=y

View file

@ -6,7 +6,7 @@ CONFIG_NET_UDP=y
CONFIG_NET_TCP=n
CONFIG_NET_SOCKETS=y
CONFIG_NET_SOCKETS_PACKET=y
CONFIG_POSIX_MAX_FDS=8
CONFIG_ZVFS_OPEN_MAX=8
CONFIG_NET_IPV6_DAD=n
CONFIG_NET_IPV6_MLD=n

View file

@ -6,7 +6,7 @@ CONFIG_NET_UDP=n
CONFIG_NET_TCP=n
CONFIG_NET_SOCKETS=y
CONFIG_NET_SOCKETS_PACKET=y
CONFIG_POSIX_MAX_FDS=8
CONFIG_ZVFS_OPEN_MAX=8
CONFIG_NET_SOCKETS_LOG_LEVEL_DBG=y
CONFIG_NET_CORE_LOG_LEVEL_DBG=y

View file

@ -5,7 +5,7 @@ CONFIG_NET_IPV6=y
CONFIG_NET_UDP=y
CONFIG_NET_TCP=y
CONFIG_NET_SOCKETS=y
CONFIG_POSIX_MAX_FDS=10
CONFIG_ZVFS_OPEN_MAX=10
CONFIG_NET_PKT_TX_COUNT=8
CONFIG_NET_PKT_RX_COUNT=8
CONFIG_NET_MAX_CONN=5

View file

@ -28,7 +28,7 @@ CONFIG_NET_CONTEXT_REUSEPORT=y
CONFIG_NET_HOSTNAME_ENABLE=y
CONFIG_NET_HOSTNAME="ztest_hostname"
CONFIG_POSIX_MAX_FDS=8
CONFIG_ZVFS_OPEN_MAX=8
CONFIG_NET_MAX_CONN=10
CONFIG_NET_MAX_CONTEXTS=10

View file

@ -10,7 +10,7 @@ CONFIG_NET_IPV4=n
CONFIG_NET_IPV6=y
CONFIG_NET_SOCKETS=y
# Defines fd_set size
CONFIG_POSIX_MAX_FDS=33
CONFIG_ZVFS_OPEN_MAX=33
# Network driver config
CONFIG_TEST_RANDOM_GENERATOR=y

View file

@ -34,7 +34,7 @@ ZTEST_USER(net_socket_select, test_fd_set)
{
zsock_fd_set set;
/* Relies on specific value of CONFIG_POSIX_MAX_FDS in prj.conf */
/* Relies on specific value of CONFIG_ZVFS_OPEN_MAX in prj.conf */
zassert_equal(sizeof(set.bitset), sizeof(uint32_t) * 2, "");
ZSOCK_FD_ZERO(&set);

View file

@ -5,7 +5,7 @@ CONFIG_NET_IPV6=y
CONFIG_NET_UDP=y
CONFIG_NET_TCP=y
CONFIG_NET_SOCKETS=y
CONFIG_POSIX_MAX_FDS=10
CONFIG_ZVFS_OPEN_MAX=10
CONFIG_NET_PKT_TX_COUNT=8
CONFIG_NET_PKT_RX_COUNT=8
CONFIG_NET_MAX_CONN=5

View file

@ -7,7 +7,7 @@ CONFIG_NET_IPV4=y
CONFIG_NET_SOCKETS=y
CONFIG_NET_SOCKETPAIR=y
CONFIG_NET_SOCKETPAIR_BUFFER_SIZE=64
CONFIG_POSIX_MAX_FDS=10
CONFIG_ZVFS_OPEN_MAX=10
# Network driver config
CONFIG_TEST_RANDOM_GENERATOR=y

View file

@ -11,7 +11,7 @@ CONFIG_NET_IPV6=y
CONFIG_NET_IPV6_ND=n
CONFIG_NET_TCP=y
CONFIG_NET_SOCKETS=y
CONFIG_POSIX_MAX_FDS=10
CONFIG_ZVFS_OPEN_MAX=10
# Network driver config
CONFIG_NET_DRIVERS=y

View file

@ -2491,7 +2491,7 @@ static void after(void *arg)
{
ARG_UNUSED(arg);
for (int i = 0; i < CONFIG_POSIX_MAX_FDS; ++i) {
for (int i = 0; i < CONFIG_ZVFS_OPEN_MAX; ++i) {
(void)zsock_close(i);
}
}

View file

@ -19,7 +19,7 @@ CONFIG_NET_SOCKETS_TLS_MAX_CONTEXTS=4
CONFIG_NET_CONTEXT_RCVTIMEO=y
CONFIG_NET_CONTEXT_SNDTIMEO=y
CONFIG_NET_CONTEXT_RCVBUF=y
CONFIG_POSIX_MAX_FDS=20
CONFIG_ZVFS_OPEN_MAX=20
# Keep timings short for the test
CONFIG_NET_TCP_TIME_WAIT_DELAY=10

View file

@ -29,7 +29,7 @@ CONFIG_NET_BUF_TX_COUNT=64
CONFIG_NET_PKT_TX_COUNT=64
CONFIG_NET_BUF_RX_COUNT=64
CONFIG_NET_PKT_RX_COUNT=64
CONFIG_POSIX_MAX_FDS=10
CONFIG_ZVFS_OPEN_MAX=10
# Stack sizes
CONFIG_MAIN_STACK_SIZE=2048

View file

@ -7,7 +7,7 @@ CONFIG_NET_IPV4=y
CONFIG_NET_IPV6=y
CONFIG_NET_UDP=y
CONFIG_NET_SOCKETS=y
CONFIG_POSIX_MAX_FDS=10
CONFIG_ZVFS_OPEN_MAX=10
CONFIG_NET_IF_UNICAST_IPV6_ADDR_COUNT=3
CONFIG_NET_IPV6_DAD=n
CONFIG_NET_IPV6_MLD=n

View file

@ -2532,7 +2532,7 @@ static void after(void *arg)
{
ARG_UNUSED(arg);
for (int i = 0; i < CONFIG_POSIX_MAX_FDS; ++i) {
for (int i = 0; i < CONFIG_ZVFS_OPEN_MAX; ++i) {
(void)zsock_close(i);
}
}

View file

@ -290,7 +290,7 @@ ZTEST(posix_fs_file_test, test_fs_unlink)
ZTEST(posix_fs_file_test, test_fs_fd_leak)
{
const int reps =
MAX(CONFIG_POSIX_MAX_OPEN_FILES, CONFIG_POSIX_MAX_FDS) + 5;
MAX(CONFIG_POSIX_OPEN_MAX, CONFIG_ZVFS_OPEN_MAX) + 5;
for (int i = 0; i < reps; i++) {
if (i > 0) {