nuttx/libs/libc/builtin/Kconfig
liang.huang 170a989ccb libc/builtin: support per-application priority/stacksize under KERNEL build.
nsh_fileapp() could not apply an application's Kconfig-configured
priority/stacksize via posix_spawn() under CONFIG_BUILD_KERNEL, because
the registry table (struct builtin_s / g_builtins[]) was gated on
CONFIG_BUILTIN, which depends on !BUILD_KERNEL. Those settings were
silently ignored in KERNEL builds.

CONFIG_BUILTIN conflates the table with main_t-based dispatch, which is
meaningless under CONFIG_BUILD_KERNEL. Add a hidden derived symbol,
APP_REGISTRY, that tracks table availability independently of dispatch:

  config APP_REGISTRY
          bool
          default y if BUILTIN || BUILD_KERNEL

Switch the guards on the table itself (Make.defs, builtin.h) from
CONFIG_BUILTIN to CONFIG_APP_REGISTRY. Call sites that dereference
builtin->main stay gated on CONFIG_BUILTIN and remain unreachable
under CONFIG_BUILD_KERNEL.

Signed-off-by: liang.huang <liang.huang@houmo.ai>
2026-07-13 15:23:39 -03:00

27 lines
1.1 KiB
Text

#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
config BUILTIN
bool "Support Builtin Applications"
default n
depends on !BUILD_KERNEL
---help---
Enable support for builtin applications. This features assigns a string
name to an application and in addition if FS_BINFS is defined, retaining
those names in a file system from which they can be executed. This feature
is also the underlying requirement to support built-in applications in the
NuttShell (NSH).
config APP_REGISTRY
bool
default y if BUILTIN || BUILD_KERNEL
---help---
Hidden option indicating that the compile-time name/priority/stacksize
registry table for applications (struct builtin_s / g_builtins[]) is
available. This is a broader condition than BUILTIN: BUILD_KERNEL
cannot select BUILTIN (main_t dispatch is meaningless when the caller
and the application are in different address spaces), but it still
needs this table so that posix_spawn() can pick up each application's
configured priority and stack size.