CV-Bowen opened a new pull request, #18903: URL: https://github.com/apache/nuttx/pull/18903
## Summary `nxsched_waitpid` is only available when `CONFIG_SCHED_WAITPID` is enabled. Without the guard, building rptun with `CONFIG_SCHED_WAITPID` disabled results in a compile error due to the undefined symbol. This patch wraps the `nxsched_waitpid` call in `rptun_dev_stop()` with `#ifdef CONFIG_SCHED_WAITPID` to fix the build failure. ## Impact Build-only fix. No runtime behavior change when `CONFIG_SCHED_WAITPID` is enabled. When disabled, the stop path skips the waitpid call, which means the caller will not block waiting for the rptun thread to exit. ## Testing Tested on QEMU aarch64 virt with two NuttX instances (server + proxy communicating over ivshmem-based rptun, verified rpmsg ping works normally after the change Server: ```c ❯ qemu-system-aarch64 -cpu cortex-a53 -nographic \ -machine virt,virtualization=on,gic-version=3 \ -chardev stdio,id=con,mux=on -serial chardev:con \ -object memory-backend-file,discard-data=on,id=shmmem-shmem0,mem-path=/dev/shm/my_shmem0,size=4194304,share=yes \ -device ivshmem-plain,id=shmem0,memdev=shmmem-shmem0,addr=0xb \ -device virtio-serial-device,bus=virtio-mmio-bus.0 \ -chardev socket,path=/tmp/rpmsg_port_uart_socket,server=on,wait=off,id=foo \ -device virtconsole,chardev=foo \ -mon chardev=con,mode=readline -kernel ./cmake_out/v8a_server/nuttx \ -gdb tcp::7775 [ 0.000000] [ 0] [ INFO] [server] pci_register_rptun_ivshmem_driver: Register ivshmem driver, id=0, cpuname=proxy, master=1 [ 0.000000] [ 3] [ INFO] [server] pci_scan_bus: pci_scan_bus for bus 0 [ 0.000000] [ 3] [ INFO] [server] pci_scan_bus: class = 00000600, hdr_type = 00000000 [ 0.000000] [ 3] [ INFO] [server] pci_scan_bus: 00:00 [1b36:0008] [ 0.000000] [ 3] [ INFO] [server] pci_setup_device: pbar0 set bad mask [ 0.000000] [ 3] [ INFO] [server] pci_setup_device: pbar1 set bad mask [ 0.000000] [ 3] [ INFO] [server] pci_setup_device: pbar2 set bad mask [ 0.000000] [ 3] [ INFO] [server] pci_setup_device: pbar3 set bad mask [ 0.000000] [ 3] [ INFO] [server] pci_setup_device: pbar4 set bad mask [ 0.000000] [ 3] [ INFO] [server] pci_setup_device: pbar5 set bad mask [ 0.000000] [ 3] [ INFO] [server] pci_scan_bus: class = 00000200, hdr_type = 00000000 [ 0.000000] [ 3] [ INFO] [server] pci_scan_bus: 00:08 [1af4:1000] [ 0.000000] [ 3] [ INFO] [server] pci_setup_device: pbar0: mask64=fffffffe 32bytes [ 0.000000] [ 3] [ INFO] [server] pci_setup_device: pbar1: mask64=fffffff0 4096bytes [ 0.000000] [ 3] [ INFO] [server] pci_setup_device: pbar2 set bad mask [ 0.000000] [ 3] [ INFO] [server] pci_setup_device: pbar3 set bad mask [ 0.000000] [ 3] [ INFO] [server] pci_setup_device: pbar4: mask64=fffffffffffffff0 16384bytes [ 0.000000] [ 3] [ INFO] [server] pci_scan_bus: class = 00000500, hdr_type = 00000000 [ 0.000000] [ 3] [ INFO] [server] pci_scan_bus: 00:58 [1af4:1110] [ 0.000000] [ 3] [ INFO] [server] pci_setup_device: pbar0: mask64=fffffff0 256bytes [ 0.000000] [ 3] [ INFO] [server] pci_setup_device: pbar1 set bad mask [ 0.000000] [ 3] [ INFO] [server] pci_setup_device: pbar2: mask64=fffffffffffffff0 4194304bytes [ 0.000000] [ 3] [ INFO] [server] pci_setup_device: pbar4 set bad mask [ 0.000000] [ 3] [ INFO] [server] pci_setup_device: pbar5 set bad mask [ 0.000000] [ 3] [ INFO] [server] ivshmem_probe: shmem addr=0x8000400000 size=4194304 reg=0x10001000 [ 0.000000] [ 3] [ INFO] [server] rptun_ivshmem_probe: shmem addr=0x8000400000 size=4194304 NuttShell (NSH) NuttX-12.12.0 server> server> server> [ 0.000000] [ 0] [ INFO] [proxy] pci_register_rptun_ivshmem_driver: Register ivshmem driver, id=0, cpuname=server, master=0 [ 0.000000] [ 3] [ INFO] [proxy] pci_scan_bus: pci_scan_bus for bus 0 [ 0.000000] [ 3] [ INFO] [proxy] pci_scan_bus: class = 00000600, hdr_type = 00000000 [ 0.000000] [ 3] [ INFO] [proxy] pci_scan_bus: 00:00 [1b36:0008] [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar0 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar1 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar2 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar3 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar4 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar5 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_scan_bus: class = 00000200, hdr_type = 00000000 [ 0.000000] [ 3] [ INFO] [proxy] pci_scan_bus: 00:08 [1af4:1000] [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar0: mask64=fffffffe 32bytes [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar1: mask64=fffffff0 4096bytes [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar2 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar3 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar4: mask64=fffffffffffffff0 16384bytes [ 0.000000] [ 3] [ INFO] [proxy] pci_scan_bus: class = 00000500, hdr_type = 00000000 [ 0.000000] [ 3] [ INFO] [proxy] pci_scan_bus: 00:58 [1af4:1110] [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar0: mask64=fffffff0 256bytes [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar1 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar2: mask64=fffffffffffffff0 4194304bytes [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar4 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar5 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] ivshmem_probe: shmem addr=0x8000400000 size=4194304 reg=0x10001000 [ 0.000000] [ 3] [ INFO] [proxy] rptun_ivshmem_probe: shmem addr=0x8000400000 size=4194304 [ 0.000000] [ 3] [ INFO] [proxy] rptun_ivshmem_probe: Start the wdog server> server> server> server> server> rpmsg ping all 1 1 1 1 [ 12.520000] [ 7] [ EMERG] [server] ping times: 1 [ 12.520200] [ 7] [ EMERG] [server] buffer_len: 1520, send_len: 17 [ 12.520700] [ 7] [ EMERG] [server] avg: 0 s, 16874432 ns [ 12.521000] [ 7] [ EMERG] [server] min: 0 s, 16874432 ns [ 12.521300] [ 7] [ EMERG] [server] max: 0 s, 16874432 ns [ 12.521500] [ 7] [ EMERG] [server] rate: 0.008059 Mbits/sec [ 12.524000] [ 7] [ EMERG] [server] ping times: 1 [ 12.524200] [ 7] [ EMERG] [server] buffer_len: 2008, send_len: 17 [ 12.524500] [ 7] [ EMERG] [server] avg: 0 s, 14785392 ns [ 12.524800] [ 7] [ EMERG] [server] min: 0 s, 14785392 ns [ 12.525100] [ 7] [ EMERG] [server] max: 0 s, 14785392 ns [ 12.525300] [ 7] [ EMERG] [server] rate: 0.009198 Mbits/sec server> server> ``` Proxy: ```c ❯ qemu-system-aarch64 -cpu cortex-a53 -nographic \ -machine virt,virtualization=on,gic-version=3 \ -chardev stdio,id=con,mux=on -serial chardev:con \ -object memory-backend-file,discard-data=on,id=shmmem-shmem0,mem-path=/dev/shm/my_shmem0,size=4194304,share=yes \ -device ivshmem-plain,id=shmem0,memdev=shmmem-shmem0,addr=0xb \ -device virtio-serial-device,bus=virtio-mmio-bus.0 \ -chardev socket,path=/tmp/rpmsg_port_uart_socket,server=off,id=foo \ -device virtconsole,chardev=foo \ -mon chardev=con,mode=readline -kernel ./cmake_out/v8a_proxy/nuttx \ -gdb tcp::7776 - Ready to Boot Primary CPU - Boot from EL2 - Boot from EL1 - Boot to C runtime for OS Initialize [ 0.000000] [ 0] [ INFO] [proxy] pci_register_rptun_ivshmem_driver: Register ivshmem driver, id=0, cpuname=server, master=0 [ 0.000000] [ 3] [ INFO] [proxy] pci_scan_bus: pci_scan_bus for bus 0 [ 0.000000] [ 3] [ INFO] [proxy] pci_scan_bus: class = 00000600, hdr_type = 00000000 [ 0.000000] [ 3] [ INFO] [proxy] pci_scan_bus: 00:00 [1b36:0008] [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar0 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar1 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar2 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar3 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar4 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar5 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_scan_bus: class = 00000200, hdr_type = 00000000 [ 0.000000] [ 3] [ INFO] [proxy] pci_scan_bus: 00:08 [1af4:1000] [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar0: mask64=fffffffe 32bytes [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar1: mask64=fffffff0 4096bytes [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar2 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar3 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar4: mask64=fffffffffffffff0 16384bytes [ 0.000000] [ 3] [ INFO] [proxy] pci_scan_bus: class = 00000500, hdr_type = 00000000 [ 0.000000] [ 3] [ INFO] [proxy] pci_scan_bus: 00:58 [1af4:1110] [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar0: mask64=fffffff0 256bytes [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar1 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar2: mask64=fffffffffffffff0 4194304bytes [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar4 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] pci_setup_device: pbar5 set bad mask [ 0.000000] [ 3] [ INFO] [proxy] ivshmem_probe: shmem addr=0x8000400000 size=4194304 reg=0x10001000 [ 0.000000] [ 3] [ INFO] [proxy] rptun_ivshmem_probe: shmem addr=0x8000400000 size=4194304 [ 0.000000] [ 3] [ INFO] [proxy] rptun_ivshmem_probe: Start the wdog NuttShell (NSH) NuttX-12.12.0 proxy> proxy> ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
