mirror of
https://github.com/apache/nuttx-apps.git
synced 2026-10-03 20:27:58 +00:00
Syslog may be output via services such as DFX. When debugging the init component (e.g., service startup failures, including DFX-related exceptions), syslog may not be output properly. Add a debug Kconfig option SYSTEM_NXINIT_STDOUT that redirects all init log macros (init_debug/info/warn/err) to printf instead of syslog. This is useful for early boot debugging when syslog is not yet available or serial console shows no output. Introduce init_log_output() macro as the common log backend, selected at compile time between printf (with appended newline) and syslog. Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
193 lines
5.1 KiB
Text
193 lines
5.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 SYSTEM_NXINIT
|
|
tristate "NuttX Init"
|
|
default n
|
|
depends on EXPERIMENTAL
|
|
depends on LIBC_EXECFUNCS
|
|
depends on SCHED_CHILD_STATUS
|
|
---help---
|
|
Enable NxInit(NuttX Init) component for system initialization.
|
|
The script of NxInit(init.rc) is compatible with the Android Init Language syntax.
|
|
|
|
if SYSTEM_NXINIT
|
|
|
|
comment "NXInit Basic"
|
|
|
|
config SYSTEM_NXINIT_PRIORITY
|
|
int "Thread priority"
|
|
default 100
|
|
|
|
config SYSTEM_NXINIT_STACKSIZE
|
|
int "Stack size"
|
|
default DEFAULT_TASK_STACKSIZE
|
|
|
|
config SYSTEM_NXINIT_PROGNAME
|
|
string "Program name"
|
|
default "init"
|
|
|
|
comment "NXInit Run Control(RC)"
|
|
|
|
config SYSTEM_NXINIT_RC_FILE_PATH
|
|
string "Path to RC file"
|
|
default "/etc/init.d/init.rc"
|
|
---help---
|
|
Path to the init.rc file to use for NXInit's boot logic.
|
|
|
|
config SYSTEM_NXINIT_RC_LINE_MAX
|
|
int "Max line length of RC file"
|
|
default 128
|
|
range 64 4096
|
|
---help---
|
|
Maximum line length of RC file.
|
|
More details: https://android.googlesource.com/platform/system/core/+/master/init/README.md
|
|
|
|
comment "NXInit Action"
|
|
|
|
config SYSTEM_NXINIT_ACTION_CMD_ARGS_MAX
|
|
int "Max number of command arguments"
|
|
default 8
|
|
---help---
|
|
Maximum number of command arguments.
|
|
Form:
|
|
```
|
|
on <event> [&& <event>]*
|
|
<command>
|
|
<command>
|
|
<command>
|
|
...
|
|
```
|
|
|
|
config SYSTEM_NXINIT_ACTION_WARN_SLOW
|
|
int "Slow command warning timeout"
|
|
default 50
|
|
depends on SYSTEM_NXINIT_WARN
|
|
---help---
|
|
Warning if command took more than `SYSTEM_NXINIT_ACTION_WARN_SLOW` ms.
|
|
|
|
config SYSTEM_NXINIT_ACTION_EVENTS_MAX
|
|
int "Max number of events"
|
|
default 2
|
|
range 1 64
|
|
---help---
|
|
Maximum number of event and action events.
|
|
See action.h:
|
|
```
|
|
struct action_s
|
|
{
|
|
...
|
|
struct action_event_s events[CONFIG_SYSTEM_NXINIT_ACTION_EVENTS_MAX];
|
|
...
|
|
};
|
|
```
|
|
config SYSTEM_NXINIT_FINALINIT
|
|
bool "Enable NXInit final event"
|
|
default n
|
|
---help---
|
|
Enable support to run the "final" event. Currently only "boot",
|
|
and "init" event are enabled by default, where "netinit" and
|
|
"final" are optional.
|
|
|
|
comment "NXInit Service"
|
|
|
|
config SYSTEM_NXINIT_SERVICE_ARGS_MAX
|
|
int "Max number of service arguments"
|
|
default 16
|
|
range 3 64
|
|
---help---
|
|
Maximum number of service arguments,
|
|
including "name", "pathname" and key word "service"(at least 3). Form:
|
|
```
|
|
service <name> <pathname> [ <argument> ]*
|
|
<option>
|
|
<option>
|
|
...
|
|
```
|
|
|
|
config SYSTEM_NXINIT_SERVICE_RESTART_PERIOD
|
|
int "Service restart period in ms"
|
|
default 5000
|
|
|
|
config SYSTEM_NXINIT_CONSOLE_DEV
|
|
string "Default console device of a service"
|
|
default "/dev/console"
|
|
---help---
|
|
The device used as stdin/stdout/stderr of a service declared with the
|
|
option "console" and no explicit device, i.e. "console" rather than
|
|
"console <device>".
|
|
|
|
This is needed by services which expect a controlling terminal but do
|
|
not open one themselves (e.g. plain "sh"), and is the only way to get
|
|
a console when the console device is not available at the time the
|
|
file descriptors of the idle task are set up, as is the case for a USB
|
|
gadget console.
|
|
|
|
comment "NXInit Testing"
|
|
|
|
config SYSTEM_NXINIT_TEST
|
|
bool "NxInit unit tests"
|
|
default n
|
|
depends on TESTING_CMOCKA
|
|
---help---
|
|
Enable cmocka-based unit tests covering NxInit's argument/config
|
|
parser, action event matching, and service conflict detection.
|
|
Builds a separate "nxinit_unit_test" program. Under the CMake
|
|
build the test sources compile into a dedicated target and the
|
|
"init" program is unaffected; under the Make build the test
|
|
sources are appended to the shared CSRCS list, so they are also
|
|
linked into "init", enlarging it and pulling in the cmocka
|
|
dependency. Keep this disabled for production Make builds.
|
|
|
|
if SYSTEM_NXINIT_TEST
|
|
|
|
config SYSTEM_NXINIT_TEST_PRIORITY
|
|
int "Test task priority"
|
|
default 100
|
|
|
|
config SYSTEM_NXINIT_TEST_STACKSIZE
|
|
int "Test task stack size"
|
|
default 8192
|
|
---help---
|
|
Several of the parser test cases build multi-hundred-byte
|
|
buffers on the stack (e.g. lines several times
|
|
CONFIG_SYSTEM_NXINIT_RC_LINE_MAX long) on top of cmocka's own
|
|
framework overhead. On at least one real embedded target this
|
|
overflowed the default DEFAULT_TASK_STACKSIZE (2048) silently
|
|
(no crash dump, no watchdog reset, the test task just stopped
|
|
producing output), which is far harder to diagnose than an
|
|
outright test failure. 8192 has been verified to run all test
|
|
cases cleanly on that target; lower it back down only if you
|
|
have confirmed your target's stack usage stays within bounds.
|
|
|
|
endif # SYSTEM_NXINIT_TEST
|
|
|
|
comment "NXInit Log level"
|
|
|
|
config SYSTEM_NXINIT_ERR
|
|
bool "Enable error log"
|
|
default !DEFAULT_SMALL
|
|
|
|
config SYSTEM_NXINIT_WARN
|
|
bool "Enable warning log"
|
|
depends on SYSTEM_NXINIT_ERR
|
|
|
|
config SYSTEM_NXINIT_INFO
|
|
bool "Enable info log"
|
|
depends on SYSTEM_NXINIT_WARN
|
|
|
|
config SYSTEM_NXINIT_DEBUG
|
|
bool "Enable debug log"
|
|
depends on SYSTEM_NXINIT_INFO
|
|
|
|
config SYSTEM_NXINIT_STDOUT
|
|
bool "Output log to stdout (printf)"
|
|
default n
|
|
---help---
|
|
Debug option: redirect all init logs to stdout via printf
|
|
instead of syslog. Useful when syslog is not available or
|
|
serial console has no output during early boot.
|
|
|
|
endif
|