mirror of
https://github.com/apache/nuttx.git
synced 2026-08-01 20:28:58 +00:00
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>
This commit is contained in:
parent
34170a4475
commit
170a989ccb
4 changed files with 20 additions and 4 deletions
|
|
@ -30,12 +30,16 @@
|
|||
#include <nuttx/config.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef CONFIG_BUILTIN
|
||||
#ifdef CONFIG_APP_REGISTRY
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
|
||||
/* Under CONFIG_BUILD_KERNEL, only priority/stacksize are consumed; main
|
||||
* (and uid/gid/mode, if enabled) are populated but unused.
|
||||
*/
|
||||
|
||||
struct builtin_s
|
||||
{
|
||||
FAR const char *name; /* Invocation name and as seen under /sbin/ */
|
||||
|
|
@ -241,5 +245,5 @@ int builtin_getmode(int index);
|
|||
}
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_BUILTIN */
|
||||
#endif /* CONFIG_APP_REGISTRY */
|
||||
#endif /* __INCLUDE_NUTTX_LIB_BUILTIN_H */
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
#
|
||||
# ##############################################################################
|
||||
|
||||
if(CONFIG_BUILTIN)
|
||||
if(CONFIG_APP_REGISTRY)
|
||||
set(SRCS lib_builtin_getname.c lib_builtin_isavail.c lib_builtin_forindex.c)
|
||||
|
||||
if(CONFIG_BUILD_PROTECTED)
|
||||
|
|
|
|||
|
|
@ -13,3 +13,15 @@ config BUILTIN
|
|||
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.
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
#
|
||||
############################################################################
|
||||
|
||||
ifeq ($(CONFIG_BUILTIN),y)
|
||||
ifneq ($(CONFIG_APP_REGISTRY),)
|
||||
|
||||
# Builtin library files
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue