Re: [PATCH v2 12/42] tools/nolibc/types: make FD_SETSIZE configurable

From: Paul E. McKenney
Date: Mon Feb 14 2022 - 15:53:12 EST


On Sun, Feb 13, 2022 at 09:53:01AM +0100, Willy Tarreau wrote:
> The macro was hard-coded to 256 but it's common to see it redefined.
> Let's support this and make sure we always allocate enough entries for
> the cases where it wouldn't be multiple of 32.
>
> Signed-off-by: Willy Tarreau <w@xxxxxx>

I queued both in place of their earlier versions, thank you!

Thanx, Paul

> ---
> v2:
> - rebase on top of v2 of previous patch
> ---
> tools/include/nolibc/types.h | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/tools/include/nolibc/types.h b/tools/include/nolibc/types.h
> index a4dda0a22fc2..563dbbad0496 100644
> --- a/tools/include/nolibc/types.h
> +++ b/tools/include/nolibc/types.h
> @@ -45,7 +45,9 @@
> #define DT_SOCK 0xc
>
> /* commonly an fd_set represents 256 FDs */
> +#ifndef FD_SETSIZE
> #define FD_SETSIZE 256
> +#endif
>
> /* Special FD used by all the *at functions */
> #ifndef AT_FDCWD
> @@ -72,7 +74,7 @@
>
> /* for select() */
> typedef struct {
> - uint32_t fd32[FD_SETSIZE / 32];
> + uint32_t fd32[(FD_SETSIZE + 31) / 32];
> } fd_set;
>
> #define FD_CLR(fd, set) do { \
> @@ -101,7 +103,7 @@ typedef struct {
> #define FD_ZERO(set) do { \
> fd_set *__set = (set); \
> int __idx; \
> - for (__idx = 0; __idx < FD_SETSIZE / 32; __idx ++) \
> + for (__idx = 0; __idx < (FD_SETSIZE+31) / 32; __idx ++) \
> __set->fd32[__idx] = 0; \
> } while (0)
>
> --
> 2.35.1