ioselectors_epoll: for NuttX, limit initial numFD to configured value. (#21421)

ioselectors: ioselectors_epoll: for NuttX, limit initial numFD to configured value.

In the NuttX build config, there is a setting called "FS_NEPOLL_DESCRIPTORS".

--------
config FS_NEPOLL_DESCRIPTORS
	int "Maximum number of default epoll descriptors for epoll_create1(2)"
	default 8
	---help---
		The maximum number of default epoll descriptors for epoll_create1(2)
--------

For NuttX, change the number of fd arrays allocated by newSelector() to that value.

Signed-off-by: Takeyoshi Kikuchi <kikuchi@centurysys.co.jp>
This commit is contained in:
Century Systems
2023-02-23 03:53:04 +09:00
committed by GitHub
parent 64a788cafb
commit ab1d4a5d58
2 changed files with 9 additions and 1 deletions

View File

@@ -750,3 +750,6 @@ var SEEK_SET* {.importc: "SEEK_SET", header: "<unistd.h>".}: cint
var SEEK_CUR* {.importc: "SEEK_CUR", header: "<unistd.h>".}: cint
var SEEK_END* {.importc: "SEEK_END", header: "<unistd.h>".}: cint
# <nuttx/config.h>
when defined(nuttx):
var NEPOLL_MAX* {.importc: "CONFIG_FS_NEPOLL_DESCRIPTORS", header: "<nuttx/config.h>".}: cint

View File

@@ -72,11 +72,16 @@ type
SelectEvent* = ptr SelectEventImpl
proc newSelector*[T](): Selector[T] =
proc initialNumFD(): int {.inline.} =
when defined(nuttx):
result = NEPOLL_MAX
else:
result = 1024
# Retrieve the maximum fd count (for current OS) via getrlimit()
var maxFD = maxDescriptors()
doAssert(maxFD > 0)
# Start with a reasonable size, checkFd() will grow this on demand
const numFD = 1024
let numFD = initialNumFD()
var epollFD = epoll_create1(O_CLOEXEC)
if epollFD < 0: