diff --git a/system/nxinit/CMakeLists.txt b/system/nxinit/CMakeLists.txt new file mode 100644 index 00000000000..5aef892e9fc --- /dev/null +++ b/system/nxinit/CMakeLists.txt @@ -0,0 +1,39 @@ +# ############################################################################## +# apps/system/nxinit/CMakeLists.txt +# +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed to the Apache Software Foundation (ASF) under one or more contributor +# license agreements. See the NOTICE file distributed with this work for +# additional information regarding copyright ownership. The ASF licenses this +# file to you under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. +# +# ############################################################################## + +if(CONFIG_SYSTEM_NXINIT) + + set(CSRCS init.c action.c builtin.c import.c parser.c service.c) + + nuttx_add_application( + MODULE + ${CONFIG_SYSTEM_NXINIT} + NAME + ${CONFIG_SYSTEM_NXINIT_PROGNAME} + STACKSIZE + ${CONFIG_SYSTEM_NXINIT_STACKSIZE} + PRIORITY + ${CONFIG_SYSTEM_NXINIT_PRIORITY} + SRCS + ${CSRCS}) + +endif() diff --git a/system/nxinit/Kconfig b/system/nxinit/Kconfig new file mode 100644 index 00000000000..b5e82ec2d2e --- /dev/null +++ b/system/nxinit/Kconfig @@ -0,0 +1,125 @@ +# +# 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 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 + +# +# 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" + +# +# RC +# + +config SYSTEM_NXINIT_RC_LINE_MAX + int "Max line length of RC file" + default 128 + ---help--- + Maximum line length of RC file. + More details: https://android.googlesource.com/platform/system/core/+/master/init/README.md + +# +# Action +# + +config SYSTEM_NXINIT_ACTION_CMD_ARGS_MAX + int "Max number of command arguments" + default 8 + ---help--- + Maximum number of command arguments. + Form: + ``` + on + + + + ... + ``` + +config SYSTEM_NXINIT_ACTION_WARN_SLOW + int "Warn if command takes too long" + default 50 + depends on SYSTEM_NXINIT_WARN + ---help--- + Warning if command took more than `SYSTEM_NXINIT_ACTION_WARN_SLOW` ms. + +config SYSTEM_NXINIT_ACTION_MANAGER_EVENT_MAX + int "Max number of action manager events" + default 32 + ---help--- + Maximum number of action manager events. + ``` + struct action_manager_s + { + ... + FAR char *events[CONFIG_SYSTEM_NXINIT_ACTION_MANAGER_EVENT_MAX]; + ... + }; + ``` + +# +# Service +# + +config SYSTEM_NXINIT_SERVICE_ARGS_MAX + int "Max number of service arguments" + default 8 + range 3 64 + ---help--- + Maximum number of service arguments, + including "name", "pathname" and key word "service"(at least 3). Form: + ``` + service [ ]* +