Lenoids opened a new pull request, #20135:
URL: https://github.com/apache/nuttx/pull/20135

   ## Summary
   
   `VPU_XCPTC_SIZE` equals `(CONFIG_ARCH_RV_VECTOR_BYTE_LENGTH * 32 + 
VPU_XCPT_SIZE)`, 
   which is expressed in bytes, but vregs is an array of `uintreg_t`.
   
   So, it should be divided it by `INT_REG_SIZE`.
   
   ## Impact
   
   The array occupied 4 times the required space on RV32 and 8 times on RV64.
   
   ## Testing
   
   ostest passed on QEMU 8.2.10.
   
   - Host: Ubuntu 20.04.6 LTS, x86_64
   - Toolchain: xPack RISC-V Embedded GCC 15.2.0
   - Board configuration: rv-virt:smp64
   - Emulator: QEMU 8.2.10
   
   Test results:
   
   ```
   NuttShell (NSH) NuttX-13.0.1-RC1
   nsh> uname -a
   NuttX 13.0.1-RC1 d478e8daaa Sep 14 2026 17:00:29 risc-v rv-virt
   nsh> ostest
   (...)
   End of test memory usage:
   VARIABLE  BEFORE   AFTER
   ======== ======== ========
   arena     1fcdb80  1fcdb80
   ordblks         8        9
   mxordblk  1fab5e8  1fab5e8
   uordblks     e110     e210
   fordblks  1fbfa70  1fbf970
   
   user_main: round-robin scheduler test
   rr_test: Set thread priority to 1
   rr_test: Set thread policy to SCHED_RR
   rr_test: Starting first get_primes_thread
            First get_primes_thread: 420
   rr_test: Starting second get_primes_thread
            Second get_primes_thread: 421
   rr_test: Waiting for threads to complete -- this should take awhile
            If RR scheduling is working, they should start and complete at
            about the same time
   get_primes_thread id=1 started, looking for primes < 30000, doing 10 run(s)
   get_primes_thread id=2 started, looking for primes < 30000, doing 10 run(s)
   get_primes_thread id=1 finished, found 3246 primes, last one was 29989
   get_primes_thread id=2 finished, found 3246 primes, last one was 29989
   rr_test: Done
   
   End of test memory usage:
   VARIABLE  BEFORE   AFTER
   ======== ======== ========
   arena     1fcdb80  1fcdb80
   ordblks         9        9
   mxordblk  1fab5e8  1fab5e8
   uordblks     e210     e210
   fordblks  1fbf970  1fbf970
   
   user_main: barrier test
   barrier_test: Initializing barrier
   barrier_test: Thread 0 created
   barrier_test: Thread 1 created
   barrier_test: Thread 2 created
   barrier_test: Thread 3 created
   barrier_test: Thread 4 created
   barrier_test: Thread 5 created
   barrier_test: Thread 6 created
   barrier_test: Thread 7 created
   barrier_func: Thread 0 started
   barrier_func: Thread 1 started
   barrier_func: Thread 2 started
   barrier_func: Thread 3 started
   barrier_func: Thread 4 started
   barrier_func: Thread 5 started
   barrier_func: Thread 6 started
   barrier_func: Thread 7 started
   barrier_func: Thread 0 calling pthread_barrier_wait()
   barrier_func: Thread 1 calling pthread_barrier_wait()
   barrier_func: Thread 2 calling pthread_barrier_wait()
   barrier_func: Thread 3 calling pthread_barrier_wait()
   barrier_func: Thread 4 calling pthread_barrier_wait()
   barrier_func: Thread 5 calling pthread_barrier_wait()
   barrier_func: Thread 6 calling pthread_barrier_wait()
   barrier_func: Thread 7 calling pthread_barrier_wait()
   barrier_func: Thread 7, back with status=PTHREAD_BARRIER_SERIAL_THREAD (I AM 
SPECIAL)
   barrier_func: Thread 0, back with status=0 (I am not special)
   barrier_func: Thread 1, back with status=0 (I am not special)
   barrier_func: Thread 2, back with status=0 (I am not special)
   barrier_func: Thread 3, back with status=0 (I am not special)
   barrier_func: Thread 4, back with status=0 (I am not special)
   barrier_func: Thread 5, back with status=0 (I am not special)
   barrier_func: Thread 6, back with status=0 (I am not special)
   barrier_func: Thread 7 done
   barrier_func: Thread 0 done
   barrier_test: Thread 0 completed with result=0
   barrier_func: Thread 1 done
   barrier_func: Thread 2 done
   barrier_test: Thread 1 completed with result=0
   barrier_test: Thread 2 completed with result=0
   barrier_func: Thread 3 done
   barrier_func: Thread 4 done
   barrier_test: Thread 3 completed with result=0
   barrier_test: Thread 4 completed with result=0
   barrier_func: Thread 5 done
   barrier_func: Thread 6 done
   barrier_test: Thread 5 completed with result=0
   barrier_test: Thread 6 completed with result=0
   barrier_test: Thread 7 completed with result=0
   
   End of test memory usage:
   VARIABLE  BEFORE   AFTER
   ======== ======== ========
   arena     1fcdb80  1fcdb80
   ordblks         9        9
   mxordblk  1fab5e8  1fab5e8
   uordblks     e210     e210
   fordblks  1fbf970  1fbf970
   
   user_main: scheduler lock test
   sched_lock: Starting lowpri_thread at 97
   sched_lock: Set lowpri_thread priority to 97
   sched_lock: Starting highpri_thread at 98
   sched_lock: Set highpri_thread priority to 98
   sched_lock: Waiting...
   sched_lock: PASSED No pre-emption occurred while scheduler was locked.
   sched_lock: Starting lowpri_thread at 97
   sched_lock: Set lowpri_thread priority to 97
   sched_lock: Starting highpri_thread at 98
   sched_lock: Set highpri_thread priority to 98
   sched_lock: Waiting...
   sched_lock: PASSED No pre-emption occurred while scheduler was locked.
   sched_lock: Finished
   
   End of test memory usage:
   VARIABLE  BEFORE   AFTER
   ======== ======== ========
   arena     1fcdb80  1fcdb80
   ordblks         9        9
   mxordblk  1fab5e8  1fab5e8
   uordblks     e210     e210
   fordblks  1fbf970  1fbf970
   
   user_main: smp call test
   smp_call_test: Test start
   smp_call_test: Call cpu 0, nowait
   smp_call_test: Call cpu 0, wait
   smp_call_test: Call cpu 1, nowait
   smp_call_test: Call cpu 1, wait
   smp_call_test: Call cpu 2, nowait
   smp_call_test: Call cpu 2, wait
   smp_call_test: Call cpu 3, nowait
   smp_call_test: Call cpu 3, wait
   smp_call_test: Call cpu 4, nowait
   smp_call_test: Call cpu 4, wait
   smp_call_test: Call cpu 5, nowait
   smp_call_test: Call cpu 5, wait
   smp_call_test: Call cpu 6, nowait
   smp_call_test: Call cpu 6, wait
   smp_call_test: Call cpu 7, nowait
   smp_call_test: Call cpu 7, wait
   smp_call_test: Call multi cpu, nowait
   smp_call_test: Call in interrupt, wait
   smp_call_test: Call multi cpu, wait
   smp_call_test: Test success
   
   Final memory usage:
   VARIABLE  BEFORE   AFTER
   ======== ======== ========
   arena     1fcdb80  1fcdb80
   ordblks         2        9
   mxordblk  1fc80d8  1fab5e8
   uordblks     5a28     e210
   fordblks  1fc8158  1fbf970
   user_main: Exiting
   ostest_main: Exiting with status 0
   ```
   


-- 
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]

Reply via email to