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

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

commit 324c894bd2d1ae4ad2b32b0db7d5b41899bd9fdd
Author: wangjianyu3 <[email protected]>
AuthorDate: Thu Sep 17 02:02:56 2026 +0800

    boards/x86/qemu/qemu-i486: Switch nsh/vga_fb from nsh to nxinit.
    
    Aligns the qemu-i486 nsh and vga_fb defconfigs with the nxinit
    migration already done for sim, rv-virt and qemu-armv8a:
    
    - CONFIG_INIT_ENTRYPOINT/ENTRYNAME: "nsh_main" -> "init_main"
    - CONFIG_SYSTEM_NXINIT=y, plus its dependencies CONFIG_EXPERIMENTAL,
      CONFIG_LIBC_EXECFUNCS, CONFIG_SCHED_HAVE_PARENT and
      CONFIG_SCHED_CHILD_STATUS
    - CONFIG_ETC_ROMFS=y (CONFIG_FS_ROMFS was already enabled on both
      configs)
    - New boards/x86/qemu/qemu-i486/src/etc/init.d/init.rc, identical in
      content to boards/arm64/qemu/qemu-armv8a/src/etc/init.d/init.rc
      (service console sh + restart_period 1000, started from `on init`
      under CONFIG_SYSTEM_NSH)
    - src/Makefile: add init.rc to RCSRCS when CONFIG_ETC_ROMFS and
      CONFIG_SYSTEM_NXINIT are both set, matching qemu-armv8a's
      src/Makefile
    
    This depends on the previous commit ("arch/x86: Add -P to CPP to
    suppress linemarkers."): without it, the preprocessed init.rc that
    Board.mk feeds to nxinit's parser at build time still contains GNU
    linemarker lines and the parser rejects it with -EINVAL at boot. That
    arch-level fix is otherwise independent and can be reverted on its
    own without affecting other x86 boards.
    
    qemu-i486 is 32-bit x86 with no romfs_img/romdisk_register/
    romfs_boot/romfs_stub definitions anywhere under its board directory,
    so it does not hit the romfs_img symbol collision that affects
    qemu-intel64 (a separate board, tracked separately); i486 goes
    straight from a clean ETC_ROMFS build to a working /etc mount.
    
    Verified under QEMU (qemu-system-i386), both configs, host gcc -m32
    (CROSSDEV is unset on Linux, ARCH_X86_M32=y already handles -m32):
    
    nsh (-cpu 486 -m 2):
      nsh> ps
        TID   PID  PPID PRI POLICY   TYPE    NPX STATE    EVENT     SIGMASK     
       STACK COMMAND
          0     0     0   0 FIFO     Kthread   - Ready              
0000000000000000 0002024 Idle_Task
          2     2     0 100 FIFO     Task      - Waiting  Semaphore 
0000000000000000 0002004 init_main
          3     3     2 100 FIFO     Task      - Running            
0000000000000000 0002012 sh
      nsh> mount
        /etc type romfs
        /proc type procfs
      nsh> free
            total       used       free    maxused    maxfree  nused  nfree name
           572784       9680     563104      10048     563104     52      1 Umem
    
    vga_fb (-cpu 486 -m 1024 -vga std -serial stdio -display none): same
    init_main/sh parent-child relationship, /etc romfs mounted, `fb`
    framebuffer test completes ("Test finished"); free shows
    551696/86832/464864 total/used/free (heavier due to LCD framebuffer
    allocations, still well clear of CONFIG_RAM_SIZE=1048576).
    
    ostest (third config on this board, INIT_ENTRYPOINT="ostest_main")
    is out of scope and left untouched.
    
    Assisted-by: Claude:claude-sonnet-5
    Signed-off-by: wangjianyu3 <[email protected]>
---
 boards/x86/qemu/qemu-i486/configs/nsh/defconfig    |  8 +++++-
 boards/x86/qemu/qemu-i486/configs/vga_fb/defconfig |  8 +++++-
 boards/x86/qemu/qemu-i486/src/.gitignore           |  1 +
 boards/x86/qemu/qemu-i486/src/Makefile             |  6 ++++
 boards/x86/qemu/qemu-i486/src/etc/init.d/init.rc   | 33 ++++++++++++++++++++++
 5 files changed, 54 insertions(+), 2 deletions(-)

diff --git a/boards/x86/qemu/qemu-i486/configs/nsh/defconfig 
b/boards/x86/qemu/qemu-i486/configs/nsh/defconfig
index 2d9696102bf..c45e59fa84b 100644
--- a/boards/x86/qemu/qemu-i486/configs/nsh/defconfig
+++ b/boards/x86/qemu/qemu-i486/configs/nsh/defconfig
@@ -27,12 +27,15 @@ CONFIG_BOOT_RUNFROMEXTSRAM=y
 CONFIG_BUILTIN=y
 CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_HELLO=y
+CONFIG_EXPERIMENTAL=y
 CONFIG_FS_FAT=y
 CONFIG_FS_PROCFS=y
 CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
+CONFIG_LIBC_EXECFUNCS=y
 CONFIG_LINE_MAX=64
 CONFIG_NSH_BUILTIN_APPS=y
 CONFIG_NSH_DISABLE_IFUPDOWN=y
@@ -42,9 +45,12 @@ CONFIG_PTHREAD_MUTEX_TYPES=y
 CONFIG_RAM_SIZE=1048576
 CONFIG_RAM_START=0x00100000
 CONFIG_READLINE_CMD_HISTORY=y
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_WAITPID=y
 CONFIG_START_DAY=3
 CONFIG_START_MONTH=3
 CONFIG_START_YEAR=2011
 CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_OSTEST=y
diff --git a/boards/x86/qemu/qemu-i486/configs/vga_fb/defconfig 
b/boards/x86/qemu/qemu-i486/configs/vga_fb/defconfig
index 6be9f88641b..536c0e13092 100644
--- a/boards/x86/qemu/qemu-i486/configs/vga_fb/defconfig
+++ b/boards/x86/qemu/qemu-i486/configs/vga_fb/defconfig
@@ -28,15 +28,18 @@ CONFIG_BUILTIN=y
 CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
 CONFIG_DRIVERS_VIDEO=y
+CONFIG_ETC_ROMFS=y
 CONFIG_EXAMPLES_FB=y
 CONFIG_EXAMPLES_HELLO=y
+CONFIG_EXPERIMENTAL=y
 CONFIG_FS_FAT=y
 CONFIG_FS_PROCFS=y
 CONFIG_FS_ROMFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
-CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_ENTRYPOINT="init_main"
 CONFIG_LCD=y
 CONFIG_LCD_FRAMEBUFFER=y
+CONFIG_LIBC_EXECFUNCS=y
 CONFIG_LINE_MAX=64
 CONFIG_NSH_BUILTIN_APPS=y
 CONFIG_NSH_DISABLE_IFUPDOWN=y
@@ -47,10 +50,13 @@ CONFIG_QEMU_VGA=y
 CONFIG_RAM_SIZE=1048576
 CONFIG_RAM_START=0x00100000
 CONFIG_READLINE_CMD_HISTORY=y
+CONFIG_SCHED_CHILD_STATUS=y
+CONFIG_SCHED_HAVE_PARENT=y
 CONFIG_SCHED_WAITPID=y
 CONFIG_START_DAY=3
 CONFIG_START_MONTH=3
 CONFIG_START_YEAR=2011
 CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NXINIT=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_VIDEO_FB=y
diff --git a/boards/x86/qemu/qemu-i486/src/.gitignore 
b/boards/x86/qemu/qemu-i486/src/.gitignore
new file mode 100644
index 00000000000..1baf09ba3ae
--- /dev/null
+++ b/boards/x86/qemu/qemu-i486/src/.gitignore
@@ -0,0 +1 @@
+/etctmp*
diff --git a/boards/x86/qemu/qemu-i486/src/Makefile 
b/boards/x86/qemu/qemu-i486/src/Makefile
index 2620a6beda1..91f399b1994 100644
--- a/boards/x86/qemu/qemu-i486/src/Makefile
+++ b/boards/x86/qemu/qemu-i486/src/Makefile
@@ -28,4 +28,10 @@ ifeq ($(CONFIG_QEMU_VGA),y)
   CSRCS += qemu_vga_lcd.c
 endif
 
+ifeq ($(CONFIG_ETC_ROMFS),y)
+ifeq ($(CONFIG_SYSTEM_NXINIT),y)
+  RCSRCS += etc/init.d/init.rc
+endif
+endif
+
 include $(TOPDIR)/boards/Board.mk
diff --git a/boards/x86/qemu/qemu-i486/src/etc/init.d/init.rc 
b/boards/x86/qemu/qemu-i486/src/etc/init.d/init.rc
new file mode 100644
index 00000000000..461ac9276c3
--- /dev/null
+++ b/boards/x86/qemu/qemu-i486/src/etc/init.d/init.rc
@@ -0,0 +1,33 @@
+/****************************************************************************
+ * boards/x86/qemu/qemu-i486/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