From 463a4377331151d0beee861594cc506d35441e95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=B0=E6=98=95?= Date: Thu, 31 Mar 2022 21:28:35 +0800 Subject: [PATCH] fs and unistd: increase OPEN_MAX by claiming a Kconfig. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 田昕 --- fs/inode/fs_files.c | 2 +- include/limits.h | 6 +++++- libs/libc/unistd/Kconfig | 7 +++++++ libs/libc/unistd/lib_sysconf.c | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/fs/inode/fs_files.c b/fs/inode/fs_files.c index 7d4eaf77d5..bdce00080a 100644 --- a/fs/inode/fs_files.c +++ b/fs/inode/fs_files.c @@ -71,7 +71,7 @@ static int files_extend(FAR struct filelist *list, size_t row) return 0; } - if (row * CONFIG_NFILE_DESCRIPTORS_PER_BLOCK > _POSIX_OPEN_MAX) + if (row * CONFIG_NFILE_DESCRIPTORS_PER_BLOCK > OPEN_MAX) { return -EMFILE; } diff --git a/include/limits.h b/include/limits.h index 59f14a8f0d..645750c3e0 100644 --- a/include/limits.h +++ b/include/limits.h @@ -203,7 +203,11 @@ #define NAME_MAX _POSIX_NAME_MAX #define TTY_NAME_MAX _POSIX_NAME_MAX #define NGROUPS_MAX _POSIX_NGROUPS_MAX -#define OPEN_MAX _POSIX_OPEN_MAX +#if CONFIG_OPEN_MAX < _POSIX_OPEN_MAX +# define OPEN_MAX _POSIX_OPEN_MAX +#else +# define OPEN_MAX CONFIG_OPEN_MAX +#endif #define PATH_MAX _POSIX_PATH_MAX #define PIPE_BUF _POSIX_PIPE_BUF #define SIZE_MAX _POSIX_SIZE_MAX diff --git a/libs/libc/unistd/Kconfig b/libs/libc/unistd/Kconfig index f3bb2a2b7f..8cc8495826 100644 --- a/libs/libc/unistd/Kconfig +++ b/libs/libc/unistd/Kconfig @@ -143,3 +143,10 @@ config LIBC_HOSTNAME default "" ---help--- A unique name to identify device on the network + +config OPEN_MAX + int "OPEN_MAX for this device" + default 255 + ---help--- + The maximum number of files that a process can have open + at any time. Must not be less than _POSIX_OPEN_MAX. diff --git a/libs/libc/unistd/lib_sysconf.c b/libs/libc/unistd/lib_sysconf.c index 031e76ea83..ee5fd2b35c 100644 --- a/libs/libc/unistd/lib_sysconf.c +++ b/libs/libc/unistd/lib_sysconf.c @@ -211,7 +211,7 @@ long sysconf(int name) return CLOCKS_PER_SEC; case _SC_OPEN_MAX: - return _POSIX_OPEN_MAX; + return OPEN_MAX; case _SC_ATEXIT_MAX: #ifdef CONFIG_SCHED_EXIT_MAX