init: use exec_spawn instead of exec
Signed-off-by: ligd <liguiding1@xiaomi.com>
This commit is contained in:
parent
10ccba6671
commit
0bb32f27c0
@ -347,6 +347,10 @@ config INIT_ENTRYPOINT
|
|||||||
applications this is of the form 'app_main' where 'app' is the application
|
applications this is of the form 'app_main' where 'app' is the application
|
||||||
name. If not defined, INIT_ENTRYPOINT defaults to "main".
|
name. If not defined, INIT_ENTRYPOINT defaults to "main".
|
||||||
|
|
||||||
|
config INIT_ENTRYNAME
|
||||||
|
string "Application entry name"
|
||||||
|
default INIT_ENTRYPOINT
|
||||||
|
|
||||||
endif # INIT_ENTRY
|
endif # INIT_ENTRY
|
||||||
|
|
||||||
if INIT_FILE
|
if INIT_FILE
|
||||||
|
@ -234,6 +234,9 @@ static inline void nx_start_application(void)
|
|||||||
FAR char *const *argv = NULL;
|
FAR char *const *argv = NULL;
|
||||||
#endif
|
#endif
|
||||||
int ret;
|
int ret;
|
||||||
|
#ifdef CONFIG_INIT_FILE
|
||||||
|
posix_spawnattr_t attr;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_BOARD_LATE_INITIALIZE
|
#ifdef CONFIG_BOARD_LATE_INITIALIZE
|
||||||
/* Perform any last-minute, board-specific initialization, if so
|
/* Perform any last-minute, board-specific initialization, if so
|
||||||
@ -255,11 +258,11 @@ static inline void nx_start_application(void)
|
|||||||
|
|
||||||
#ifdef CONFIG_BUILD_PROTECTED
|
#ifdef CONFIG_BUILD_PROTECTED
|
||||||
DEBUGASSERT(USERSPACE->us_entrypoint != NULL);
|
DEBUGASSERT(USERSPACE->us_entrypoint != NULL);
|
||||||
ret = nxtask_create("init", CONFIG_INIT_PRIORITY,
|
ret = nxtask_create(CONFIG_INIT_ENTRYNAME, CONFIG_INIT_PRIORITY,
|
||||||
CONFIG_INIT_STACKSIZE,
|
CONFIG_INIT_STACKSIZE,
|
||||||
USERSPACE->us_entrypoint, argv);
|
USERSPACE->us_entrypoint, argv);
|
||||||
#else
|
#else
|
||||||
ret = nxtask_create("init", CONFIG_INIT_PRIORITY,
|
ret = nxtask_create(CONFIG_INIT_ENTRYNAME, CONFIG_INIT_PRIORITY,
|
||||||
CONFIG_INIT_STACKSIZE,
|
CONFIG_INIT_STACKSIZE,
|
||||||
(main_t)CONFIG_INIT_ENTRYPOINT, argv);
|
(main_t)CONFIG_INIT_ENTRYPOINT, argv);
|
||||||
#endif
|
#endif
|
||||||
@ -283,8 +286,14 @@ static inline void nx_start_application(void)
|
|||||||
|
|
||||||
sinfo("Starting init task: %s\n", CONFIG_INIT_FILEPATH);
|
sinfo("Starting init task: %s\n", CONFIG_INIT_FILEPATH);
|
||||||
|
|
||||||
ret = exec(CONFIG_INIT_FILEPATH, argv,
|
posix_spawnattr_init(&attr);
|
||||||
CONFIG_INIT_SYMTAB, CONFIG_INIT_NEXPORTS);
|
|
||||||
|
attr.priority = CONFIG_INIT_PRIORITY;
|
||||||
|
#ifndef CONFIG_ARCH_ADDRENV
|
||||||
|
attr.stacksize = CONFIG_INIT_STACKSIZE;
|
||||||
|
#endif
|
||||||
|
ret = exec_spawn(CONFIG_INIT_FILEPATH, argv,
|
||||||
|
CONFIG_INIT_SYMTAB, CONFIG_INIT_NEXPORTS, &attr);
|
||||||
DEBUGASSERT(ret >= 0);
|
DEBUGASSERT(ret >= 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user