+1 from me
The release was tested on Sony Spresense board

In this case I will close the vote and document the issue regarding Ox64.


Thanks for testing and voting the release

//Alin

On Sat, Jan 13, 2024 at 3:10 AM Tomek CEDRO <to...@cedro.info> wrote:

> On Wed, Jan 10, 2024 at 12:10 PM Alin Jerpelea wrote:
> > Hello all,
> > Apache NuttX 12.4.0 RC0 has been staged under [1] and it's
> > time to vote on accepting it for release. Voting will be open for 72hr.
>
> Hello beautiful world :-)
>
> +1 here with details below :-)
>
> ALL THE BEST IN NEW YEAR! :-)
>
> Tomek
>
>
> HOST:
> FreeBSD octagon 13.2-RELEASE-p8 FreeBSD 13.2-RELEASE-p8 GENERIC amd64
>
> TARGETS:
> 1. ESP32.
> 2. ESP32-C3.
> 3. ESP32-S2.
> 4. ESP32-S3.
> 5.SIM.
>
>
> === ESP32 ===
>
> % xtensa-esp32-elf-cc --version
> xtensa-esp32-elf-cc (crosstool-NG esp-2021r2-patch5) 8.4.0
> Copyright (C) 2018 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.  There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>
> % /usr/bin/time -h ./tools/configure.sh -B esp32-devkitc:nsh
>         3,31s real              1,70s user              1,66s sys
>
> % /usr/bin/time -h gmake -j8
>         19,15s real             58,86s user             44,09s sys
>
> % /usr/bin/time -h gmake flash
>         11,48s real             2,02s user              1,40s sys
>
> % cu -l /dev/cuaU0 -s 115200
> Connected
> rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
> configsip: 0, SPIWP:0xee
> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
> mode:DIO, clock div:2
> load:0x3fff0030,len:4540
> ho 0 tail 12 room 4
> load:0x40078000,len:12344
> ho 0 tail 12 room 4
> load:0x40080400,len:4124
> entry 0x40080680
>
> NuttShell (NSH) NuttX-12.4.0
> nsh> uname -a
> NuttX 12.4.0 96c2707737 Jan 13 2024 01:24:16 xtensa esp32-devkitc
> nsh> help
> help usage:  help [-v] [<cmd>]
>
>     .           cp          exit        mkrd        set         unset
>     [           cmp         false       mount       sleep       uptime
>     ?           dirname     fdinfo      mv          source      usleep
>     alias       dd          free        pidof       test        xd
>     unalias     df          help        printf      time
>     basename    dmesg       hexdump     ps          true
>     break       echo        kill        pwd         truncate
>     cat         env         ls          rm          uname
>     cd          exec        mkdir       rmdir       umount
>
> Builtin Apps:
>     nsh    sh
>
>
> % /usr/bin/time -h gmake clean distclean
>         8,53s real              4,27s user              4,37s sys
>
> % /usr/bin/time -h ./tools/configure.sh -B esp32-devkitc:coremark
>         3,30s real              1,59s user              1,75s sys
>
> % /usr/bin/time -h gmake -j8
>         19,31s real             1m0,84s user            42,71s sys
>
> % /usr/bin/time -h gmake flash
>         10,48s real             1,63s user              1,05s sys
>
> % cu -l /dev/cuaU0 -s 115200
> Connected
> rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
> configsip: 0, SPIWP:0xee
> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
> mode:DIO, clock div:2
> load:0x3fff0030,len:4540
> ho 0 tail 12 room 4
> load:0x40078000,len:12344
> ho 0 tail 12 room 4
> load:0x40080400,len:4124
> entry 0x40080680
> Running CoreMark...
> 2K performance run parameters for coremark.
> CoreMark Size    : 666
> Total ticks      : 1218
> Total time (secs): 12.180000
> Iterations/Sec   : 985.221675
> Iterations       : 12000
> Compiler version : GCC8.4.0
> Compiler flags   : -O3 -fno-strict-aliasing -fomit-frame-pointer
> -ffunction-sections -fdata-sections
> Parallel PThreads : 2
> Memory location  : HEAP
> seedcrc          : 0xe9f5
> [0]crclist       : 0xe714
> [1]crclist       : 0xe714
> [0]crcmatrix     : 0x1fd7
> [1]crcmatrix     : 0x1fd7
> [0]crcstate      : 0x8e3a
> [1]crcstate      : 0x8e3a
> [0]crcfinal      : 0xa14c
> [1]crcfinal      : 0xa14c
> Correct operation validated. See README.md for run and reporting rules.
> CoreMark 1.0 : 985.221675 / GCC8.4.0 -O3 -fno-strict-aliasing
> -fomit-frame-pointer -ffunction-sections -fdata-sections / HEAP /
> 2:PThreads
>
> % /usr/bin/time -h gmake clean distclean
>         8,21s real              3,83s user              4,48s sys
>
> % /usr/bin/time -h ./tools/configure.sh -B esp32-devkitc:ostest
>         3,34s real              1,66s user              1,71s sys
>
> % /usr/bin/time -h gmake -j8
>         20,00s real             1m2,34s user            45,68s sys
>
> % /usr/bin/time -h gmake flash
>         14,20s real             2,24s user              1,49s sys
>
> % cu -l /dev/cuaU0 -s 115200
> Connected
> rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
> configsip: 0, SPIWP:0xee
> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
> mode:DIO, clock div:2
> load:0x3fff0030,len:4540
> ho 0 tail 12 room 4
> load:0x40078000,len:12344
> ho 0 tail 12 room 4
> load:0x40080400,len:4124
> entry 0x40080680
>
> NuttShell (NSH) NuttX-12.4.0
> nsh> help
> help usage:  help [-v] [<cmd>]
>
>     .           cp          exit        mkrd        set         unset
>     [           cmp         false       mount       sleep       uptime
>     ?           dirname     fdinfo      mv          source      usleep
>     alias       dd          free        pidof       test        xd
>     unalias     df          help        printf      time
>     basename    dmesg       hexdump     ps          true
>     break       echo        kill        pwd         truncate
>     cat         env         ls          rm          uname
>     cd          exec        mkdir       rmdir       umount
>
> Builtin Apps:
>     nsh       ostest    sh
> nsh> ostest
> stdio_test: write fd=1
> stdio_test: Standard I/O Check: printf
> stdio_test: write fd=2
> stdio_test: Standard I/O Check: fprintf to stderr
> ostest_main: putenv(Variable1=BadValue3)
> ostest_main: setenv(Variable1, GoodValue1, TRUE)
> ostest_main: setenv(Variable2, BadValue1, FALSE)
> ostest_main: setenv(Variable2, GoodValue2, TRUE)
> ostest_main: setenv(Variable3, GoodValue3, FALSE)
> ostest_main: setenv(Variable3, BadValue2, FALSE)
> show_variable: Variable=Variable1 has value=GoodValue1
> show_variable: Variable=Variable2 has value=GoodValue2
> show_variable: Variable=Variable3 has value=GoodValue3
> ostest_main: Started user_main at PID=3
>
> user_main: Begin argument test
> user_main: Started with argc=5
> user_main: argv[0]="ostest"
> user_main: argv[1]="Arg1"
> user_main: argv[2]="Arg2"
> user_main: argv[3]="Arg3"
> user_main: argv[4]="Arg4"
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         3        3
> mxordblk    2d418    2d418
> uordblks     4c38     4c38
> fordblks    4a7c0    4a7c0
>
> user_main: getopt() test
> getopt():  Simple test
> getopt():  Invalid argument
> getopt():  Missing optional argument
> getopt_long():  Simple test
> getopt_long():  No short options
> getopt_long():  Argument for --option=argument
> getopt_long():  Invalid long option
> getopt_long():  Mixed long and short options
> getopt_long():  Invalid short option
> getopt_long():  Missing optional arguments
> getopt_long_only():  Mixed long and short options
> getopt_long_only():  Single hyphen long options
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         3        3
> mxordblk    2d418    2d418
> uordblks     4c38     4c38
> fordblks    4a7c0    4a7c0
> show_variable: Variable=Variable1 has value=GoodValue1
> show_variable: Variable=Variable2 has value=GoodValue2
> show_variable: Variable=Variable3 has value=GoodValue3
> show_variable: Variable=Variable1 has no value
> show_variable: Variable=Variable2 has value=GoodValue2
> show_variable: Variable=Variable3 has value=GoodValue3
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         3        4
> mxordblk    2d418    2d418
> uordblks     4c38     4c18
> fordblks    4a7c0    4a7e0
> show_variable: Variable=Variable1 has no value
> show_variable: Variable=Variable2 has no value
> show_variable: Variable=Variable3 has no value
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         4        5
> mxordblk    2d418    2d418
> uordblks     4c18     4bb0
> fordblks    4a7e0    4a848
>
> user_main: setvbuf test
> setvbuf_test: Test NO buffering
> setvbuf_test: Using NO buffering
> setvbuf_test: Test default FULL buffering
> setvbuf_test: Using default FULL buffering
> setvbuf_test: Test FULL buffering, buffer size 64
> setvbuf_test: Using FULL buffering, buffer size 64
> setvbuf_test: Test FULL buffering, pre-allocated buffer
> setvbuf_test: Using FULL buffering, pre-allocated buffer
> setvbuf_test: Test LINE buffering, buffer size 64
> setvbuf_test: Using LINE buffering, buffer size 64
> setvbuf_test: Test FULL buffering, pre-allocated buffer
> setvbuf_test: Using FULL buffering, pre-allocated buffer
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         5        5
> mxordblk    2d418    2d418
> uordblks     4bb0     4bb0
> fordblks    4a848    4a848
>
> user_main: /dev/null test
> dev_null: Read 0 bytes from /dev/null
> dev_null: Wrote 1024 bytes to /dev/null
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         5        5
> mxordblk    2d418    2d418
> uordblks     4bb0     4bb0
> fordblks    4a848    4a848
>
> user_main: FPU test
> Starting task FPU#1
> fpu_test: Started task FPU#1 at PID=4
> FPU#1: pass 1
> Starting task FPU#2
> fpu_test: Started task FPU#2 at PID=5
> FPU#2: pass 1
> FPU#1: pass 2
> FPU#2: pass 2
> FPU#1: pass 3
> FPU#2: pass 3
> FPU#1: pass 4
> FPU#2: pass 4
> FPU#1: pass 5
> FPU#2: pass 5
> FPU#1: pass 6
> FPU#2: pass 6
> FPU#1: pass 7
> FPU#2: pass 7
> FPU#1: pass 8
> FPU#2: pass 8
> FPU#1: pass 9
> FPU#2: pass 9
> FPU#1: pass 10
> FPU#2: pass 10
> FPU#1: pass 11
> FPU#2: pass 11
> FPU#1: pass 12
> FPU#2: pass 12
> FPU#1: pass 13
> FPU#2: pass 13
> FPU#1: pass 14
> FPU#2: pass 14
> FPU#1: pass 15
> FPU#2: pass 15
> FPU#1: pass 16
> FPU#2: pass 16
> FPU#1: Succeeded
> FPU#2: Succeeded
> fpu_test: Returning
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         5        8
> mxordblk    2d418    2d418
> uordblks     4bb0     5d20
> fordblks    4a848    496d8
>
> user_main: task_restart test
>
> Test task_restart()
> restart_main: setenv(VarName, VarValue, TRUE)
> restart_main: Started restart_main at PID=6
> restart_main: Started with argc=4
> restart_main: argv[0]="ostest"
> restart_main: argv[1]="This is argument 1"
> restart_main: argv[2]="Argument 2 here"
> restart_main: argv[3]="Lastly, the 3rd argument"
> restart_main: Variable=VarName has value=VarValue
> restart_main: I am still here
> restart_main: I am still here
> restart_main: Started restart_main at PID=6
> restart_main: Started with argc=4
> restart_main: argv[0]="ostest"
> restart_main: argv[1]="This is argument 1"
> restart_main: argv[2]="Argument 2 here"
> restart_main: argv[3]="Lastly, the 3rd argument"
> restart_main: Variable=VarName has value=VarValue
> restart_main: Started with argc=4
> restart_main: argv[0]="ostest"
> restart_main: argv[1]="This is argument 1"
> restart_main: argv[2]="Argument 2 here"
> restart_main: argv[3]="Lastly, the 3rd argument"
> restart_main: Variable=VarName has value=VarValue
> restart_main: Exiting
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         8        5
> mxordblk    2d418    2d418
> uordblks     5d20     6c98
> fordblks    496d8    48760
>
> user_main: waitpid test
>
> Test waitpid()
> waitpid_start_child: Started waitpid_main at PID=7
> waitpid_main: PID 7 Started
> waitpid_start_child: Started waitpid_main at PID=12
> waitpid_main: PID 12 Started
> waitpid_start_child: Started waitpid_main at PID=13
> waitpid_main: PID 13 Started
> waitpid_test: Waiting for PID=7 with waitpid()
> waitpid_main: PID 7 exitting with result=14
> waitpid_test: PID 7 waitpid succeeded with stat_loc=0e00
> waitpid_last: Waiting for PID=13 with waitpid()
> waitpid_main: PID 12 exitting with result=14
> waitpid_main: PID 13 exitting with result=14
> waitpid_last: PASS: PID 13 waitpid succeeded with stat_loc=0e00
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         5        7
> mxordblk    2d418    2d418
> uordblks     6c98     adf8
> fordblks    48760    44600
>
> user_main: mutex test
> Initializing mutex
> Starting thread 1
> Starting thread 2
>                 Thread1 Thread2
>         Loops   32      32
>         Errors  0       0
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         7        5
> mxordblk    2d418    2d418
> uordblks     adf8     54a8
> fordblks    44600    49f50
>
> user_main: timed mutex test
> mutex_test: Initializing mutex
> mutex_test: Starting thread
> pthread:  Started
> pthread:  Waiting for lock or timeout
> mutex_test: Unlocking
> pthread:  Got the lock
> pthread:  Waiting for lock or timeout
> pthread:  Got the timeout.  Terminating
> mutex_test: PASSED
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         5        4
> mxordblk    2d418    2d418
> uordblks     54a8     54a8
> fordblks    49f50    49f50
>
> user_main: cancel test
> cancel_test: Test 1a: Normal Cancellation
> cancel_test: Starting thread
> start_thread: Initializing mutex
> start_thread: Initializing cond
> start_thread: Starting thread
> start_thread: Yielding
> sem_waiter: Taking mutex
> sem_waiter: Starting wait for condition
> cancel_test: Canceling thread
> cancel_test: Joining
> cancel_test: waiter exited with result=0xffffffff
> cancel_test: PASS thread terminated with PTHREAD_CANCELED
> cancel_test: Test 2: Asynchronous Cancellation
> ... Skipped
> cancel_test: Test 3: Cancellation of detached thread
> cancel_test: Re-starting thread
> restart_thread: Destroying cond
> restart_thread: Destroying mutex
> restart_thread: Re-starting thread
> start_thread: Initializing mutex
> start_thread: Initializing cond
> start_thread: Starting thread
> start_thread: Yielding
> sem_waiter: Taking mutex
> sem_waiter: Starting wait for condition
> cancel_test: Canceling thread
> cancel_test: Joining
> cancel_test: PASS pthread_join failed with status=ESRCH
> cancel_test: Test 5: Non-cancelable threads
> cancel_test: Re-starting thread (non-cancelable)
> restart_thread: Destroying cond
> restart_thread: Destroying mutex
> restart_thread: Re-starting thread
> start_thread: Initializing mutex
> start_thread: Initializing cond
> start_thread: Starting thread
> start_thread: Yielding
> sem_waiter: Taking mutex
> sem_waiter: Starting wait for condition
> sem_waiter: Setting non-cancelable
> cancel_test: Canceling thread
> cancel_test: Joining
> sem_waiter: Releasing mutex
> sem_waiter: Setting cancelable
> cancel_test: waiter exited with result=0xffffffff
> cancel_test: PASS thread terminated with PTHREAD_CANCELED
> cancel_test: Test 6: Cancel message queue wait
> cancel_test: Starting thread (cancelable)
> Skipped
> cancel_test: Test 7: Cancel signal wait
> cancel_test: Starting thread (cancelable)
> Skipped
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         4        4
> mxordblk    2d418    2d418
> uordblks     54a8     6ca8
> fordblks    49f50    48750
>
> user_main: robust test
> robust_test: Initializing mutex
> robust_test: Starting thread
> robust_waiter: Taking mutex
> robust_waiter: Exiting with mutex
> robust_test: Take the lock again
> robust_test: Make the mutex consistent again.
> robust_test: Take the lock again
> robust_test: Joining
> robust_test: waiter exited with result=0
> robust_test: Test complete with nerrors=0
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         4        4
> mxordblk    2d418    2d418
> uordblks     6ca8     6ca8
> fordblks    48750    48750
>
> user_main: semaphore test
> sem_test: Initializing semaphore to 0
> sem_test: Starting waiter thread 1
> sem_test: Set thread 1 priority to 191
> waiter_func: Thread 1 Started
> waiter_func: Thread 1 initial semaphore value = 0
> sem_test: Starting waiter thread 2
> waiter_func: Thread 1 waiting on semaphore
> sem_test: Set thread 2 priority to 128
> waiter_func: Thread 2 Started
> waiter_func: Thread 2 initial semaphore value = -1
> waiter_func: Thread 2 waiting on semaphore
> sem_test: Starting poster thread 3
> sem_test: Set thread 3 priority to 64
> poster_func: Thread 3 started
> poster_func: Thread 3 semaphore value = -2
> poster_func: Thread 3 posting semaphore
> waiter_func: Thread 1 awakened
> waiter_func: Thread 1 new semaphore value = -1
> waiter_func: Thread 1 done
> poster_func: Thread 3 new semaphore value = -1
> poster_func: Thread 3 semaphore value = -1
> poster_func: Thread 3 posting semaphore
> waiter_func: Thread 2 awakened
> waiter_func: Thread 2 new semaphore value = 0
> poster_func: Thread 3 new semaphore value = 0
> waiter_func: Thread 2 done
> poster_func: Thread 3 done
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         4        5
> mxordblk    2d418    2d418
> uordblks     6ca8     54a8
> fordblks    48750    49f50
>
> user_main: timed semaphore test
> semtimed_test: Initializing semaphore to 0
> semtimed_test: Waiting for two second timeout
> semtimed_test: PASS: first test returned timeout
> BEFORE: (56 sec, 830000000 nsec)
> AFTER:  (58 sec, 840000000 nsec)
> semtimed_test: Starting poster thread
> semtimed_test: Set thread 1 priority to 191
> semtimed_test: Starting poster thread 3
> semtimed_test: Set thread 3 priority to 64
> semtimed_test: Waiting for two second timeout
> poster_func: Waiting for 1 second
> poster_func: Posting
> semtimed_test: PASS: sem_timedwait succeeded
> BEFORE: (58 sec, 840000000 nsec)
> AFTER:  (59 sec, 850000000 nsec)
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         5        4
> mxordblk    2d418    2d418
> uordblks     54a8     54a8
> fordblks    49f50    49f50
>
> user_main: condition variable test
> cond_test: Initializing mutex
> cond_test: Initializing cond
> cond_test: Starting waiter
> cond_test: Set thread 1 priority to 128
> waiter_thread: Started
> cond_test: Starting signaler
> cond_test: Set thread 2 priority to 64
> thread_signaler: Started
> thread_signaler: Terminating
> cond_test: signaler terminated, now cancel the waiter
> cond_test:      Waiter  Signaler
> cond_test: Loops        32      32
> cond_test: Errors       0       0
> cond_test:
> cond_test: 0 times, waiter did not have to wait for data
> cond_test: 0 times, data was already available when the signaler run
> cond_test: 0 times, the waiter was in an unexpected state when the
> signaler ran
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         4        5
> mxordblk    2d418    2d418
> uordblks     54a8     54a8
> fordblks    49f50    49f50
>
> user_main: pthread_exit() test
> pthread_exit_test: Started pthread_exit_main at PID=39
> pthread_exit_main 39: Starting pthread_exit_thread
> pthread_exit_main 39: Sleeping for 5 seconds
> pthread_exit_thread 44: Sleeping for 10 second
> pthread_exit_main 39: Calling pthread_exit()
> pthread_exit_thread 44: Still running...
> pthread_exit_thread 44: Exiting
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         5        5
> mxordblk    2d418    2d418
> uordblks     54a8     54a8
> fordblks    49f50    49f50
>
> user_main: pthread_rwlock test
> pthread_rwlock: Initializing rwlock
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         5        5
> mxordblk    2d418    2d418
> uordblks     54a8     54a8
> fordblks    49f50    49f50
>
> user_main: pthread_rwlock_cancel test
> pthread_rwlock_cancel: Starting test
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         5        4
> mxordblk    2d418    2d418
> uordblks     54a8     4be8
> fordblks    49f50    4a810
>
> user_main: timed wait test
> thread_waiter: Initializing mutex
> timedwait_test: Initializing cond
> timedwait_test: Starting waiter
> timedwait_test: Set thread 2 priority to 177
> thread_waiter: Taking mutex
> timedwait_test: Joining
> thread_waiter: Starting 5 second wait for condition
> thread_waiter: pthread_cond_timedwait timed out
> thread_waiter: Releasing mutex
> thread_waiter: Exit with status 0x12345678
> timedwait_test: waiter exited with result=0x12345678
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         4        4
> mxordblk    2d418    2d418
> uordblks     4be8     54a8
> fordblks    4a810    49f50
>
> user_main: message queue test
> mqueue_test: Starting receiver
> mqueue_test: Set receiver priority to 128
> receiver_thread: Starting
> mqueue_test: Starting sender
> mqueue_test: Set sender thread priority to 64
> mqueue_test: Waiting for sender to complete
> sender_thread: Starting
> receiver_thread: mq_receive succeeded on msg 0
> sender_thread: mq_send succeeded on msg 0
> receiver_thread: mq_receive succeeded on msg 1
> sender_thread: mq_send succeeded on msg 1
> receiver_thread: mq_receive succeeded on msg 2
> sender_thread: mq_send succeeded on msg 2
> receiver_thread: mq_receive succeeded on msg 3
> sender_thread: mq_send succeeded on msg 3
> receiver_thread: mq_receive succeeded on msg 4
> sender_thread: mq_send succeeded on msg 4
> receiver_thread: mq_receive succeeded on msg 5
> sender_thread: mq_send succeeded on msg 5
> receiver_thread: mq_receive succeeded on msg 6
> sender_thread: mq_send succeeded on msg 6
> receiver_thread: mq_receive succeeded on msg 7
> sender_thread: mq_send succeeded on msg 7
> receiver_thread: mq_receive succeeded on msg 8
> sender_thread: mq_send succeeded on msg 8
> receiver_thread: mq_receive succeeded on msg 9
> sender_thread: mq_send succeeded on msg 9
> sender_thread: returning nerrors=0
> mqueue_test: Killing receiver
> receiver_thread: mq_receive interrupted!
> receiver_thread: returning nerrors=0
> mqueue_test: Canceling receiver
> mqueue_test: receiver has already terminated
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         4        4
> mxordblk    2d418    2d418
> uordblks     54a8     6d00
> fordblks    49f50    486f8
>
> user_main: timed message queue test
> timedmqueue_test: Starting sender
> timedmqueue_test: Waiting for sender to complete
> sender_thread: Starting
> sender_thread: mq_timedsend succeeded on msg 0
> sender_thread: mq_timedsend succeeded on msg 1
> sender_thread: mq_timedsend succeeded on msg 2
> sender_thread: mq_timedsend succeeded on msg 3
> sender_thread: mq_timedsend succeeded on msg 4
> sender_thread: mq_timedsend succeeded on msg 5
> sender_thread: mq_timedsend succeeded on msg 6
> sender_thread: mq_timedsend succeeded on msg 7
> sender_thread: mq_timedsend succeeded on msg 8
> sender_thread: mq_timedsend 9 timed out as expected
> sender_thread: returning nerrors=0
> timedmqueue_test: Starting receiver
> timedmqueue_test: Waiting for receiver to complete
> receiver_thread: Starting
> receiver_thread: mq_timedreceive succeed on msg 0
> receiver_thread: mq_timedreceive succeed on msg 1
> receiver_thread: mq_timedreceive succeed on msg 2
> receiver_thread: mq_timedreceive succeed on msg 3
> receiver_thread: mq_timedreceive succeed on msg 4
> receiver_thread: mq_timedreceive succeed on msg 5
> receiver_thread: mq_timedreceive succeed on msg 6
> receiver_thread: mq_timedreceive succeed on msg 7
> receiver_thread: mq_timedreceive succeed on msg 8
> receiver_thread: Receive 9 timed out as expected
> receiver_thread: returning nerrors=0
> timedmqueue_test: Test complete
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         4        5
> mxordblk    2d418    2d418
> uordblks     6d00     6d30
> fordblks    486f8    486c8
>
> user_main: sigprocmask test
> sigprocmask_test: SUCCESS
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         5        5
> mxordblk    2d418    2d418
> uordblks     6d30     6d30
> fordblks    486c8    486c8
>
> user_main: signal handler test
> sighand_test: Initializing semaphore to 0
> sighand_test: Starting waiter task
> sighand_test: Started waiter_main pid=68
> waiter_main: Waiter started
> waiter_main: Unmasking signal 32
> waiter_main: Registering signal handler
> waiter_main: oact.sigaction=0 oact.sa_flags=0 oact.sa_mask=0000000000000000
> waiter_main: Waiting on semaphore
> sighand_test: Signaling pid=68 with signo=32 sigvalue=42
> waiter_main: sem_wait() successfully interrupted by signal
> waiter_main: done
> sighand_test: done
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         5        7
> mxordblk    2d418    2d418
> uordblks     6d30     6d98
> fordblks    486c8    48660
>
> user_main: nested signal handler test
> signest_test: Starting signal waiter task at priority 101
> waiter_main: Waiter started
> waiter_main: Setting signal mask
> waiter_main: Registering signal handler
> signest_test: Started waiter_main pid=69
> waiter_main: Waiting on semaphore
> signest_test: Starting interfering task at priority 102
> interfere_main: Waiting on semaphore
> signest_test: Started interfere_main pid=70
> signest_test: Simple case:
>   Total signalled 1240  Odd=620 Even=620
>   Total handled   1240  Odd=620 Even=620
>   Total nested    0    Odd=0   Even=0
> signest_test: With task locking
>   Total signalled 2480  Odd=1240 Even=1240
>   Total handled   2480  Odd=1240 Even=1240
>   Total nested    0    Odd=0   Even=0
> signest_test: With intefering thread
>   Total signalled 3720  Odd=1860 Even=1860
>   Total handled   3720  Odd=1860 Even=1860
>   Total nested    0    Odd=0   Even=0
> signest_test: done
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         7        7
> mxordblk    2d418    2d418
> uordblks     6d98     9550
> fordblks    48660    45ea8
>
> user_main: POSIX timer test
> timer_test: Initializing semaphore to 0
> timer_test: Unmasking signal 32
> timer_test: Registering signal handler
> timer_test: oact.sigaction=0 oact.sa_flags=0 oact.sa_mask=0000000000000000
> timer_test: Creating timer
> timer_test: Starting timer
> timer_test: Waiting on semaphore
> timer_expiration: Received signal 32
> timer_expiration: sival_int=42
> timer_expiration: si_code=2 (SI_TIMER)
> timer_expiration: ucontext=0
> timer_test: sem_wait() successfully interrupted by signal
> timer_test: g_nsigreceived=1
> timer_test: Waiting on semaphore
> timer_expiration: Received signal 32
> timer_expiration: sival_int=42
> timer_expiration: si_code=2 (SI_TIMER)
> timer_expiration: ucontext=0
> timer_test: sem_wait() successfully interrupted by signal
> timer_test: g_nsigreceived=2
> timer_test: Waiting on semaphore
> timer_expiration: Received signal 32
> timer_expiration: sival_int=42
> timer_expiration: si_code=2 (SI_TIMER)
> timer_expiration: ucontext=0
> timer_test: sem_wait() successfully interrupted by signal
> timer_test: g_nsigreceived=3
> timer_test: Waiting on semaphore
> timer_expiration: Received signal 32
> timer_expiration: sival_int=42
> timer_expiration: si_code=2 (SI_TIMER)
> timer_expiration: ucontext=0
> timer_test: sem_wait() successfully interrupted by signal
> timer_test: g_nsigreceived=4
> timer_test: Waiting on semaphore
> timer_expiration: Received signal 32
> timer_expiration: sival_int=42
> timer_expiration: si_code=2 (SI_TIMER)
> timer_expiration: ucontext=0
> timer_test: sem_wait() successfully interrupted by signal
> timer_test: g_nsigreceived=5
> timer_test: Deleting timer
> timer_test: done
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         7        7
> mxordblk    2d418    2d418
> uordblks     9550     9550
> fordblks    45ea8    45ea8
>
> 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: 71
> rr_test: Starting second get_primes_thread
>          Second get_primes_thread: 76
> 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 < 10000, doing 10 run(s)
> get_primes_thread id=2 started, looking for primes < 10000, doing 10 run(s)
> get_primes_thread id=1 finished, found 1230 primes, last one was 9973
> get_primes_thread id=2 finished, found 1230 primes, last one was 9973
> rr_test: Done
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         7        7
> mxordblk    2d418    2d418
> uordblks     9550     6570
> fordblks    45ea8    48e88
>
> 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_func: Thread 0 started
> barrier_func: Thread 1 started
> barrier_func: Thread 2 started
> barrier_func: Thread 3 started
> barrier_test: Thread 4 created
> barrier_func: Thread 4 started
> barrier_test: Thread 5 created
> barrier_func: Thread 5 started
> barrier_test: Thread 6 created
> barrier_func: Thread 6 started
> barrier_test: Thread 7 created
> 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_func: Thread 1 done
> barrier_func: Thread 2 done
> barrier_test: Thread 0 completed with result=0
> 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       4f3f8    4f3f8
> ordblks         7       12
> mxordblk    2d418    2d418
> uordblks     6570     5cf8
> fordblks    48e88    49700
>
> user_main: setjmp test
> setjmp_test: Initializing jmp_buf
> setjmp_test: Try jump
> setjmp_test: Jump succeed
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks        12       12
> mxordblk    2d418    2d418
> uordblks     5cf8     5cf8
> fordblks    49700    49700
>
> 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       4f3f8    4f3f8
> ordblks        12       10
> mxordblk    2d418    2d418
> uordblks     5cf8     5cf8
> fordblks    49700    49700
>
> Final memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4f3f8    4f3f8
> ordblks         3       10
> mxordblk    2d418    2d418
> uordblks     4c38     5cf8
> fordblks    4a7c0    49700
> user_main: Exiting
> ostest_main: Exiting with status 0
> nsh>
>
> % /usr/bin/time -h gmake clean distclean
>         8,77s real              4,09s user              4,76s sys
>
>
> === ESP32-S2 ===
>
> % riscv32-esp-elf-gcc -v
> Using built-in specs.
> COLLECT_GCC=riscv32-esp-elf-gcc
>
> COLLECT_LTO_WRAPPER=/usr/home/cederom/.espressif/tools/riscv32-esp-elf/esp-2021r2-patch5-8.4.0/riscv32-esp-elf/bin/../libexec/gcc/riscv32-esp-elf/8.4.0/lto-wrapper
> Target: riscv32-esp-elf
> Configured with:
> /builds/idf/crosstool-NG/.build/riscv32-esp-elf/src/gcc/configure
> --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu
> --target=riscv32-esp-elf
> --prefix=/builds/idf/crosstool-NG/builds/riscv32-esp-elf
> --exec_prefix=/builds/idf/crosstool-NG/builds/riscv32-esp-elf
>
> --with-local-prefix=/builds/idf/crosstool-NG/builds/riscv32-esp-elf/riscv32-esp-elf
>
> --with-headers=/builds/idf/crosstool-NG/builds/riscv32-esp-elf/riscv32-esp-elf/include
> --with-newlib --enable-threads=no --disable-shared --with-arch=rv32gc
> --with-abi=ilp32 --with-pkgversion='crosstool-NG esp-2021r2-patch5'
> --disable-__cxa_atexit --enable-cxx-flags=-ffunction-sections
> --disable-libgomp --disable-libmudflap --disable-libmpx
> --disable-libssp --disable-libquadmath --disable-libquadmath-support
> --disable-libstdcxx-verbose
> --with-gmp=/builds/idf/crosstool-NG/.build/riscv32-esp-elf/buildtools
> --with-mpfr=/builds/idf/crosstool-NG/.build/riscv32-esp-elf/buildtools
> --with-mpc=/builds/idf/crosstool-NG/.build/riscv32-esp-elf/buildtools
> --with-isl=/builds/idf/crosstool-NG/.build/riscv32-esp-elf/buildtools
> --enable-lto --enable-target-optspace --without-long-double-128
> --disable-nls --enable-multiarch --enable-languages=c,c++
> --disable-libstdcxx-verbose --enable-threads=posix
> --enable-gcov-custom-rtio --enable-libstdcxx-time=yes
> Thread model: posix
> gcc version 8.4.0 (crosstool-NG esp-2021r2-patch5)
>
> % /usr/bin/time -h ./tools/configure.sh -B esp32c3-devkit:nsh
>         3,31s real              1,83s user              1,53s sys
>
> % /usr/bin/time -h gmake -j8 CROSSDEV=riscv32-esp-elf-
> /usr/local/bin/bash: line 1: riscv64-unknown-elf-gcc: command not found
> expr: syntax error
> (..)
>         19,49s real             1m1,52s user            45,56s sys
>
> % /usr/bin/time -h gmake flash CROSSDEV=riscv32-esp-elf-
>         12,70s real             2,11s user              2,11s sys
>
> % cu -l /dev/cuaU0 -s 115200
> can't open log file /var/log/aculog.
> Connected
> ESP-ROM:esp32c3-api1-20210207
> Build:Feb  7 2021
> rst:0x1 (POWERON),boot:0xc (SPI_FAST_FLASH_BOOT)
> SPIWP:0xee
> mode:DIO, clock div:1
> load:0x3fcd5820,len:0x16c0
> load:0x403cc710,len:0x87c
> load:0x403ce710,len:0x2f54
> entry 0x403cc710
> I (30) boot: ESP-IDF v5.1-dev-3972-g1559b6309f 2nd stage bootloader
> I (30) boot: compile time Mar 15 2023 12:14:06
> I (31) boot: chip revision: v0.3
> I (35) boot.esp32c3: SPI Speed      : 80MHz
> I (40) boot.esp32c3: SPI Mode       : DIO
> I (44) boot.esp32c3: SPI Flash Size : 4MB
> I (49) boot: Enabling RNG early entropy source...
> I (54) boot: Partition Table:
> I (58) boot: ## Label            Usage          Type ST Offset   Length
> I (65) boot:  0 factory          factory app      00 00 00010000 00100000
> I (73) boot: End of partition table
> I (77) esp_image: segment 0: paddr=00010020 vaddr=3c020020 size=038b8h
> ( 14520) map
> I (88) esp_image: segment 1: paddr=000138e0 vaddr=3fc82ed0 size=001f4h
> (   500) load
> I (94) esp_image: segment 2: paddr=00013adc vaddr=40380000 size=0197ch
> (  6524) load
> I (103) esp_image: segment 3: paddr=00015460 vaddr=00000000 size=0ac98h (
> 44184)
> I (117) esp_image: segment 4: paddr=00020100 vaddr=42000100
> size=15694h ( 87700) map
> I (133) boot: Loaded app from partition at offset 0x10000
> I (133) boot: Disabling RNG early entropy source...
>
> NuttShell (NSH) NuttX-12.4.0
> nsh> uname -a
> NuttX 12.4.0 96c2707737 Jan 13 2024 01:43:34 risc-v esp32c3-devkit
>
>
> % /usr/bin/time -h gmake clean distclean CROSSDEV=riscv32-esp-elf-
>         10,54s real             4,99s user              7,09s sys
>
> % /usr/bin/time -h ./tools/configure.sh -B esp32c3-devkit:coremark
>         3,30s real              1,70s user              1,64s sys
>
> % /usr/bin/time -h gmake -j8 CROSSDEV=riscv32-esp-elf-
> /usr/local/bin/bash: line 1: riscv64-unknown-elf-gcc: command not found
> expr: syntax error
> (..)
>         18,61s real             55,81s user             42,59s sys
>
> % /usr/bin/time -h gmake flash CROSSDEV=riscv32-esp-elf-
>         10,20s real             1,80s user              1,46s sys
>
> % cu -l /dev/cuaU0 -s 115200
> Connected
> ESP-ROM:esp32c3-api1-20210207
> Build:Feb  7 2021
> rst:0x1 (POWERON),boot:0xc (SPI_FAST_FLASH_BOOT)
> SPIWP:0xee
> mode:DIO, clock div:1
> load:0x3fcd5820,len:0x16c0
> load:0x403cc710,len:0x87c
> load:0x403ce710,len:0x2f54
> entry 0x403cc710
> I (30) boot: ESP-IDF v5.1-dev-3972-g1559b6309f 2nd stage bootloader
> I (30) boot: compile time Mar 15 2023 12:14:06
> I (31) boot: chip revision: v0.3
> I (35) boot.esp32c3: SPI Speed      : 80MHz
> I (40) boot.esp32c3: SPI Mode       : DIO
> I (44) boot.esp32c3: SPI Flash Size : 4MB
> I (49) boot: Enabling RNG early entropy source...
> I (54) boot: Partition Table:
> I (58) boot: ## Label            Usage          Type ST Offset   Length
> I (65) boot:  0 factory          factory app      00 00 00010000 00100000
> I (73) boot: End of partition table
> I (77) esp_image: segment 0: paddr=00010020 vaddr=3c010020 size=00c08h
> (  3080) map
> I (86) esp_image: segment 1: paddr=00010c30 vaddr=3fc83810 size=00168h
> (   360) load
> I (94) esp_image: segment 2: paddr=00010da0 vaddr=40380000 size=01ed8h
> (  7896) load
> I (104) esp_image: segment 3: paddr=00012c80 vaddr=00000000 size=0d478h (
> 54392)
> I (119) esp_image: segment 4: paddr=00020100 vaddr=42000100
> size=0d46ch ( 54380) map
> I (128) boot: Loaded app from partition at offset 0x10000
> I (128) boot: Disabling RNG early entropy source...
> Running CoreMark...
> 2K performance run parameters for coremark.
> CoreMark Size    : 666
> Total ticks      : 1472
> Total time (secs): 14.720000
> Iterations/Sec   : 407.608696
> Iterations       : 6000
> Compiler version : GCC8.4.0
> Compiler flags   : -O3 -fno-strict-aliasing -fomit-frame-pointer
> -ffunction-sections -fdata-sections
> Memory location  : HEAP
> seedcrc          : 0xe9f5
> [0]crclist       : 0xe714
> [0]crcmatrix     : 0x1fd7
> [0]crcstate      : 0x8e3a
> [0]crcfinal      : 0xa14c
> Correct operation validated. See README.md for run and reporting rules.
> CoreMark 1.0 : 407.608696 / GCC8.4.0 -O3 -fno-strict-aliasing
> -fomit-frame-pointer -ffunction-sections -fdata-sections / HEAP
>
>
> % /usr/bin/time -h gmake clean distclean CROSSDEV=riscv32-esp-elf-
>         10,10s real             5,22s user              6,40s sys
>
> % /usr/bin/time -h ./tools/configure.sh -B esp32c3-devkit:ostest
>         3,33s real              1,54s user              1,83s sys
>
>
> % /usr/bin/time -h gmake -j8 CROSSDEV=riscv32-esp-elf-
> /usr/local/bin/bash: line 1: riscv64-unknown-elf-gcc: command not found
> expr: syntax error
> Create version.h
> (..)
>         19,33s real             58,71s user             45,92s sys
>
> % /usr/bin/time -h gmake flash CROSSDEV=riscv32-esp-elf-
>         15,12s real             2,15s user              2,03s sys
>
> % cu -l /dev/cuaU0 -s 115200
> Connected
> ESP-ROM:esp32c3-api1-20210207
> Build:Feb  7 2021
> rst:0x1 (POWERON),boot:0xc (SPI_FAST_FLASH_BOOT)
> SPIWP:0xee
> mode:DIO, clock div:1
> load:0x3fcd5820,len:0x16c0
> load:0x403cc710,len:0x87c
> load:0x403ce710,len:0x2f54
> entry 0x403cc710
> I (30) boot: ESP-IDF v5.1-dev-3972-g1559b6309f 2nd stage bootloader
> I (30) boot: compile time Mar 15 2023 12:14:06
> I (31) boot: chip revision: v0.3
> I (35) boot.esp32c3: SPI Speed      : 80MHz
> I (40) boot.esp32c3: SPI Mode       : DIO
> I (44) boot.esp32c3: SPI Flash Size : 4MB
> I (49) boot: Enabling RNG early entropy source...
> I (54) boot: Partition Table:
> I (58) boot: ## Label            Usage          Type ST Offset   Length
> I (65) boot:  0 factory          factory app      00 00 00010000 00100000
> I (73) boot: End of partition table
> I (77) esp_image: segment 0: paddr=00010020 vaddr=3c020020 size=0a598h
> ( 42392) map
> I (92) esp_image: segment 1: paddr=0001a5c0 vaddr=3fc83450 size=00230h
> (   560) load
> I (94) esp_image: segment 2: paddr=0001a7f8 vaddr=40380000 size=01894h
> (  6292) load
> I (103) esp_image: segment 3: paddr=0001c094 vaddr=00000000 size=04064h (
> 16484)
> I (113) esp_image: segment 4: paddr=00020100 vaddr=42000100
> size=1b3a8h (111528) map
> I (136) boot: Loaded app from partition at offset 0x10000
> I (136) boot: Disabling RNG early entropy source...
>
> NuttShell (NSH) NuttX-12.4.0
> nsh> ostest
> stdio_test: write fd=1
> stdio_test: Standard I/O Check: printf
> stdio_test: write fd=2
> stdio_test: Standard I/O Check: fprintf to stderr
> ostest_main: putenv(Variable1=BadValue3)
> ostest_main: setenv(Variable1, GoodValue1, TRUE)
> ostest_main: setenv(Variable2, BadValue1, FALSE)
> ostest_main: setenv(Variable2, GoodValue2, TRUE)
> ostest_main: setenv(Variable3, GoodValue3, FALSE)
> ostest_main: setenv(Variable3, BadValue2, FALSE)
> show_variable: Variable=Variable1 has value=GoodValue1
> show_variable: Variable=Variable2 has value=GoodValue2
> show_variable: Variable=Variable3 has value=GoodValue3
> ostest_main: Started user_main at PID=3
>
> user_main: Begin argument test
> user_main: Started with argc=5
> user_main: argv[0]="ostest"
> user_main: argv[1]="Arg1"
> user_main: argv[2]="Arg2"
> user_main: argv[3]="Arg3"
> user_main: argv[4]="Arg4"
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         1        1
> mxordblk    56e20    56e20
> uordblks     4bbc     4bbc
> fordblks    56e20    56e20
>
> user_main: getopt() test
> getopt():  Simple test
> getopt():  Invalid argument
> getopt():  Missing optional argument
> getopt_long():  Simple test
> getopt_long():  No short options
> getopt_long():  Argument for --option=argument
> getopt_long():  Invalid long option
> getopt_long():  Mixed long and short options
> getopt_long():  Invalid short option
> getopt_long():  Missing optional arguments
> getopt_long_only():  Mixed long and short options
> getopt_long_only():  Single hyphen long options
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         1        1
> mxordblk    56e20    56e20
> uordblks     4bbc     4bbc
> fordblks    56e20    56e20
> show_variable: Variable=Variable1 has value=GoodValue1
> show_variable: Variable=Variable2 has value=GoodValue2
> show_variable: Variable=Variable3 has value=GoodValue3
> show_variable: Variable=Variable1 has no value
> show_variable: Variable=Variable2 has value=GoodValue2
> show_variable: Variable=Variable3 has value=GoodValue3
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         1        2
> mxordblk    56e20    56e20
> uordblks     4bbc     4b9c
> fordblks    56e20    56e40
> show_variable: Variable=Variable1 has no value
> show_variable: Variable=Variable2 has no value
> show_variable: Variable=Variable3 has no value
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         2        3
> mxordblk    56e20    56e20
> uordblks     4b9c     4b34
> fordblks    56e40    56ea8
>
> user_main: setvbuf test
> setvbuf_test: Test NO buffering
> setvbuf_test: Using NO buffering
> setvbuf_test: Test default FULL buffering
> setvbuf_test: Using default FULL buffering
> setvbuf_test: Test FULL buffering, buffer size 64
> setvbuf_test: Using FULL buffering, buffer size 64
> setvbuf_test: Test FULL buffering, pre-allocated buffer
> setvbuf_test: Using FULL buffering, pre-allocated buffer
> setvbuf_test: Test LINE buffering, buffer size 64
> setvbuf_test: Using LINE buffering, buffer size 64
> setvbuf_test: Test FULL buffering, pre-allocated buffer
> setvbuf_test: Using FULL buffering, pre-allocated buffer
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         3        3
> mxordblk    56e20    56e20
> uordblks     4b34     4b34
> fordblks    56ea8    56ea8
>
> user_main: /dev/null test
> dev_null: Read 0 bytes from /dev/null
> dev_null: Wrote 1024 bytes to /dev/null
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         3        3
> mxordblk    56e20    56e20
> uordblks     4b34     4b34
> fordblks    56ea8    56ea8
>
> user_main: task_restart test
>
> Test task_restart()
> restart_main: setenv(VarName, VarValue, TRUE)
> restart_main: Started restart_main at PID=4
> restart_main: Started with argc=4
> restart_main: argv[0]="ostest"
> restart_main: argv[1]="This is argument 1"
> restart_main: argv[2]="Argument 2 here"
> restart_main: argv[3]="Lastly, the 3rd argument"
> restart_main: Variable=VarName has value=VarValue
> restart_main: I am still here
> restart_main: I am still here
> restart_main: Started restart_main at PID=4
> restart_main: Started with argc=4
> restart_main: argv[0]="ostest"
> restart_main: argv[1]="This is argument 1"
> restart_main: argv[2]="Argument 2 here"
> restart_main: argv[3]="Lastly, the 3rd argument"
> restart_main: Variable=VarName has value=VarValue
> restart_main: Started with argc=4
> restart_main: argv[0]="ostest"
> restart_main: argv[1]="This is argument 1"
> restart_main: argv[2]="Argument 2 here"
> restart_main: argv[3]="Lastly, the 3rd argument"
> restart_main: Variable=VarName has value=VarValue
> restart_main: Exiting
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         3        4
> mxordblk    56e20    54a78
> uordblks     4b34     6c1c
> fordblks    56ea8    54dc0
>
> user_main: waitpid test
>
> Test waitpid()
> waitpid_start_child: Started waitpid_main at PID=5
> waitpid_main: PID 5 Started
> waitpid_start_child: Started waitpid_main at PID=6
> waitpid_main: PID 6 Started
> waitpid_start_child: Started waitpid_main at PID=7
> waitpid_main: PID 7 Started
> waitpid_test: Waiting for PID=5 with waitpid()
> waitpid_main: PID 5 exitting with result=14
> waitpid_test: PID 5 waitpid succeeded with stat_loc=0e00
> waitpid_last: Waiting for PID=7 with waitpid()
> waitpid_main: PID 6 exitting with result=14
> waitpid_main: PID 7 exitting with result=14
> waitpid_last: PASS: PID 7 waitpid succeeded with stat_loc=0e00
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         4        6
> mxordblk    54a78    50300
> uordblks     6c1c     ad7c
> fordblks    54dc0    50c60
>
> user_main: mutex test
> Initializing mutex
> Starting thread 1
> Starting thread 2
>                 Thread1 Thread2
>         Loops   32      32
>         Errors  0       0
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         6        5
> mxordblk    50300    54a78
> uordblks     ad7c     542c
> fordblks    50c60    565b0
>
> user_main: timed mutex test
> mutex_test: Initializing mutex
> mutex_test: Starting thread
> pthread:  Started
> pthread:  Waiting for lock or timeout
> mutex_test: Unlocking
> pthread:  Got the lock
> pthread:  Waiting for lock or timeout
> pthread:  Got the timeout.  Terminating
> mutex_test: PASSED
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         5        4
> mxordblk    54a78    54a78
> uordblks     542c     542c
> fordblks    565b0    565b0
>
> user_main: cancel test
> cancel_test: Test 1a: Normal Cancellation
> cancel_test: Starting thread
> start_thread: Initializing mutex
> start_thread: Initializing cond
> start_thread: Starting thread
> start_thread: Yielding
> sem_waiter: Taking mutex
> sem_waiter: Starting wait for condition
> cancel_test: Canceling thread
> cancel_test: Joining
> cancel_test: waiter exited with result=0xffffffff
> cancel_test: PASS thread terminated with PTHREAD_CANCELED
> cancel_test: Test 2: Asynchronous Cancellation
> ... Skipped
> cancel_test: Test 3: Cancellation of detached thread
> cancel_test: Re-starting thread
> restart_thread: Destroying cond
> restart_thread: Destroying mutex
> restart_thread: Re-starting thread
> start_thread: Initializing mutex
> start_thread: Initializing cond
> start_thread: Starting thread
> start_thread: Yielding
> sem_waiter: Taking mutex
> sem_waiter: Starting wait for condition
> cancel_test: Canceling thread
> cancel_test: Joining
> cancel_test: PASS pthread_join failed with status=ESRCH
> cancel_test: Test 5: Non-cancelable threads
> cancel_test: Re-starting thread (non-cancelable)
> restart_thread: Destroying cond
> restart_thread: Destroying mutex
> restart_thread: Re-starting thread
> start_thread: Initializing mutex
> start_thread: Initializing cond
> start_thread: Starting thread
> start_thread: Yielding
> sem_waiter: Taking mutex
> sem_waiter: Starting wait for condition
> sem_waiter: Setting non-cancelable
> cancel_test: Canceling thread
> cancel_test: Joining
> sem_waiter: Releasing mutex
> sem_waiter: Setting cancelable
> cancel_test: waiter exited with result=0xffffffff
> cancel_test: PASS thread terminated with PTHREAD_CANCELED
> cancel_test: Test 6: Cancel message queue wait
> cancel_test: Starting thread (cancelable)
> Skipped
> cancel_test: Test 7: Cancel signal wait
> cancel_test: Starting thread (cancelable)
> Skipped
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         4        4
> mxordblk    54a78    54a78
> uordblks     542c     6c2c
> fordblks    565b0    54db0
>
> user_main: robust test
> robust_test: Initializing mutex
> robust_test: Starting thread
> robust_waiter: Taking mutex
> robust_waiter: Exiting with mutex
> robust_test: Take the lock again
> robust_test: Make the mutex consistent again.
> robust_test: Take the lock again
> robust_test: Joining
> robust_test: waiter exited with result=0
> robust_test: Test complete with nerrors=0
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         4        4
> mxordblk    54a78    54a78
> uordblks     6c2c     6c2c
> fordblks    54db0    54db0
>
> user_main: semaphore test
> sem_test: Initializing semaphore to 0
> sem_test: Starting waiter thread 1
> sem_test: Set thread 1 priority to 191
> waiter_func: Thread 1 Started
> waiter_func: Thread 1 initial semaphore value = 0
> sem_test: Starting waiter thread 2
> waiter_func: Thread 1 waiting on semaphore
> sem_test: Set thread 2 priority to 128
> waiter_func: Thread 2 Started
> waiter_func: Thread 2 initial semaphore value = -1
> waiter_func: Thread 2 waiting on semaphore
> sem_test: Starting poster thread 3
> sem_test: Set thread 3 priority to 64
> poster_func: Thread 3 started
> poster_func: Thread 3 semaphore value = -2
> poster_func: Thread 3 posting semaphore
> waiter_func: Thread 1 awakened
> waiter_func: Thread 1 new semaphore value = -1
> waiter_func: Thread 1 done
> poster_func: Thread 3 new semaphore value = -1
> poster_func: Thread 3 semaphore value = -1
> poster_func: Thread 3 posting semaphore
> waiter_func: Thread 2 awakened
> poster_func: Thread 3 new semaphore value = 0
> waiter_func: Thread 2 new semaphore value = 0
> waiter_func: Thread 2 done
> poster_func: Thread 3 done
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         4        5
> mxordblk    54a78    54a78
> uordblks     6c2c     542c
> fordblks    54db0    565b0
>
> user_main: timed semaphore test
> semtimed_test: Initializing semaphore to 0
> semtimed_test: Waiting for two second timeout
> semtimed_test: PASS: first test returned timeout
> BEFORE: (33 sec, 970000000 nsec)
> AFTER:  (35 sec, 980000000 nsec)
> semtimed_test: Starting poster thread
> semtimed_test: Set thread 1 priority to 191
> semtimed_test: Starting poster thread 3
> semtimed_test: Set thread 3 priority to 64
> semtimed_test: Waiting for two second timeout
> poster_func: Waiting for 1 second
> poster_func: Posting
> semtimed_test: PASS: sem_timedwait succeeded
> BEFORE: (35 sec, 980000000 nsec)
> AFTER:  (36 sec, 990000000 nsec)
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         5        4
> mxordblk    54a78    54a78
> uordblks     542c     542c
> fordblks    565b0    565b0
>
> user_main: condition variable test
> cond_test: Initializing mutex
> cond_test: Initializing cond
> cond_test: Starting waiter
> cond_test: Set thread 1 priority to 128
> waiter_thread: Started
> cond_test: Starting signaler
> cond_test: Set thread 2 priority to 64
> thread_signaler: Started
> thread_signaler: Terminating
> cond_test: signaler terminated, now cancel the waiter
> cond_test:      Waiter  Signaler
> cond_test: Loops        32      32
> cond_test: Errors       0       0
> cond_test:
> cond_test: 0 times, waiter did not have to wait for data
> cond_test: 0 times, data was already available when the signaler run
> cond_test: 0 times, the waiter was in an unexpected state when the
> signaler ran
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         4        5
> mxordblk    54a78    54a78
> uordblks     542c     542c
> fordblks    565b0    565b0
>
> user_main: pthread_exit() test
> pthread_exit_test: Started pthread_exit_main at PID=37
> pthread_exit_main 37: Starting pthread_exit_thread
> pthread_exit_main 37: Sleeping for 5 seconds
> pthread_exit_thread 38: Sleeping for 10 second
> pthread_exit_main 37: Calling pthread_exit()
> pthread_exit_thread 38: Still running...
> pthread_exit_thread 38: Exiting
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         5        4
> mxordblk    54a78    541b8
> uordblks     542c     542c
> fordblks    565b0    565b0
>
> user_main: pthread_rwlock test
> pthread_rwlock: Initializing rwlock
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         4        5
> mxordblk    541b8    54a78
> uordblks     542c     542c
> fordblks    565b0    565b0
>
> user_main: pthread_rwlock_cancel test
> pthread_rwlock_cancel: Starting test
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         5        4
> mxordblk    54a78    54a78
> uordblks     542c     4b6c
> fordblks    565b0    56e70
>
> user_main: timed wait test
> thread_waiter: Initializing mutex
> timedwait_test: Initializing cond
> timedwait_test: Starting waiter
> timedwait_test: Set thread 2 priority to 177
> thread_waiter: Taking mutex
> timedwait_test: Joining
> thread_waiter: Starting 5 second wait for condition
> thread_waiter: pthread_cond_timedwait timed out
> thread_waiter: Releasing mutex
> thread_waiter: Exit with status 0x12345678
> timedwait_test: waiter exited with result=0x12345678
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         4        4
> mxordblk    54a78    54a78
> uordblks     4b6c     542c
> fordblks    56e70    565b0
>
> user_main: message queue test
> mqueue_test: Starting receiver
> mqueue_test: Set receiver priority to 128
> receiver_thread: Starting
> mqueue_test: Starting sender
> mqueue_test: Set sender thread priority to 64
> mqueue_test: Waiting for sender to complete
> sender_thread: Starting
> receiver_thread: mq_receive succeeded on msg 0
> sender_thread: mq_send succeeded on msg 0
> receiver_thread: mq_receive succeeded on msg 1
> sender_thread: mq_send succeeded on msg 1
> receiver_thread: mq_receive succeeded on msg 2
> sender_thread: mq_send succeeded on msg 2
> receiver_thread: mq_receive succeeded on msg 3
> sender_thread: mq_send succeeded on msg 3
> receiver_thread: mq_receive succeeded on msg 4
> sender_thread: mq_send succeeded on msg 4
> receiver_thread: mq_receive succeeded on msg 5
> sender_thread: mq_send succeeded on msg 5
> receiver_thread: mq_receive succeeded on msg 6
> sender_thread: mq_send succeeded on msg 6
> receiver_thread: mq_receive succeeded on msg 7
> sender_thread: mq_send succeeded on msg 7
> receiver_thread: mq_receive succeeded on msg 8
> sender_thread: mq_send succeeded on msg 8
> receiver_thread: mq_receive succeeded on msg 9
> sender_thread: mq_send succeeded on msg 9
> sender_thread: returning nerrors=0
> mqueue_test: Killing receiver
> receiver_thread: mq_receive interrupted!
> receiver_thread: returning nerrors=0
> mqueue_test: Canceling receiver
> mqueue_test: receiver has already terminated
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         4        3
> mxordblk    54a78    54a78
> uordblks     542c     6c8c
> fordblks    565b0    54d50
>
> user_main: timed message queue test
> timedmqueue_test: Starting sender
> timedmqueue_test: Waiting for sender to complete
> sender_thread: Starting
> sender_thread: mq_timedsend succeeded on msg 0
> sender_thread: mq_timedsend succeeded on msg 1
> sender_thread: mq_timedsend succeeded on msg 2
> sender_thread: mq_timedsend succeeded on msg 3
> sender_thread: mq_timedsend succeeded on msg 4
> sender_thread: mq_timedsend succeeded on msg 5
> sender_thread: mq_timedsend succeeded on msg 6
> sender_thread: mq_timedsend succeeded on msg 7
> sender_thread: mq_timedsend succeeded on msg 8
> sender_thread: mq_timedsend 9 timed out as expected
> sender_thread: returning nerrors=0
> timedmqueue_test: Starting receiver
> timedmqueue_test: Waiting for receiver to complete
> receiver_thread: Starting
> receiver_thread: mq_timedreceive succeed on msg 0
> receiver_thread: mq_timedreceive succeed on msg 1
> receiver_thread: mq_timedreceive succeed on msg 2
> receiver_thread: mq_timedreceive succeed on msg 3
> receiver_thread: mq_timedreceive succeed on msg 4
> receiver_thread: mq_timedreceive succeed on msg 5
> receiver_thread: mq_timedreceive succeed on msg 6
> receiver_thread: mq_timedreceive succeed on msg 7
> receiver_thread: mq_timedreceive succeed on msg 8
> receiver_thread: Receive 9 timed out as expected
> receiver_thread: returning nerrors=0
> timedmqueue_test: Test complete
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         3        4
> mxordblk    54a78    54a78
> uordblks     6c8c     6cbc
> fordblks    54d50    54d20
>
> user_main: sigprocmask test
> sigprocmask_test: SUCCESS
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         4        4
> mxordblk    54a78    54a78
> uordblks     6cbc     6cbc
> fordblks    54d20    54d20
>
> user_main: signal handler test
> sighand_test: Initializing semaphore to 0
> sighand_test: Starting waiter task
> sighand_test: Started waiter_main pid=62
> waiter_main: Waiter started
> waiter_main: Unmasking signal 32
> waiter_main: Registering signal handler
> waiter_main: oact.sigaction=0 oact.sa_flags=0 oact.sa_mask=0000000000000000
> waiter_main: Waiting on semaphore
> sighand_test: Signaling pid=62 with signo=32 sigvalue=42
> waiter_main: sem_wait() successfully interrupted by signal
> waiter_main: done
> sighand_test: done
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         4        5
> mxordblk    54a78    52a70
> uordblks     6cbc     6d24
> fordblks    54d20    54cb8
>
> user_main: nested signal handler test
> signest_test: Starting signal waiter task at priority 101
> waiter_main: Waiter started
> waiter_main: Setting signal mask
> waiter_main: Registering signal handler
> signest_test: Started waiter_main pid=63
> waiter_main: Waiting on semaphore
> signest_test: Starting interfering task at priority 102
> interfere_main: Waiting on semaphore
> signest_test: Started interfere_main pid=68
> signest_test: Simple case:
>   Total signalled 1240  Odd=620 Even=620
>   Total handled   1240  Odd=620 Even=620
>   Total nested    0    Odd=0   Even=0
> signest_test: With task locking
>   Total signalled 2480  Odd=1240 Even=1240
>   Total handled   2480  Odd=1240 Even=1240
>   Total nested    0    Odd=0   Even=0
> signest_test: With intefering thread
>   Total signalled 3720  Odd=1860 Even=1860
>   Total handled   3720  Odd=1860 Even=1860
>   Total nested    0    Odd=0   Even=0
> signest_test: done
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         5        5
> mxordblk    52a70    50a68
> uordblks     6d24     94dc
> fordblks    54cb8    52500
>
> user_main: POSIX timer test
> timer_test: Initializing semaphore to 0
> timer_test: Unmasking signal 32
> timer_test: Registering signal handler
> timer_test: oact.sigaction=0 oact.sa_flags=0 oact.sa_mask=0000000000000000
> timer_test: Creating timer
> timer_test: Starting timer
> timer_test: Waiting on semaphore
> timer_expiration: Received signal 32
> timer_expiration: sival_int=42
> timer_expiration: si_code=2 (SI_TIMER)
> timer_expiration: ucontext=0
> timer_test: sem_wait() successfully interrupted by signal
> timer_test: g_nsigreceived=1
> timer_test: Waiting on semaphore
> timer_expiration: Received signal 32
> timer_expiration: sival_int=42
> timer_expiration: si_code=2 (SI_TIMER)
> timer_expiration: ucontext=0
> timer_test: sem_wait() successfully interrupted by signal
> timer_test: g_nsigreceived=2
> timer_test: Waiting on semaphore
> timer_expiration: Received signal 32
> timer_expiration: sival_int=42
> timer_expiration: si_code=2 (SI_TIMER)
> timer_expiration: ucontext=0
> timer_test: sem_wait() successfully interrupted by signal
> timer_test: g_nsigreceived=3
> timer_test: Waiting on semaphore
> timer_expiration: Received signal 32
> timer_expiration: sival_int=42
> timer_expiration: si_code=2 (SI_TIMER)
> timer_expiration: ucontext=0
> timer_test: sem_wait() successfully interrupted by signal
> timer_test: g_nsigreceived=4
> timer_test: Waiting on semaphore
> timer_expiration: Received signal 32
> timer_expiration: sival_int=42
> timer_expiration: si_code=2 (SI_TIMER)
> timer_expiration: ucontext=0
> timer_test: sem_wait() successfully interrupted by signal
> timer_test: g_nsigreceived=5
> timer_test: Deleting timer
> timer_test: done
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         5        5
> mxordblk    50a68    54a78
> uordblks     94dc     537c
> fordblks    52500    56660
>
> 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: 69
> rr_test: Starting second get_primes_thread
>          Second get_primes_thread: 70
> 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 < 10000, doing 10 run(s)
> get_primes_thread id=2 started, looking for primes < 10000, doing 10 run(s)
> get_primes_thread id=1 finished, found 1230 primes, last one was 9973
> get_primes_thread id=2 finished, found 1230 primes, last one was 9973
> rr_test: Done
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         5        5
> mxordblk    54a78    54a78
> uordblks     537c     64fc
> fordblks    56660    554e0
>
> 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_func: Thread 0 started
> barrier_func: Thread 1 started
> barrier_func: Thread 2 started
> barrier_func: Thread 3 started
> barrier_test: Thread 4 created
> barrier_func: Thread 4 started
> barrier_test: Thread 5 created
> barrier_func: Thread 5 started
> barrier_test: Thread 6 created
> barrier_func: Thread 6 started
> barrier_test: Thread 7 created
> 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_func: Thread 1 done
> barrier_func: Thread 2 done
> barrier_test: Thread 0 completed with result=0
> 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       5b9dc    5b9dc
> ordblks         5        9
> mxordblk    54a78    52250
> uordblks     64fc     5c7c
> fordblks    554e0    55d60
>
> 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       5b9dc    5b9dc
> ordblks         9        8
> mxordblk    52250    54c38
> uordblks     5c7c     5c7c
> fordblks    55d60    55d60
>
> user_main: vfork() test
> vfork_test: Child 91 ran successfully
>
> Final memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       5b9dc    5b9dc
> ordblks         1        7
> mxordblk    56e20    52c38
> uordblks     4bbc     7464
> fordblks    56e20    54578
> user_main: Exiting
> ostest_main: Exiting with status 0
>
>
> % /usr/bin/time -h gmake clean distclean CROSSDEV=riscv32-esp-elf-
>         10,63s real             5,06s user              7,12s sys
>
>
> === ESP32-S2 ===
> xtensa-esp32s2-elf-gcc -v
> Using built-in specs.
> COLLECT_GCC=xtensa-esp32s2-elf-gcc
>
> COLLECT_LTO_WRAPPER=/usr/home/cederom/.espressif/tools/xtensa-esp32s2-elf/esp-2021r2-patch5-8.4.0/xtensa-esp32s2-elf/bin/../libexec/gcc/xtensa-esp32s2-elf/8.4.0/lto-wrapper
> Target: xtensa-esp32s2-elf
> Configured with:
> /builds/idf/crosstool-NG/.build/xtensa-esp32s2-elf/src/gcc/configure
> --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu
> --target=xtensa-esp32s2-elf
> --prefix=/builds/idf/crosstool-NG/builds/xtensa-esp32s2-elf
> --exec_prefix=/builds/idf/crosstool-NG/builds/xtensa-esp32s2-elf
>
> --with-local-prefix=/builds/idf/crosstool-NG/builds/xtensa-esp32s2-elf/xtensa-esp32s2-elf
>
> --with-headers=/builds/idf/crosstool-NG/builds/xtensa-esp32s2-elf/xtensa-esp32s2-elf/include
> --with-newlib --enable-threads=no --disable-shared
> --with-pkgversion='crosstool-NG esp-2021r2-patch5'
> --disable-__cxa_atexit --enable-cxx-flags=-ffunction-sections
> --disable-libgomp --disable-libmudflap --disable-libmpx
> --disable-libssp --disable-libquadmath --disable-libquadmath-support
> --disable-libstdcxx-verbose
> --with-gmp=/builds/idf/crosstool-NG/.build/xtensa-esp32s2-elf/buildtools
> --with-mpfr=/builds/idf/crosstool-NG/.build/xtensa-esp32s2-elf/buildtools
> --with-mpc=/builds/idf/crosstool-NG/.build/xtensa-esp32s2-elf/buildtools
> --with-isl=/builds/idf/crosstool-NG/.build/xtensa-esp32s2-elf/buildtools
> --enable-lto --enable-target-optspace --without-long-double-128
> --disable-nls --enable-multiarch --enable-languages=c,c++
> --disable-libstdcxx-verbose --enable-threads=posix
> --enable-gcov-custom-rtio --enable-libstdcxx-time=yes
> Thread model: posix
> gcc version 8.4.0 (crosstool-NG esp-2021r2-patch5)
>
> Using updated .config:
> 207 # CONFIG_ESP32S2_UART0_RS485 is not set
> 208 CONFIG_ESP32S2_UART0_TXPIN=2
> 209 CONFIG_ESP32S2_UART0_RXPIN=3
>
> % /usr/bin/time -h ./tools/configure.sh -B esp32s2-saola-1:nsh
>         3,31s real              1,59s user              1,76s sys
>
> % /usr/bin/time -h gmake -j8 CROSSDEV=xtensa-esp32s2-elf-
>         31,17s real             1m14,23s user           56,48s sys
>
> % /usr/bin/time -h gmake flash CROSSDEV=xtensa-esp32s2-elf-
>         5,49s real              2,12s user              1,49s sys
>
> % cu -l /dev/cuaU0 -s 115200
> Connected
> NuttShell (NSH) NuttX-12.4.0
> nsh> uname -a
> NuttX 12.4.0 96c2707737 Jan 13 2024 02:38:01 xtensa esp32s2-saola-1
>
> % /usr/bin/time -h gmake clean distclean CROSSDEV=xtensa-esp32s2-elf-
>         8,86s real              3,98s user              4,98s sys
>
> % /usr/bin/time -h ./tools/configure.sh -B esp32s2-saola-1:coremark
>         3,32s real              1,52s user              1,84s sys
>
> % /usr/bin/time -h gmake -j8 CROSSDEV=xtensa-esp32s2-elf-
>         30,55s real             1m13,80s user           54,41s sys
>
> % /usr/bin/time -h gmake flash CROSSDEV=xtensa-esp32s2-elf-
>         4,85s real              1,77s user              1,01s sys
>
> % cu -l /dev/cuaU0 -s 115200
> Connected
> Running CoreMark...
> 2K performance run parameters for coremark.
> CoreMark Size    : 666
> Total ticks      : 1279
> Total time (secs): 12.790000
> Iterations/Sec   : 469.116497
> Iterations       : 6000
> Compiler version : GCC8.4.0
> Compiler flags   : -O3 -fno-strict-aliasing -fomit-frame-pointer
> -ffunction-sections -fdata-sections
> Memory location  : HEAP
> seedcrc          : 0xe9f5
> [0]crclist       : 0xe714
> [0]crcmatrix     : 0x1fd7
> [0]crcstate      : 0x8e3a
> [0]crcfinal      : 0xa14c
> Correct operation validated. See README.md for run and reporting rules.
> CoreMark 1.0 : 469.116497 / GCC8.4.0 -O3 -fno-strict-aliasing
> -fomit-frame-pointer -ffunction-sections -fdata-sections / HEAP
>
> % /usr/bin/time -h gmake clean distclean CROSSDEV=xtensa-esp32s2-elf-
>         8,47s real              3,99s user              4,59s sys
>
> % /usr/bin/time -h ./tools/configure.sh -B esp32s2-saola-1:ostest
>         3,34s real              1,60s user              1,78s sys
>
> % /usr/bin/time -h gmake -j8 CROSSDEV=xtensa-esp32s2-elf-
>         32,13s real             1m17,88s user           57,65s sys
>
> % /usr/bin/time -h gmake flash CROSSDEV=xtensa-esp32s2-elf-
>         6,19s real              2,42s user              1,46s sys
>
> % cu -l /dev/cuaU0 -s 115200
> Connected
>
> NuttShell (NSH) NuttX-12.4.0
> nsh> ostest
> stdio_test: write fd=1
> stdio_test: Standard I/O Check: printf
> stdio_test: write fd=2
> stdio_test: Standard I/O Check: fprintf to stderr
> ostest_main: putenv(Variable1=BadValue3)
> ostest_main: setenv(Variable1, GoodValue1, TRUE)
> ostest_main: setenv(Variable2, BadValue1, FALSE)
> ostest_main: setenv(Variable2, GoodValue2, TRUE)
> ostest_main: setenv(Variable3, GoodValue3, FALSE)
> ostest_main: setenv(Variable3, BadValue2, FALSE)
> show_variable: Variable=Variable1 has value=GoodValue1
> show_variable: Variable=Variable2 has value=GoodValue2
> show_variable: Variable=Variable3 has value=GoodValue3
> ostest_main: Started user_main at PID=3
>
> user_main: Begin argument test
> user_main: Started with argc=5
> user_main: argv[0]="ostest"
> user_main: argv[1]="Arg1"
> user_main: argv[2]="Arg2"
> user_main: argv[3]="Arg3"
> user_main: argv[4]="Arg4"
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         1        1
> mxordblk    45338    45338
> uordblks     5004     5004
> fordblks    45338    45338
>
> user_main: getopt() test
> getopt():  Simple test
> getopt():  Invalid argument
> getopt():  Missing optional argument
> getopt_long():  Simple test
> getopt_long():  No short options
> getopt_long():  Argument for --option=argument
> getopt_long():  Invalid long option
> getopt_long():  Mixed long and short options
> getopt_long():  Invalid short option
> getopt_long():  Missing optional arguments
> getopt_long_only():  Mixed long and short options
> getopt_long_only():  Single hyphen long options
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         1        1
> mxordblk    45338    45338
> uordblks     5004     5004
> fordblks    45338    45338
> show_variable: Variable=Variable1 has value=GoodValue1
> show_variable: Variable=Variable2 has value=GoodValue2
> show_variable: Variable=Variable3 has value=GoodValue3
> show_variable: Variable=Variable1 has no value
> show_variable: Variable=Variable2 has value=GoodValue2
> show_variable: Variable=Variable3 has value=GoodValue3
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         1        2
> mxordblk    45338    45338
> uordblks     5004     4fe4
> fordblks    45338    45358
> show_variable: Variable=Variable1 has no value
> show_variable: Variable=Variable2 has no value
> show_variable: Variable=Variable3 has no value
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         2        3
> mxordblk    45338    45338
> uordblks     4fe4     4f7c
> fordblks    45358    453c0
>
> user_main: setvbuf test
> setvbuf_test: Test NO buffering
> setvbuf_test: Using NO buffering
> setvbuf_test: Test default FULL buffering
> setvbuf_test: Using default FULL buffering
> setvbuf_test: Test FULL buffering, buffer size 64
> setvbuf_test: Using FULL buffering, buffer size 64
> setvbuf_test: Test FULL buffering, pre-allocated buffer
> setvbuf_test: Using FULL buffering, pre-allocated buffer
> setvbuf_test: Test LINE buffering, buffer size 64
> setvbuf_test: Using LINE buffering, buffer size 64
> setvbuf_test: Test FULL buffering, pre-allocated buffer
> setvbuf_test: Using FULL buffering, pre-allocated buffer
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         3        3
> mxordblk    45338    45338
> uordblks     4f7c     4f7c
> fordblks    453c0    453c0
>
> user_main: /dev/null test
> dev_null: Read 0 bytes from /dev/null
> dev_null: Wrote 1024 bytes to /dev/null
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         3        3
> mxordblk    45338    45338
> uordblks     4f7c     4f7c
> fordblks    453c0    453c0
>
> user_main: task_restart test
>
> Test task_restart()
> restart_main: setenv(VarName, VarValue, TRUE)
> restart_main: Started restart_main at PID=4
> restart_main: Started with argc=4
> restart_main: argv[0]="ostest"
> restart_main: argv[1]="This is argument 1"
> restart_main: argv[2]="Argument 2 here"
> restart_main: argv[3]="Lastly, the 3rd argument"
> restart_main: Variable=VarName has value=VarValue
> restart_main: I am still here
> restart_main: I am still here
> restart_main: Started restart_main at PID=4
> restart_main: Started with argc=4
> restart_main: argv[0]="ostest"
> restart_main: argv[1]="This is argument 1"
> restart_main: argv[2]="Argument 2 here"
> restart_main: argv[3]="Lastly, the 3rd argument"
> restart_main: Variable=VarName has value=VarValue
> restart_main: Started with argc=4
> restart_main: argv[0]="ostest"
> restart_main: argv[1]="This is argument 1"
> restart_main: argv[2]="Argument 2 here"
> restart_main: argv[3]="Lastly, the 3rd argument"
> restart_main: Variable=VarName has value=VarValue
> restart_main: Exiting
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         3        4
> mxordblk    45338    42f70
> uordblks     4f7c     7064
> fordblks    453c0    432d8
>
> user_main: waitpid test
>
> Test waitpid()
> waitpid_start_child: Started waitpid_main at PID=5
> waitpid_main: PID 5 Started
> waitpid_start_child: Started waitpid_main at PID=6
> waitpid_main: PID 6 Started
> waitpid_start_child: Started waitpid_main at PID=7
> waitpid_main: PID 7 Started
> waitpid_test: Waiting for PID=5 with waitpid()
> waitpid_main: PID 5 exitting with result=14
> waitpid_test: PID 5 waitpid succeeded with stat_loc=0e00
> waitpid_last: Waiting for PID=7 with waitpid()
> waitpid_main: PID 6 exitting with result=14
> waitpid_main: PID 7 exitting with result=14
> waitpid_last: PASS: PID 7 waitpid succeeded with stat_loc=0e00
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         4        6
> mxordblk    42f70    3e7b8
> uordblks     7064     b1c4
> fordblks    432d8    3f178
>
> user_main: mutex test
> Initializing mutex
> Starting thread 1
> Starting thread 2
>                 Thread1 Thread2
>         Loops   32      32
>         Errors  0       0
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         6        5
> mxordblk    3e7b8    42f70
> uordblks     b1c4     5874
> fordblks    3f178    44ac8
>
> user_main: timed mutex test
> mutex_test: Initializing mutex
> mutex_test: Starting thread
> pthread:  Started
> pthread:  Waiting for lock or timeout
> mutex_test: Unlocking
> pthread:  Got the lock
> pthread:  Waiting for lock or timeout
> pthread:  Got the timeout.  Terminating
> mutex_test: PASSED
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         5        4
> mxordblk    42f70    42f70
> uordblks     5874     5874
> fordblks    44ac8    44ac8
>
> user_main: cancel test
> cancel_test: Test 1a: Normal Cancellation
> cancel_test: Starting thread
> start_thread: Initializing mutex
> start_thread: Initializing cond
> start_thread: Starting thread
> start_thread: Yielding
> sem_waiter: Taking mutex
> sem_waiter: Starting wait for condition
> cancel_test: Canceling thread
> cancel_test: Joining
> cancel_test: waiter exited with result=0xffffffff
> cancel_test: PASS thread terminated with PTHREAD_CANCELED
> cancel_test: Test 2: Asynchronous Cancellation
> ... Skipped
> cancel_test: Test 3: Cancellation of detached thread
> cancel_test: Re-starting thread
> restart_thread: Destroying cond
> restart_thread: Destroying mutex
> restart_thread: Re-starting thread
> start_thread: Initializing mutex
> start_thread: Initializing cond
> start_thread: Starting thread
> start_thread: Yielding
> sem_waiter: Taking mutex
> sem_waiter: Starting wait for condition
> cancel_test: Canceling thread
> cancel_test: Joining
> cancel_test: PASS pthread_join failed with status=ESRCH
> cancel_test: Test 5: Non-cancelable threads
> cancel_test: Re-starting thread (non-cancelable)
> restart_thread: Destroying cond
> restart_thread: Destroying mutex
> restart_thread: Re-starting thread
> start_thread: Initializing mutex
> start_thread: Initializing cond
> start_thread: Starting thread
> start_thread: Yielding
> sem_waiter: Taking mutex
> sem_waiter: Starting wait for condition
> sem_waiter: Setting non-cancelable
> cancel_test: Canceling thread
> cancel_test: Joining
> sem_waiter: Releasing mutex
> sem_waiter: Setting cancelable
> cancel_test: waiter exited with result=0xffffffff
> cancel_test: PASS thread terminated with PTHREAD_CANCELED
> cancel_test: Test 6: Cancel message queue wait
> cancel_test: Starting thread (cancelable)
> Skipped
> cancel_test: Test 7: Cancel signal wait
> cancel_test: Starting thread (cancelable)
> Skipped
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         4        4
> mxordblk    42f70    42f70
> uordblks     5874     7074
> fordblks    44ac8    432c8
>
> user_main: robust test
> robust_test: Initializing mutex
> robust_test: Starting thread
> robust_waiter: Taking mutex
> robust_waiter: Exiting with mutex
> robust_test: Take the lock again
> robust_test: Make the mutex consistent again.
> robust_test: Take the lock again
> robust_test: Joining
> robust_test: waiter exited with result=0
> robust_test: Test complete with nerrors=0
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         4        4
> mxordblk    42f70    42f70
> uordblks     7074     7074
> fordblks    432c8    432c8
>
> user_main: semaphore test
> sem_test: Initializing semaphore to 0
> sem_test: Starting waiter thread 1
> sem_test: Set thread 1 priority to 191
> waiter_func: Thread 1 Started
> waiter_func: Thread 1 initial semaphore value = 0
> sem_test: Starting waiter thread 2
> waiter_func: Thread 1 waiting on semaphore
> sem_test: Set thread 2 priority to 128
> waiter_func: Thread 2 Started
> waiter_func: Thread 2 initial semaphore value = -1
> waiter_func: Thread 2 waiting on semaphore
> sem_test: Starting poster thread 3
> sem_test: Set thread 3 priority to 64
> poster_func: Thread 3 started
> poster_func: Thread 3 semaphore value = -2
> poster_func: Thread 3 posting semaphore
> waiter_func: Thread 1 awakened
> waiter_func: Thread 1 new semaphore value = -1
> waiter_func: Thread 1 done
> poster_func: Thread 3 new semaphore value = -1
> poster_func: Thread 3 semaphore value = -1
> poster_func: Thread 3 posting semaphore
> waiter_func: Thread 2 awakened
> poster_func: Thread 3 new semaphore value = 0
> waiter_func: Thread 2 new semaphore value = 0
> waiter_func: Thread 2 done
> poster_func: Thread 3 done
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         4        5
> mxordblk    42f70    42f70
> uordblks     7074     5874
> fordblks    432c8    44ac8
>
> user_main: timed semaphore test
> semtimed_test: Initializing semaphore to 0
> semtimed_test: Waiting for two second timeout
> semtimed_test: PASS: first test returned timeout
> BEFORE: (37 sec, 460000000 nsec)
> AFTER:  (39 sec, 470000000 nsec)
> semtimed_test: Starting poster thread
> semtimed_test: Set thread 1 priority to 191
> semtimed_test: Starting poster thread 3
> semtimed_test: Set thread 3 priority to 64
> semtimed_test: Waiting for two second timeout
> poster_func: Waiting for 1 second
> poster_func: Posting
> semtimed_test: PASS: sem_timedwait succeeded
> BEFORE: (39 sec, 470000000 nsec)
> AFTER:  (40 sec, 480000000 nsec)
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         5        4
> mxordblk    42f70    42f70
> uordblks     5874     5874
> fordblks    44ac8    44ac8
>
> user_main: condition variable test
> cond_test: Initializing mutex
> cond_test: Initializing cond
> cond_test: Starting waiter
> cond_test: Set thread 1 priority to 128
> waiter_thread: Started
> cond_test: Starting signaler
> cond_test: Set thread 2 priority to 64
> thread_signaler: Started
> thread_signaler: Terminating
> cond_test: signaler terminated, now cancel the waiter
> cond_test:      Waiter  Signaler
> cond_test: Loops        32      32
> cond_test: Errors       0       0
> cond_test:
> cond_test: 0 times, waiter did not have to wait for data
> cond_test: 0 times, data was already available when the signaler run
> cond_test: 0 times, the waiter was in an unexpected state when the
> signaler ran
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         4        5
> mxordblk    42f70    42f70
> uordblks     5874     5874
> fordblks    44ac8    44ac8
>
> user_main: pthread_exit() test
> pthread_exit_test: Started pthread_exit_main at PID=37
> pthread_exit_main 37: Starting pthread_exit_thread
> pthread_exit_main 37: Sleeping for 5 seconds
> pthread_exit_thread 38: Sleeping for 10 second
> pthread_exit_main 37: Calling pthread_exit()
> pthread_exit_thread 38: Still running...
> pthread_exit_thread 38: Exiting
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         5        4
> mxordblk    42f70    426b0
> uordblks     5874     5874
> fordblks    44ac8    44ac8
>
> user_main: pthread_rwlock test
> pthread_rwlock: Initializing rwlock
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         4        5
> mxordblk    426b0    42f70
> uordblks     5874     5874
> fordblks    44ac8    44ac8
>
> user_main: pthread_rwlock_cancel test
> pthread_rwlock_cancel: Starting test
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         5        4
> mxordblk    42f70    42f70
> uordblks     5874     4fb4
> fordblks    44ac8    45388
>
> user_main: timed wait test
> thread_waiter: Initializing mutex
> timedwait_test: Initializing cond
> timedwait_test: Starting waiter
> timedwait_test: Set thread 2 priority to 177
> thread_waiter: Taking mutex
> timedwait_test: Joining
> thread_waiter: Starting 5 second wait for condition
> thread_waiter: pthread_cond_timedwait timed out
> thread_waiter: Releasing mutex
> thread_waiter: Exit with status 0x12345678
> timedwait_test: waiter exited with result=0x12345678
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         4        4
> mxordblk    42f70    42f70
> uordblks     4fb4     5874
> fordblks    45388    44ac8
>
> user_main: message queue test
> mqueue_test: Starting receiver
> mqueue_test: Set receiver priority to 128
> receiver_thread: Starting
> mqueue_test: Starting sender
> mqueue_test: Set sender thread priority to 64
> mqueue_test: Waiting for sender to complete
> sender_thread: Starting
> receiver_thread: mq_receive succeeded on msg 0
> sender_thread: mq_send succeeded on msg 0
> receiver_thread: mq_receive succeeded on msg 1
> sender_thread: mq_send succeeded on msg 1
> receiver_thread: mq_receive succeeded on msg 2
> sender_thread: mq_send succeeded on msg 2
> receiver_thread: mq_receive succeeded on msg 3
> sender_thread: mq_send succeeded on msg 3
> receiver_thread: mq_receive succeeded on msg 4
> sender_thread: mq_send succeeded on msg 4
> receiver_thread: mq_receive succeeded on msg 5
> sender_thread: mq_send succeeded on msg 5
> receiver_thread: mq_receive succeeded on msg 6
> sender_thread: mq_send succeeded on msg 6
> receiver_thread: mq_receive succeeded on msg 7
> sender_thread: mq_send succeeded on msg 7
> receiver_thread: mq_receive succeeded on msg 8
> sender_thread: mq_send succeeded on msg 8
> receiver_thread: mq_receive succeeded on msg 9
> sender_thread: mq_send succeeded on msg 9
> sender_thread: returning nerrors=0
> mqueue_test: Killing receiver
> receiver_thread: mq_receive interrupted!
> receiver_thread: returning nerrors=0
> mqueue_test: Canceling receiver
> mqueue_test: receiver has already terminated
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         4        3
> mxordblk    42f70    42f70
> uordblks     5874     70d4
> fordblks    44ac8    43268
>
> user_main: timed message queue test
> timedmqueue_test: Starting sender
> timedmqueue_test: Waiting for sender to complete
> sender_thread: Starting
> sender_thread: mq_timedsend succeeded on msg 0
> sender_thread: mq_timedsend succeeded on msg 1
> sender_thread: mq_timedsend succeeded on msg 2
> sender_thread: mq_timedsend succeeded on msg 3
> sender_thread: mq_timedsend succeeded on msg 4
> sender_thread: mq_timedsend succeeded on msg 5
> sender_thread: mq_timedsend succeeded on msg 6
> sender_thread: mq_timedsend succeeded on msg 7
> sender_thread: mq_timedsend succeeded on msg 8
> sender_thread: mq_timedsend 9 timed out as expected
> sender_thread: returning nerrors=0
> timedmqueue_test: Starting receiver
> timedmqueue_test: Waiting for receiver to complete
> receiver_thread: Starting
> receiver_thread: mq_timedreceive succeed on msg 0
> receiver_thread: mq_timedreceive succeed on msg 1
> receiver_thread: mq_timedreceive succeed on msg 2
> receiver_thread: mq_timedreceive succeed on msg 3
> receiver_thread: mq_timedreceive succeed on msg 4
> receiver_thread: mq_timedreceive succeed on msg 5
> receiver_thread: mq_timedreceive succeed on msg 6
> receiver_thread: mq_timedreceive succeed on msg 7
> receiver_thread: mq_timedreceive succeed on msg 8
> receiver_thread: Receive 9 timed out as expected
> receiver_thread: returning nerrors=0
> timedmqueue_test: Test complete
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         3        4
> mxordblk    42f70    42f70
> uordblks     70d4     7104
> fordblks    43268    43238
>
> user_main: sigprocmask test
> sigprocmask_test: SUCCESS
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         4        4
> mxordblk    42f70    42f70
> uordblks     7104     7104
> fordblks    43238    43238
>
> user_main: signal handler test
> sighand_test: Initializing semaphore to 0
> sighand_test: Starting waiter task
> sighand_test: Started waiter_main pid=62
> waiter_main: Waiter started
> waiter_main: Unmasking signal 32
> waiter_main: Registering signal handler
> waiter_main: oact.sigaction=0 oact.sa_flags=0 oact.sa_mask=0000000000000000
> waiter_main: Waiting on semaphore
> sighand_test: Signaling pid=62 with signo=32 sigvalue=42
> waiter_main: sem_wait() successfully interrupted by signal
> waiter_main: done
> sighand_test: done
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         4        5
> mxordblk    42f70    40f68
> uordblks     7104     716c
> fordblks    43238    431d0
>
> user_main: nested signal handler test
> signest_test: Starting signal waiter task at priority 101
> waiter_main: Waiter started
> waiter_main: Setting signal mask
> waiter_main: Registering signal handler
> signest_test: Started waiter_main pid=63
> waiter_main: Waiting on semaphore
> signest_test: Starting interfering task at priority 102
> interfere_main: Waiting on semaphore
> signest_test: Started interfere_main pid=68
> signest_test: Simple case:
>   Total signalled 1240  Odd=620 Even=620
>   Total handled   1240  Odd=620 Even=620
>   Total nested    0    Odd=0   Even=0
> signest_test: With task locking
>   Total signalled 2480  Odd=1240 Even=1240
>   Total handled   2480  Odd=1240 Even=1240
>   Total nested    0    Odd=0   Even=0
> signest_test: With intefering thread
>   Total signalled 3720  Odd=1860 Even=1860
>   Total handled   3720  Odd=1860 Even=1860
>   Total nested    0    Odd=0   Even=0
> signest_test: done
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         5        5
> mxordblk    40f68    3ef60
> uordblks     716c     9924
> fordblks    431d0    40a18
>
> user_main: POSIX timer test
> timer_test: Initializing semaphore to 0
> timer_test: Unmasking signal 32
> timer_test: Registering signal handler
> timer_test: oact.sigaction=0 oact.sa_flags=0 oact.sa_mask=0000000000000000
> timer_test: Creating timer
> timer_test: Starting timer
> timer_test: Waiting on semaphore
> timer_expiration: Received signal 32
> timer_expiration: sival_int=42
> timer_expiration: si_code=2 (SI_TIMER)
> timer_expiration: ucontext=0
> timer_test: sem_wait() successfully interrupted by signal
> timer_test: g_nsigreceived=1
> timer_test: Waiting on semaphore
> timer_expiration: Received signal 32
> timer_expiration: sival_int=42
> timer_expiration: si_code=2 (SI_TIMER)
> timer_expiration: ucontext=0
> timer_test: sem_wait() successfully interrupted by signal
> timer_test: g_nsigreceived=2
> timer_test: Waiting on semaphore
> timer_expiration: Received signal 32
> timer_expiration: sival_int=42
> timer_expiration: si_code=2 (SI_TIMER)
> timer_expiration: ucontext=0
> timer_test: sem_wait() successfully interrupted by signal
> timer_test: g_nsigreceived=3
> timer_test: Waiting on semaphore
> timer_expiration: Received signal 32
> timer_expiration: sival_int=42
> timer_expiration: si_code=2 (SI_TIMER)
> timer_expiration: ucontext=0
> timer_test: sem_wait() successfully interrupted by signal
> timer_test: g_nsigreceived=4
> timer_test: Waiting on semaphore
> timer_expiration: Received signal 32
> timer_expiration: sival_int=42
> timer_expiration: si_code=2 (SI_TIMER)
> timer_expiration: ucontext=0
> timer_test: sem_wait() successfully interrupted by signal
> timer_test: g_nsigreceived=5
> timer_test: Deleting timer
> timer_test: done
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         5        5
> mxordblk    3ef60    3ef60
> uordblks     9924     9924
> fordblks    40a18    40a18
>
> 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: 69
> rr_test: Starting second get_primes_thread
>          Second get_primes_thread: 70
> 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 < 10000, doing 10 run(s)
> get_primes_thread id=2 started, looking for primes < 10000, doing 10 run(s)
> get_primes_thread id=1 finished, found 1230 primes, last one was 9973
> get_primes_thread id=2 finished, found 1230 primes, last one was 9973
> rr_test: Done
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         5        5
> mxordblk    3ef60    42f70
> uordblks     9924     6944
> fordblks    40a18    439f8
>
> 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_func: Thread 0 started
> barrier_func: Thread 1 started
> barrier_func: Thread 2 started
> barrier_func: Thread 3 started
> barrier_test: Thread 4 created
> barrier_func: Thread 4 started
> barrier_test: Thread 5 created
> barrier_func: Thread 5 started
> barrier_test: Thread 6 created
> barrier_func: Thread 6 started
> barrier_test: Thread 7 created
> 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_func: Thread 1 done
> barrier_func: Thread 2 done
> barrier_test: Thread 0 completed with result=0
> 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       4a33c    4a33c
> ordblks         5        8
> mxordblk    42f70    40748
> uordblks     6944     60c4
> fordblks    439f8    44278
>
> user_main: setjmp test
> setjmp_test: Initializing jmp_buf
> setjmp_test: Try jump
> setjmp_test: Jump succeed
>
> End of test memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         8        8
> mxordblk    40748    40748
> uordblks     60c4     60c4
> fordblks    44278    44278
>
> 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       4a33c    4a33c
> ordblks         8        7
> mxordblk    40748    43150
> uordblks     60c4     60c4
> fordblks    44278    44278
>
> Final memory usage:
> VARIABLE  BEFORE   AFTER
> ======== ======== ========
> arena       4a33c    4a33c
> ordblks         1        7
> mxordblk    45338    43150
> uordblks     5004     60c4
> fordblks    45338    44278
> user_main: Exiting
> ostest_main: Exiting with status 0
>
>  % /usr/bin/time -h gmake clean distclean CROSSDEV=xtensa-esp32s2-elf-
>         8,96s real              3,99s user              5,08s sys
>
>
> === ESP32-S3 ===
>
> None ESP32-S3 USB Device nor ESP32-S3-Pico UART converter CH343 is
> still supported. Out of scope.
>
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=272803
>
>
> === SIM ===
>
> Fails here but will not block needs to be reviewed in a free moment
> probably FreeBSD / CLANG 14 only. Sorry I did not use SIM for a while
> :-)
>
> % cc --version
> FreeBSD clang version 14.0.5 (https://github.com/llvm/llvm-project.git
> llvmorg-14.0.5-0-gc12386ae247c
> <https://github.com/llvm/llvm-project.gitllvmorg-14.0.5-0-gc12386ae247c>)
> Target: x86_64-unknown-freebsd13.2
> Thread model: posix
> InstalledDir: /usr/bin
>
> % /usr/bin/time -h ./tools/configure.sh -B sim:nsh
>         3,39s real              1,73s user              1,70s sys
>
> % /usr/bin/time -h gmake -j8
> Create version.h
> LN: platform/board to
> /XXX/nuttx/workbench/releases/12.4.0-RC0/apps/platform/dummy
> Register: dumpstack
> Register: hello
> Register: gpio
> Register: nsh
> Register: sh
> CP:  /XXX/nuttx/workbench/releases/12.4.0-RC0/nuttx/include/nuttx/config.h
> CP:
> /XXX/nuttx/workbench/releases/12.4.0-RC0/nuttx/include/nuttx/fs/hostfs.h
> CC:  dummy.c sim/posix/sim_hostfs.c:81:12: warning: implicit
> declaration of function 'S_TYPEISSEM' is invalid in C99
> [-Wimplicit-function-declaration]
>   else if (S_TYPEISSEM(hostbuf))
>            ^
> implicit declaration of function 'S_TYPEISMQ' is invalid in C99
> [-Wimplicit-function-declaration]
>   else if (S_TYPEISMQ(hostbuf))
>            ^
> sim/posix/sim_hostfs.c:89:12: warning: implicit declaration of
> function 'S_TYPEISSHM' is invalid in C99
> [-Wimplicit-function-declaration]
>   else if (S_TYPEISSHM(hostbuf))
>            ^
> 3 warnings generated.
> LD:  nuttx
> ld: error: -Ttext-segment is not supported. Use --image-base if you
> intend to set the base address
> cc: error: linker command failed with exit code 1 (use -v to see
> invocation)
> gmake[1]: *** [Makefile:376: nuttx] Error 1
> gmake: *** [tools/Unix.mk:545: nuttx] Error 2
>         18,06s real             1m2,85s user            36,55s sys
>
>
> --
> CeDeROM, SQ7MHZ, http://www.tomek.cedro.info
>

Reply via email to