This is an automated email from the ASF dual-hosted git repository.

xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 02c4f9855e21eaa670f633ff2107ab9f9039e766
Author: wangjianyu3 <[email protected]>
AuthorDate: Thu Aug 27 18:45:58 2026 +0800

    boards/arm/qemu-armv7a: switch all nsh defconfigs to nxinit entrypoint
    
    Switch every qemu-armv7a defconfig whose init entry point was nsh_main
    (6 configs: full, gdbstub, nsh, rpproxy, rpserver, smp) to nxinit
    (init_main). nsh now runs as a "console sh" service started by init.rc
    instead of being the top-level init task.
    
    Each switched defconfig only gains the nxinit-essential keys (minimal
    delta):
    - CONFIG_INIT_ENTRYPOINT="init_main"
    - CONFIG_SYSTEM_NXINIT=y plus its Kconfig deps not already set:
      CONFIG_EXPERIMENTAL, CONFIG_LIBC_EXECFUNCS, CONFIG_SCHED_CHILD_STATUS
      (depends on CONFIG_SCHED_HAVE_PARENT)
    - CONFIG_ETC_ROMFS=y / CONFIG_FS_ROMFS=y to ship init.rc via ROMFS
    No stack-size overrides: INIT_STACKSIZE/SYSTEM_NSH_STACKSIZE keep their
    Kconfig defaults.
    
    Add boards/arm/qemu/qemu-armv7a/src/etc/init.d/init.rc, shipped via ROMFS
    in the Make build (RCSRCS) and CMake (nuttx_add_romfs()), gated on
    CONFIG_ETC_ROMFS && CONFIG_SYSTEM_NXINIT.
    
    Testing: qemu-armv7a:nsh (and smp with -smp 4) boot into nxinit with nsh
    spawned as its service (init task = init_main, sh = its child), confirmed
    via qemu-system-arm in an earlier run of this series. Note: current
    apache/master fails to build qemu-armv7a locally this round (missing
    arm_timer.h) independent of this change.
    
    Assisted-by: opencode-agent/claude-opus-4-8
    Signed-off-by: wangjianyu3 <[email protected]>
---
 boards/arm/qemu/qemu-armv7a/configs/full/defconfig |  6 +++-
 .../arm/qemu/qemu-armv7a/configs/gdbstub/defconfig |  6 +++-
 boards/arm/qemu/qemu-armv7a/configs/nsh/defconfig  |  7 ++++-
 .../arm/qemu/qemu-armv7a/configs/rpproxy/defconfig |  6 +++-
 .../qemu/qemu-armv7a/configs/rpserver/defconfig    |  6 +++-
 boards/arm/qemu/qemu-armv7a/configs/smp/defconfig  |  6 +++-
 boards/arm/qemu/qemu-armv7a/src/.gitignore         |  1 +
 boards/arm/qemu/qemu-armv7a/src/CMakeLists.txt     | 14 +++++++++
 boards/arm/qemu/qemu-armv7a/src/Makefile           |  6 ++++
 boards/arm/qemu/qemu-armv7a/src/etc/init.d/init.rc | 33 ++++++++++++++++++++++
 10 files changed, 85 insertions(+), 6 deletions(-)

diff --git a/boards/arm/qemu/qemu-armv7a/configs/full/defconfig 
b/boards/arm/qemu/qemu-armv7a/configs/full/defconfig
index 72e72c33c47..2a8ee49e017 100644
--- a/boards/arm/qemu/qemu-armv7a/configs/full/defconfig
+++ b/boards/arm/qemu/qemu-armv7a/configs/full/defconfig
@@ -46,6 +46,7 @@ CONFIG_DRIVERS_VIDEO=y
 CONFIG_DRIVERS_VIRTIO_GPU=y
 CONFIG_DRIVERS_VIRTIO_INPUT=y
 CONFIG_DRIVERS_VIRTIO_MMIO=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EVENT_FD=y
 CONFIG_EXAMPLES_FB=y
 CONFIG_EXAMPLES_HELLO=y
@@ -65,7 +66,7 @@ CONFIG_GRAPHICS_INPUT_TOOL=y
 CONFIG_GRAPHICS_LVGL=y
 CONFIG_HAVE_CXX=y
 CONFIG_IDLETHREAD_STACKSIZE=4096
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INPUT_MOUSE_WHEEL=y
 CONFIG_INTELHEX_BINARY=y
 CONFIG_INTERPRETERS_LUA=y
@@ -109,6 +110,8 @@ CONFIG_RAM_VSTART=0x40200000
 CONFIG_RAW_BINARY=y
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_HPWORKPRIORITY=192
 CONFIG_SCHED_INSTRUMENTATION=y
 CONFIG_SCHED_INSTRUMENTATION_DUMP=y
@@ -130,6 +133,7 @@ CONFIG_SYSTEM_NOTE=y
 CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_NXCAMERA=y
 CONFIG_SYSTEM_NXCODEC=y
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_SYSTEM_VI=y
 CONFIG_SYSTEM_YMODEM=y
 CONFIG_SYSTEM_ZMODEM=y
diff --git a/boards/arm/qemu/qemu-armv7a/configs/gdbstub/defconfig 
b/boards/arm/qemu/qemu-armv7a/configs/gdbstub/defconfig
index 197c37571e3..182f7756e6e 100644
--- a/boards/arm/qemu/qemu-armv7a/configs/gdbstub/defconfig
+++ b/boards/arm/qemu/qemu-armv7a/configs/gdbstub/defconfig
@@ -26,6 +26,7 @@ CONFIG_DEBUG_SCHED_INFO=y
 CONFIG_DEBUG_SCHED_WARN=y
 CONFIG_DEBUG_SYMBOLS=y
 CONFIG_DEFAULT_TASK_STACKSIZE=4096
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
 CONFIG_EXPERIMENTAL=y
 CONFIG_FLASH_SIZE=127926272
@@ -36,7 +37,7 @@ CONFIG_FS_ROMFS=y
 CONFIG_HAVE_CXX=y
 CONFIG_HAVE_CXXINITIALIZE=y
 CONFIG_IDLETHREAD_STACKSIZE=4096
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INTELHEX_BINARY=y
 CONFIG_LIBC_EXECFUNCS=y
 CONFIG_LIB_GDBSTUB=y
@@ -51,6 +52,8 @@ CONFIG_RAM_VSTART=0x40200000
 CONFIG_RAW_BINARY=y
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_HPWORK=y
 CONFIG_SCHED_HPWORKPRIORITY=192
 CONFIG_SERIAL_GDBSTUB=y
@@ -61,6 +64,7 @@ CONFIG_START_MONTH=4
 CONFIG_START_YEAR=2023
 CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_SYSTEM_SYSTEM=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
diff --git a/boards/arm/qemu/qemu-armv7a/configs/nsh/defconfig 
b/boards/arm/qemu/qemu-armv7a/configs/nsh/defconfig
index 425d4c9ca3d..b78ab69a5b4 100644
--- a/boards/arm/qemu/qemu-armv7a/configs/nsh/defconfig
+++ b/boards/arm/qemu/qemu-armv7a/configs/nsh/defconfig
@@ -26,6 +26,7 @@ CONFIG_DEBUG_FEATURES=y
 CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
 CONFIG_DEFAULT_TASK_STACKSIZE=4096
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
 CONFIG_EXPERIMENTAL=y
 CONFIG_FLASH_SIZE=1048576
@@ -33,11 +34,13 @@ CONFIG_FLASH_START=0
 CONFIG_FLASH_VSTART=0
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
 CONFIG_FS_TMPFS=y
 CONFIG_HAVE_CXX=y
 CONFIG_HAVE_CXXINITIALIZE=y
 CONFIG_IDLETHREAD_STACKSIZE=4096
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
+CONFIG_LIBC_EXECFUNCS=y
 CONFIG_MODULE=y
 CONFIG_NSH_BUILTIN_APPS=y
 CONFIG_NSH_FILEIOSIZE=512
@@ -52,6 +55,7 @@ CONFIG_RAM_VSTART=0x40000000
 CONFIG_RAW_BINARY=y
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
 CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_HPWORK=y
 CONFIG_SCHED_HPWORKPRIORITY=192
@@ -62,6 +66,7 @@ CONFIG_START_YEAR=2023
 CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_GPROF=y
 CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_SYSTEM_SYSTEM=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
diff --git a/boards/arm/qemu/qemu-armv7a/configs/rpproxy/defconfig 
b/boards/arm/qemu/qemu-armv7a/configs/rpproxy/defconfig
index f387ad8f73d..7faf9899e9e 100644
--- a/boards/arm/qemu/qemu-armv7a/configs/rpproxy/defconfig
+++ b/boards/arm/qemu/qemu-armv7a/configs/rpproxy/defconfig
@@ -46,6 +46,7 @@ CONFIG_DRIVERS_VHOST_RNG=y
 CONFIG_DRIVERS_VHOST_RPMSG=y
 CONFIG_DRIVERS_VIRTIO_MMIO=y
 CONFIG_DRIVERS_VIRTIO_SERIAL=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
 CONFIG_EXAMPLES_RPMSGSOCKET=y
 CONFIG_EXPERIMENTAL=y
@@ -63,9 +64,10 @@ CONFIG_FS_ROMFS=y
 CONFIG_FS_RPMSGFS=y
 CONFIG_FS_TMPFS=y
 CONFIG_IDLETHREAD_STACKSIZE=4096
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=4096
 CONFIG_INTELHEX_BINARY=y
+CONFIG_LIBC_EXECFUNCS=y
 CONFIG_LIBC_HOSTNAME="proxy"
 CONFIG_LIBC_LOCALE=y
 CONFIG_LIBC_LOCALTIME=y
@@ -94,6 +96,7 @@ CONFIG_RPTUN=y
 CONFIG_RPTUN_IVSHMEM=y
 CONFIG_RPTUN_IVSHMEM_NAME="0:server:s"
 CONFIG_SCHED_BACKTRACE=y
+CONFIG_SCHED_CHILD_STATUS=y
 CONFIG_SCHED_EVENTS=y
 CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_HPWORK=y
@@ -123,6 +126,7 @@ CONFIG_SYSLOG_TIMESTAMP=y
 CONFIG_SYSTEM_CUTERM=y
 CONFIG_SYSTEM_DUMPSTACK=y
 CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_UART1_BASE=0x9000000
 CONFIG_UART1_IRQ=33
 CONFIG_UART1_PL011=y
diff --git a/boards/arm/qemu/qemu-armv7a/configs/rpserver/defconfig 
b/boards/arm/qemu/qemu-armv7a/configs/rpserver/defconfig
index 91551876a52..f788b364a78 100644
--- a/boards/arm/qemu/qemu-armv7a/configs/rpserver/defconfig
+++ b/boards/arm/qemu/qemu-armv7a/configs/rpserver/defconfig
@@ -48,6 +48,7 @@ CONFIG_DRIVERS_VIRTIO_MMIO=y
 CONFIG_DRIVERS_VIRTIO_RNG=y
 CONFIG_DRIVERS_VIRTIO_RPMSG=y
 CONFIG_DRIVERS_VIRTIO_SERIAL=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
 CONFIG_EXAMPLES_RPMSGSOCKET=y
 CONFIG_EXPERIMENTAL=y
@@ -65,9 +66,10 @@ CONFIG_FS_RPMSGFS=y
 CONFIG_FS_RPMSGFS_SERVER=y
 CONFIG_FS_TMPFS=y
 CONFIG_IDLETHREAD_STACKSIZE=4096
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INIT_STACKSIZE=4096
 CONFIG_INTELHEX_BINARY=y
+CONFIG_LIBC_EXECFUNCS=y
 CONFIG_LIBC_HOSTNAME="server"
 CONFIG_LIBC_LOCALE=y
 CONFIG_LIBC_LOCALTIME=y
@@ -94,6 +96,7 @@ CONFIG_RPTUN=y
 CONFIG_RPTUN_IVSHMEM=y
 CONFIG_RPTUN_IVSHMEM_NAME="0:proxy:m"
 CONFIG_SCHED_BACKTRACE=y
+CONFIG_SCHED_CHILD_STATUS=y
 CONFIG_SCHED_EVENTS=y
 CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_HPWORK=y
@@ -123,6 +126,7 @@ CONFIG_SYSTEM_CUTERM=y
 CONFIG_SYSTEM_CUTERM_DEFAULT_DEVICE="/dev/ttyproxy"
 CONFIG_SYSTEM_DUMPSTACK=y
 CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TTY_LAUNCH=y
 CONFIG_TTY_LAUNCH_STACKSIZE=2048
 CONFIG_TTY_SIGINT=y
diff --git a/boards/arm/qemu/qemu-armv7a/configs/smp/defconfig 
b/boards/arm/qemu/qemu-armv7a/configs/smp/defconfig
index e361061edaa..b7231060c48 100644
--- a/boards/arm/qemu/qemu-armv7a/configs/smp/defconfig
+++ b/boards/arm/qemu/qemu-armv7a/configs/smp/defconfig
@@ -22,6 +22,7 @@ CONFIG_DEBUG_FEATURES=y
 CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
 CONFIG_DEFAULT_TASK_STACKSIZE=4096
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
 CONFIG_EXPERIMENTAL=y
 CONFIG_FLASH_SIZE=127926272
@@ -32,7 +33,7 @@ CONFIG_FS_ROMFS=y
 CONFIG_HAVE_CXX=y
 CONFIG_HAVE_CXXINITIALIZE=y
 CONFIG_IDLETHREAD_STACKSIZE=4096
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_INTELHEX_BINARY=y
 CONFIG_LIBC_EXECFUNCS=y
 CONFIG_MM_KASAN=y
@@ -48,6 +49,8 @@ CONFIG_RAM_VSTART=0x40200000
 CONFIG_RAW_BINARY=y
 CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_HPWORK=y
 CONFIG_SCHED_HPWORKPRIORITY=192
 CONFIG_SMP=y
@@ -57,6 +60,7 @@ CONFIG_START_MONTH=4
 CONFIG_START_YEAR=2023
 CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_SYSTEM_SYSTEM=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_KASAN=y
diff --git a/boards/arm/qemu/qemu-armv7a/src/.gitignore 
b/boards/arm/qemu/qemu-armv7a/src/.gitignore
new file mode 100644
index 00000000000..1baf09ba3ae
--- /dev/null
+++ b/boards/arm/qemu/qemu-armv7a/src/.gitignore
@@ -0,0 +1 @@
+/etctmp*
diff --git a/boards/arm/qemu/qemu-armv7a/src/CMakeLists.txt 
b/boards/arm/qemu/qemu-armv7a/src/CMakeLists.txt
index dbf972c8e15..250449d0bad 100644
--- a/boards/arm/qemu/qemu-armv7a/src/CMakeLists.txt
+++ b/boards/arm/qemu/qemu-armv7a/src/CMakeLists.txt
@@ -27,3 +27,17 @@ if(CONFIG_LIBC_FDT)
 endif()
 
 target_sources(board PRIVATE ${SRCS})
+
+if(CONFIG_ETC_ROMFS AND CONFIG_SYSTEM_NXINIT)
+  nuttx_add_romfs(
+    NAME
+    etc
+    MOUNTPOINT
+    etc
+    RCSRCS
+    etc/init.d/init.rc
+    PATH
+    ${CMAKE_CURRENT_BINARY_DIR}/etc)
+
+  target_link_libraries(board PRIVATE romfs_etc)
+endif()
diff --git a/boards/arm/qemu/qemu-armv7a/src/Makefile 
b/boards/arm/qemu/qemu-armv7a/src/Makefile
index d4e6c4e3595..bd26e1ea133 100644
--- a/boards/arm/qemu/qemu-armv7a/src/Makefile
+++ b/boards/arm/qemu/qemu-armv7a/src/Makefile
@@ -24,6 +24,12 @@ include $(TOPDIR)/Make.defs
 
 CSRCS = qemu_boardinit.c qemu_bringup.c
 
+ifeq ($(CONFIG_ETC_ROMFS),y)
+ifeq ($(CONFIG_SYSTEM_NXINIT),y)
+  RCSRCS += etc/init.d/init.rc
+endif
+endif
+
 ifeq ($(CONFIG_LIBC_FDT),y)
 CFLAGS += 
${INCDIR_PREFIX}$(TOPDIR)$(DELIM)libs$(DELIM)libc$(DELIM)fdt$(DELIM)dtc$(DELIM)libfdt
 endif
diff --git a/boards/arm/qemu/qemu-armv7a/src/etc/init.d/init.rc 
b/boards/arm/qemu/qemu-armv7a/src/etc/init.d/init.rc
new file mode 100644
index 00000000000..acfc572ae25
--- /dev/null
+++ b/boards/arm/qemu/qemu-armv7a/src/etc/init.d/init.rc
@@ -0,0 +1,33 @@
+/****************************************************************************
+ * boards/arm/qemu/qemu-armv7a/src/etc/init.d/init.rc
+ *
+ * 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.
+ *
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#ifdef CONFIG_SYSTEM_NSH
+service console sh
+   restart_period 1000
+#endif
+
+on init
+#ifdef CONFIG_SYSTEM_NSH
+   start console
+#endif

Reply via email to