Got some time to test, didn't do all of my targets quite yet since I hit some
big issues. -1 from me unfortunately.

Here is the summary of my tested configurations:

- raspberrypi-pico-w:telnet - FAIL
- raspberrypi-pico-w:usbnsh - FAIL
- raspberrypi-pico-w:nsh-flash - PASS
- raspberrypi-pico-w:smp - PASS
- raspberrypi-pico:usbnsh - FAIL
- raspberrypi-pico:smp - PASS
- seeed-xiao-rp2040:userleds - FAIL
- seeed-xiao-rp2040:usbnsh - FAIL
- xiao-seeduino:nsh - PASS

Comments:

XIAO Seeduino board does not have an OSTest configuration.

raspberrypi-pico-w fails OSTest by hanging at waitpid test.
The telnet configuration fails to connect to my network and a scan causes a
panic.

elegoo-mega2560r3 does not have an OSTest configuration.

xiao-nrf52840 supports BLE and WiFi but doesn't have any configuration to
demonstrate it (this is not blocking for release but I will open an issue for
this).

esp32s3-xiao supports BLE and WiFi but has not configuration to demonstrate it
either. There is also no OSTest configuration. (Again, I don't think missing
configs are blocking for release but a TODO note for later). Also, the
documentation refers to the board identifier as xiao-esp32s3 incorrectly.

The seeed-xiao-rp2040 configurations I tested have the shell hang periodically.
The userled blinks properly but the shell hung after a few seconds. usbnsh fails
OSTest. There are also two undocumented configurations for this board which
should be remedied:

- seeed-xiao-rp2040:ws2812
- seeed-xiao-rp2040:gpio

esp32c3-xiao configuration still fails with the following error as I reported in
my issue a while ago. This issue occurs in the 3rd party HAL:

Espressif HAL for 3rd Party Platforms: cleaning current repository...
Espressif HAL for 3rd Party Platforms: e8d8638febf5310bf5b8f9bd04cf7fab9e9a4cb0
Espressif HAL for 3rd Party Platforms: initializing submodules...
Applying patches...
CC:  
chip/esp-hal-3rdparty/components/log/src/log_level/tag_log_level/linked_list/log_lCC:
  
chip/esp-hal-3rdparty/components/efuse/src/efuse_controller/keys/with_key_purposesCC:
  udp/udp_callback.c 
chip/esp-hal-3rdparty/components/esp_hw_support/esp_gpio_reserve.c:13:47: 
error: implicit declaration of function 'ATOMIC_VAR_INIT'; did you mean 
'ATOMIC_FLAG_INIT'? [-Wimplicit-function-declaration]
   13 | static _Atomic uint64_t s_reserved_pin_mask = 
ATOMIC_VAR_INIT(~(SOC_GPIO_VALID_GPIO_MASK));
      |                                               ^~~~~~~~~~~~~~~
      |                                               ATOMIC_FLAG_INIT
chip/esp-hal-3rdparty/components/esp_hw_support/esp_gpio_reserve.c:13:47: 
error: initializer element is not constant
CC:  
chip/esp-hal-3rdparty/components/esp_hal_ana_conv/esp32c3/temperature_sensor_peripmake[1]:
 *** [Makefile:144: 
chip/esp-hal-3rdparty/components/esp_hw_support/esp_gpio_reserve.o] Error 1
make[1]: *** Waiting for unfinished jobs....
CC:  stdio/lib_tmpnam.c make: *** [tools/LibTargets.mk:170: 
arch/risc-v/src/libarch.a] Error 2
make: *** Waiting for unfinished jobs....

Below are my tested configurations and their full logs:

raspberrypi-pico-w:telnet

ABCE
telnetd [6:100]

NuttShell (NSH) NuttX-13.0.0
nsh> ls
/:
 dev/
 proc/
nsh> ls /dev
/dev:
 console
 null
 telnet
 ttyS0
 zero
nsh> ifup wlan0
ifup wlan0...OK
nsh> ifconfig
lo      Link encap:Local Loopback at RUNNING mtu 1518
        inet addr:127.0.0.1 DRaddr:127.0.0.1 Mask:255.0.0.0

wlan0   Link encap:Ethernet HWaddr d8:3a:dd:fe:2f:c6 at UP mtu 576
        inet addr:0.0.0.0 DRaddr:10.0.0.1 Mask:255.255.255.0

nsh> wapi essid wlan0 myssid 1
nsh> wapi psk wlan0 mypasswd 3
nsh> ifup wlan0
ifup wlan0...OK
nsh> renew wlan0
ERROR: netlib_obtain_ipv4addr() failed
nsh> help
help usage:  help [-v] [<cmd>]

    .           cp          expr        mkdir       rm          true        
    [           cmp         false       mkrd        rmdir       truncate    
    ?           dirname     fdinfo      mount       set         uname       
    alias       date        free        mv          kill        umount      
    unalias     df          help        nslookup    pkill       unset       
    arp         dmesg       hexdump     pidof       sleep       uptime      
    basename    echo        ifconfig    printf      usleep      watch       
    break       env         ifdown      ps          source      xd          
    cat         exec        ifup        pwd         test        wait        
    cd          exit        ls          reboot      time        

Builtin Apps:
    dd           getprime     nsh          ping         sh           telnetd    
  
    dumpstack    hello        ostest       renew        telnet       wapi       
  
nsh> renew wlan0
ERROR: netlib_obtain_ipv4addr() failed
nsh> wapi  escan
Usage:
        wapi show         <ifname>
        wapi scan         <ifname>
        wapi pscan        <ifname>
        wapi scan_results <ifname>
        wapi ip           <ifname> <IP address>
        wapi mask         <ifname> <mask>
        wapi freq         <ifname> <frequency>  <index/flag>
        wapi essid        <ifname> <essid>      <index/flag>
        wapi psk          <ifname> <passphrase> <index/flag> [wpa]
        wapi disconnect   <ifname>
        wapi mode         <ifname>              <index/mode>
        wapi ap           <ifname>              <MAC address>
        wapi bitrate      <ifname> <bitrate>    <index/flag>
        wapi txpower      <ifname> <txpower>    <index/flag>
        wapi country      <ifname> <country code>
        wapi sense        <ifname>
        wapi pta_prio     <ifname>  <index/flag>
        wapi power_save   <ifname>  <on|off>
        wapi help

Frequency Flags:
        [0] WAPI_FREQ_AUTO
        [1] WAPI_FREQ_FIXED

ESSID Flags:
        [0] WAPI_ESSID_OFF
        [1] WAPI_ESSID_ON
        [2] WAPI_ESSID_DELAY_ON

Passphrase algorithm Flags:
        [0] WPA_ALG_NONE
        [1] WPA_ALG_WEP
        [2] WPA_ALG_TKIP
        [3] WPA_ALG_CCMP

Passphrase WPA version:
        [0] WPA_VER_NONE
        [1] WPA_VER_1
        [2] WPA_VER_2
        [3] WPA_VER_3

Operating Modes:
        [0] WAPI_MODE_AUTO
        [1] WAPI_MODE_ADHOC
        [2] WAPI_MODE_MANAGED
        [3] WAPI_MODE_MASTER
        [4] WAPI_MODE_REPEAT
        [5] WAPI_MODE_SECOND
        [6] WAPI_MODE_MONITOR
        [7] WAPI_MODE_MESH

Bitrate Flags:
        [0] WAPI_BITRATE_AUTO
        [1] WAPI_BITRATE_FIXED

TX power Flags:
        [0] WAPI_TXPOWER_DBM
        [1] WAPI_TXPOWER_MWATT
        [2] WAPI_TXPOWER_RELATIVE

pta prio Flags:
        [0] WAPI_PTA_PRIORITY_COEX_MAXIMIZED
        [1] WAPI_PTA_PRIORITY_COEX_HIGH
        [2] WAPI_PTA_PRIORITY_BALANCED
        [3] WAPI_PTA_PRIORITY_WLAN_HIGHD
        [4] WAPI_PTA_PRIORITY_WLAN_MAXIMIZED
nsh> wapi scan wlan0
[ 5] dump_assert_info: Current Version: NuttX  13.0.0 2c18ee90cd Jun 30 2026 
11:03:25 arm
[ 5] dump_assert_info: Assertion failed panic: at file: :0 task: 
bcmf-gspi-thread process: Kernel 0x10021db5
[ 5] up_dump_register: R0: 00000178 R1: 2000e07a R2: 2000e07a  R3: 00000178
[ 5] up_dump_register: R4: 000001aa R5: 00000000 R6: 2000e020  FP: 2001f228
[ 5] up_dump_register: R8: 00000000 SB: 00000000 SL: 00000000 R11: 00000000
[ 5] up_dump_register: IP: 00000000 SP: 2001f228 LR: 10022bf3  PC: 10022c08
[ 5] up_dump_register: xPSR: 21000000 PRIMASK: 00000000 CONTROL: 00000000
[ 5] up_dump_register: EXC_RETURN: fffffffd
[ 5] dump_stackinfo: User Stack:
[ 5] dump_stackinfo:   base: 0x2001eb48
[ 5] dump_stackinfo:   size: 00001984
[ 5] dump_stackinfo:     sp: 0x2001f228
[ 5] stack_dump: 0x2001f208: 00000178 2000e07a 2000e07a 00000178 00000000 
10022bf3 10022c08 21000000
[ 5] stack_dump: 0x2001f228: 2001dad0 00000008 00000000 00000001 00000000 
00000000 00000000 10007200
[ 5] stack_dump: 0x2001f248: 00220809 50200020 2000e07a 2001db30 00620829 
2000e062 00000000 2000e020
[ 5] stack_dump: 0x2001f268: 2001f270 10023e39 2001db30 000001c6 00000001 
00000000 2000e020 2001dea8
[ 5] stack_dump: 0x2001f288: 2001f298 10022333 000001d8 2000e04c 2001f2a8 
2000e04d 2001db30 2000e04c
[ 5] stack_dump: 0x2001f2a8: 4001610c 2001dad0 1000a2e1 2001dea8 2001f2c8 
10021e4d 00000002 2001f2dc
[ 5] stack_dump: 0x2001f2c8: 00000000 0003b128 2001db30 00000000 00000000 
00202020 00000002 00000002
[ 5] stack_dump: 0x2001f2e8: 10021db5 00000000 2001f2f8 1000328b 00000000 
00000000 00000000 00000000
[ 5] stack_dump: 0x2001f308: 00000000 00000000 00000000 00000000 00000000 
00000000 00000000 00000000
[ 5] sched_dumpstack: backtrace| 5: 0x10029e46 0x10020622 0x10006f18 0x100026ee 
0x10000e88 0x10002228 0x10000a86 0x10022c06
[ 5] sched_dumpstack: backtrace| 5: 0x10022bf0 0x10023e36 0x10022330 0x10021e4a 
0x10003288
[ 5] dump_tasks:    PID GROUP PRI POLICY   TYPE    NPX STATE   EVENT      
SIGMASK          STACKBASE  STACKSIZE      USED   FILLED    COMMAND
[ 5] dump_tasks:   ----   --- --- -------- ------- --- ------- ---------- 
---------------- 0x20000fd8      2048       984    48.0%    irq
[ 5] dump_task:       0     0   0 FIFO     Kthread -   Ready              
0000000000000000 0x2001b6b8      1000       512    51.2%    Idle_Task
[ 5] dump_task:       1     0 224 RR       Kthread -   Waiting Semaphore  
0000000000000000 0x2001c030      1976       264    13.3%    hpwork 0x200001e0 
0x20000230
[ 5] dump_task:       2     0 100 RR       Kthread -   Waiting Semaphore  
0000000000000000 0x2001c918      1976       264    13.3%    lpwork 0x20000170 
0x200001c0
[ 5] dump_task:       4     4 100 RR       Task    -   Waiting Semaphore  
0000000000000000 0x2001e328      2000      1376    68.8%    nsh_main
[ 5] dump_task:       5     0 224 RR       Kthread -   Running            
0000000000000000 0x2001eb48      1984       592    29.8%    bcmf-gspi-thread 
0x2001db30
[ 5] dump_task:       6     6 100 RR       Task    -   Waiting Semaphore  
0000000000000000 0x2001f5f8      2008       592    29.4%    telnetd
[ 5] dump_task:      12    12 100 RR       Task    -   Waiting Signal     
0000000000000000 0x200200f0      1992      1232    61.8%    wapi scan wlan0
[ 5] sched_dumpstack: backtrace| 0: 0x10009acc 0x100020a0 0x10000224 0x17fffffe
[ 5] sched_dumpstack: backtrace| 1: 0x10020794 0x10004f56 0x1000710a 0x10007164 
0x100034fa 0x10003288
[ 5] sched_dumpstack: backtrace| 2: 0x10020794 0x10004f56 0x1000710a 0x10007164 
0x100034fa 0x10003288
[ 5] sched_dumpstack: backtrace| 4: 0x10020794 0x10004f56 0x1000710a 0x10020594 
0x100205a2 0x1000eb64 0x1000c61e 0x1000d3aa
[ 5] sched_dumpstack: backtrace| 4: 0x1000d462 0x1000b4de 0x1000b3bc 0x1000b380 
0x10006fac 0x10003294
[ 5] sched_dumpstack: backtrace| 5: 0x10029e46 0x10020622 0x10006f18 0x100023a8 
0x100029d0 0x1000276c 0x10000e88 0x10002228
[ 5] sched_dumpstack: backtrace| 5: 0x10000a86 0x10022c06 0x10022bf0 0x10023e36 
0x10022330 0x10021e4a 0x10003288
[ 5] sched_dumpstack: backtrace| 6: 0x10020794 0x10004f56 0x1000710a 0x10016dd0 
0x1003439e 0x1003321a 0x10036164 0x100365e8
[ 5] sched_dumpstack: backtrace| 6: 0x10032c54 0x1003055e 0x10006fac 0x10003294
[ 5] sched_dumpstack: backtrace|12: 0x1006e4ce 0x10004f56 0x1006e356 0x100274a0 
0x100301a6 0x1003024a 0x100304e4 0x10006fac
[ 5] sched_dumpstack: backtrace|12: 0x10003294


raspberrypi-pico-w:usbnsh

NuttShell (NSH) NuttX-13.0.0
nsh> 
nsh> ls
/:
 dev/
 proc/
nsh> help
help usage:  help [-v] [<cmd>]

    .           cp          exit        mkrd        rmdir          truncate    
      kill        uname       
    alias       date        fdinfo      pidof       pkill       umount      
    unalias     df          free        printf      sleep       unset       
    basename    dmesg       help        ps          usleep      uptime      
    break       echo        hexdump     pwd         source      watch       
    cat         env         ls          reboot      test        xd          
    cd          exec        mkdir       rm          time        wait        

Builtin Apps:
    dd          getprime    hello       nsh         ostest      sh          
nsh> ostest
stdio_test: write fd=1
stdio_test: Standard I/O Check: printf
 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=4

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"

age:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3f960    3f960
ordblks         1        1
mxordblk    3a988    3a988
uordblks     4fd8     4fd8
fordblks    3a988    3a988

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       3f960    3f960
ordblks         1        1
mxordblk    3a988    3a988
uordblks     4fd8     4fd8
fordblks    3a988    3a988

user_main: libc tests

test memory usage:
LE  BEFORE======== ======== ========
arena       3f960    3f960
ordblks         1        1
mxordblk    3a988    3a988
uordblks     4fd8     4fd8
fordblks    3a988    3a988
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       3f960    3f960
ordblks         1        2
mxordblk    3a988    3a988
uordblks     4fd8     4fb8
fordblks    3a988    3a9a8
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       3f960    3f960
ordblks         2        2
mxordblk    3a988    3a988
uordblks     4fb8     4f40
fordblks    3a9a8    3aa20

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       3f960    3f960
ordblks         2        2
mxordblk    3a988    3a988
uordblks     4f40     4f40
fordblks    3aa20    3aa20
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       3f960    3f960
ordblks         2        2
mxordblk    3a988    3a988
uordblks     4f40     4f40
fordblks    3aa20    3aa20

user_main: task_restart test

Test task_restart()
restart_main: setenv(VarName, VarValue, TRUE)
restart_main: Started restart_main at PID=5
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=5
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       3f960    3f960
ordblks         2        2
mxordblk    3a988    3a988
uordblks     4f40     4f78
fordblks    3aa20    3a9e8

ser_main: waitpid test

raspberrypi-pico-w:nsh-flash


NuttShell (NSH) NuttX-13.0.0
nsh> ls
/:
 dev/
 flash/
 proc/
nsh> ls flash
/flash:
 test
nsh> cat flash/test
Hello, world!
nsh> help
help usage:  help [-v] [<cmd>]

    .            cmp          false        mv           pkill        unset      
  
    [            dirname      fdinfo       pidof        sleep        uptime     
  
    ?            date         free         printf       usleep       watch      
  
    alias        df           help         ps           source       xd         
  
    unalias      dmesg        hexdump      pwd          test         wait       
  
    basename     echo         ls           reboot       time         
    break        env          mkdir        rm           true         
    cat          exec         mkrd         rmdir        truncate     
    cd           exit         mksmartfs    set          uname        
    cp           expr         mount        kill         umount       

Builtin Apps:
    dd            hello         ostest        smart_test    
    getprime      nsh           sh            
nsh> smart_test
usage: smart_test [-c COUNT] [-s SEEKCOUNT] [-w WRITECOUNT] 
smart_mounted_filename

DESCRIPTION
    Conducts various stress tests to validate SMARTFS operation.
    Please choose one or more of -c, -s, or -w to conduct tests.

OPTIONS
    -c COUNT
          Performs a circular log style test where a fixed number of fixed
          length records are written and then overwritten with new data.
          Uses the -r, -e and -t options to specify the parameters of the
          record geometry and update operation.  The COUNT parameter sets
          the number of record updates to perform.

    -s SEEKCOUNT
          Performs a simple seek test where to validate the SMARTFS seek
          operation.  Uses the -l option to specify the number of test
          lines to write to the test file.  The SEEKCOUNT parameter sets
          the number of seek/read operations to perform.

    -w WRITECOUNT
          Performs a seek/write/seek/read test where to validate the SMARTFS
          seek/write operation.  Uses the -l option to specify the number of
          test lines to write to the test file.  The WRITECOUNT parameter sets
          the number of seek/write operations to perform.

    -l LINECOUNT
          Sets the number of lines of test data to write to the test file
          during seek and seek/write tests.

    -r RECORDLEN
          Sets the length of each log record during circular log tests.

    -e ERASECOUNT
          Sets the erase granularity for overwriting old circular log entries.
          Setting this value to 16, for instance, would cause every 16th record
          update to write a single record followed by 15 records with all 0xFF
          content.  This helps SMARTFS perform better wear leveling and reduces
          the number of FLASH block erases significantly.

    -t TOTALRECORDS
          Sets the total number of records in the circular log test file.

nsh> smart_test flash/flash
usage: smart_test [-c COUNT] [-s SEEKCOUNT] [-w WRITECOUNT] 
smart_mounted_filename

DESCRIPTION
    Conducts various stress tests to validate SMARTFS operation.
    Please choose one or more of -c, -s, or -w to conduct tests.

OPTIONS
    -c COUNT
          Performs a circular log style test where a fixed number of fixed
          length records are written and then overwritten with new data.
          Uses the -r, -e and -t options to specify the parameters of the
          record geometry and update operation.  The COUNT parameter sets
          the number of record updates to perform.

    -s SEEKCOUNT
          Performs a simple seek test where to validate the SMARTFS seek
          operation.  Uses the -l option to specify the number of test
          lines to write to the test file.  The SEEKCOUNT parameter sets
          the number of seek/read operations to perform.

    -w WRITECOUNT
          Performs a seek/write/seek/read test where to validate the SMARTFS
          seek/write operation.  Uses the -l option to specify the number of
          test lines to write to the test file.  The WRITECOUNT parameter sets
          the number of seek/write operations to perform.

    -l LINECOUNT
          Sets the number of lines of test data to write to the test file
          during seek and seek/write tests.

    -r RECORDLEN
          Sets the length of each log record during circular log tests.

    -e ERASECOUNT
          Sets the erase granularity for overwriting old circular log entries.
          Setting this value to 16, for instance, would cause every 16th record
          update to write a single record followed by 15 records with all 0xFF
          content.  This helps SMARTFS perform better wear leveling and reduces
          the number of FLASH block erases significantly.

    -t TOTALRECORDS
          Sets the total number of records in the circular log test file.

nsh> smart_test /flash./flash
usage: smart_test [-c COUNT] [-s SEEKCOUNT] [-w WRITECOUNT] 
smart_mounted_filename

DESCRIPTION
    Conducts various stress tests to validate SMARTFS operation.
    Please choose one or more of -c, -s, or -w to conduct tests.

OPTIONS
    -c COUNT
          Performs a circular log style test where a fixed number of fixed
          length records are written and then overwritten with new data.
          Uses the -r, -e and -t options to specify the parameters of the
          record geometry and update operation.  The COUNT parameter sets
          the number of record updates to perform.

    -s SEEKCOUNT
          Performs a simple seek test where to validate the SMARTFS seek
          operation.  Uses the -l option to specify the number of test
          lines to write to the test file.  The SEEKCOUNT parameter sets
          the number of seek/read operations to perform.

    -w WRITECOUNT
          Performs a seek/write/seek/read test where to validate the SMARTFS
          seek/write operation.  Uses the -l option to specify the number of
          test lines to write to the test file.  The WRITECOUNT parameter sets
          the number of seek/write operations to perform.

    -l LINECOUNT
          Sets the number of lines of test data to write to the test file
          during seek and seek/write tests.

    -r RECORDLEN
          Sets the length of each log record during circular log tests.

    -e ERASECOUNT
          Sets the erase granularity for overwriting old circular log entries.
          Setting this value to 16, for instance, would cause every 16th record
          update to write a single record followed by 15 records with all 0xFF
          content.  This helps SMARTFS perform better wear leveling and reduces
          the number of FLASH block erases significantly.

    -t TOTALRECORDS
          Sets the total number of records in the circular log test file.

nsh> smart_test ./flashsmart_test ./flash;5D-c 10 
./flash
Unable to create file ./flash
nsh> smart_test -c 10 ./flash/flash
Unable to create file /flash
nsh> smart_test -c 10 /flashsh/test
Creating circular log with 40000 records
Performing 10 circular log record update tests
0123456789
Pass
nsh> 

raspberrypi-pico-w:smp

NuttShell (NSH) NuttX-13.0.0
nsh> help
help usage:  help [-v] [<cmd>]

    .           cp          exit        mkrd        rmdir       true        
    [           cmp         expr        mount       set         truncate    
    ?           dirname     false       mv          kill        uname       
    alias       date        fdinfo      pidof       pkill       umount      
    unalias     df          free        printf      sleep       unset       
    basename    dmesg       help        ps          usleep      uptime      
    break       echo        hexdump     pwd         source      watch       
    cat         env         ls          reboot      test        xd          
    cd          exec        mkdir       rm          time        wait        

Builtin Apps:
    dd          hello       ostest      smp         
    getprime    nsh         sh          taskset     
nsh> getprime 4
Set thread priority to 10
Set thread policy to SCHED_RR
Start thread #0
Start thread #1
thread #0 started, looking for primes < 10000, doing 10 run(s)
Start thread #2
thread #1 started, looking for primes < 10000, doing 10 run(s)
Start thread #3
thread #2 started, looking for primes < 10000, doing 10 run(s)
thread #3 started, looking for primes < 10000, doing 10 run(s)
thread #2 finished, found 1230 primes, last one was 9973
thread #0 finished, found 1230 primes, last one was 9973
thread #1 finished, found 1230 primes, last one was 9973
thread #3 finished, found 1230 primes, last one was 9973
Done
getprime took 68970 msec
nsh> smp
  Main[0]: Running on CPU1
  Main[0]: Initializing barrier
  Main[0]: Thread 1 created
Thread[1]: Started
  Main[0]: Thread 2 created
Thread[2]: Started
Thread[1]: Running on CPU0
  Main[0]: Thread 3 created
Thread[3]: Started
Thread[2]: Running on CPU0
  Main[0]: Now running on CPU0
Thread[3]: Running on CPU0
  Main[0]: Thread 4 created
Thread[2]: Now running on CPU1
Thread[4]: Started
  Main[0]: Thread 5 created
Thread[5]: Started
Thread[4]: Running on CPU1
  Main[0]: Now running on CPU1
Thread[3]: Now running on CPU1
Thread[5]: Running on CPU0
Thread[2]: Now running on CPU0
  Main[0]: Thread 6 created
Thread[6]: Started
Thread[1]: Now running on CPU1
Thread[4]: Now running on CPU0
Thread[5]: Now running on CPU1
  Main[0]: Now running on CPU0
Thread[6]: Running on CPU1
Thread[2]: Now running on CPU1
Thread[3]: Now running on CPU0
Thread[1]: Now running on CPU0
  Main[0]: Thread 7 created
Thread[7]: Started
Thread[4]: Now running on CPU1
Thread[2]: Now running on CPU0
Thread[5]: Now running on CPU0
Thread[3]: Now running on CPU1
  Main[0]: Thread 8 created
Thread[7]: Running on CPU0
Thread[8]: Started
Thread[6]: Now running on CPU0
Thread[1]: Now running on CPU1
  Main[0]: Now running on CPU1
Thread[5]: Now running on CPU1
Thread[8]: Running on CPU1
Thread[7]: Now running on CPU1
Thread[2]: Now running on CPU1
Thread[3]: Now running on CPU0
Thread[4]: Now running on CPU0
Thread[1]: Now running on CPU0
Thread[5]: Now running on CPU0
Thread[8]: Now running on CPU0
Thread[6]: Now running on CPU1
Thread[7]: Now running on CPU0
Thread[3]: Now running on CPU1
Thread[1]: Now running on CPU1
Thread[2]: Now running on CPU0
Thread[4]: Now running on CPU1
Thread[5]: Now running on CPU1
Thread[2]: Calling pthread_barrier_wait()
Thread[3]: Now running on CPU0
Thread[7]: Now running on CPU1
Thread[1]: Calling pthread_barrier_wait()
Thread[8]: Now running on CPU1
Thread[6]: Now running on CPU0
Thread[3]: Calling pthread_barrier_wait()
Thread[4]: Now running on CPU0
Thread[7]: Now running on CPU0
Thread[5]: Now running on CPU0
Thread[8]: Now running on CPU0
Thread[4]: Calling pthread_barrier_wait()
Thread[1]: Now running on CPU0
Thread[3]: Now running on CPU1
Thread[6]: Now running on CPU1
Thread[7]: Now running on CPU1
Thread[8]: Now running on CPU1
Thread[4]: Now running on CPU1
Thread[5]: Now running on CPU1
Thread[6]: Now running on CPU0
Thread[7]: Now running on CPU0
Thread[5]: Calling pthread_barrier_wait()
Thread[6]: Calling pthread_barrier_wait()
Thread[5]: Now running on CPU0
Thread[6]: Now running on CPU1
Thread[7]: Calling pthread_barrier_wait()
Thread[8]: Calling pthread_barrier_wait()
Thread[2]: Back with ret=0 (I am not special)
Thread[8]: Back with ret=PTHREAD_BARRIER_SERIAL_THREAD (I AM SPECIAL)
Thread[1]: Back with ret=0 (I am not special)
Thread[3]: Back with ret=0 (I am not special)
Thread[4]: Back with ret=0 (I am not special)
Thread[5]: Back with ret=0 (I am not special)
Thread[6]: Back with ret=0 (I am not special)
Thread[7]: Back with ret=0 (I am not special)
Thread[2]: Now running on CPU1
Thread[8]: Now running on CPU0
Thread[1]: Now running on CPU1
Thread[3]: Now running on CPU0
Thread[4]: Now running on CPU0
Thread[5]: Now running on CPU1
Thread[7]: Now running on CPU1
Thread[6]: Now running on CPU0
Thread[8]: Now running on CPU1
Thread[3]: Now running on CPU1
Thread[1]: Now running on CPU0
Thread[7]: Now running on CPU0
Thread[4]: Now running on CPU1
Thread[5]: Now running on CPU0
Thread[2]: Now running on CPU0
Thread[6]: Now running on CPU1
Thread[1]: Now running on CPU1
Thread[3]: Now running on CPU0
Thread[7]: Now running on CPU1
Thread[4]: Now running on CPU0
Thread[5]: Now running on CPU1
Thread[1]: Now running on CPU0
Thread[2]: Now running on CPU1
Thread[6]: Now running on CPU0
Thread[7]: Now running on CPU0
Thread[4]: Now running on CPU1
Thread[3]: Now running on CPU1
Thread[8]: Now running on CPU0
Thread[1]: Now running on CPU1
Thread[5]: Now running on CPU0
Thread[2]: Now running on CPU0
Thread[7]: Now running on CPU1
Thread[4]: Now running on CPU0
Thread[1]: Now running on CPU0
Thread[3]: Now running on CPU0
Thread[8]: Now running on CPU1
Thread[6]: Now running on CPU1
Thread[5]: Now running on CPU1
Thread[2]: Now running on CPU1
Thread[3]: Now running on CPU1
Thread[6]: Done
Thread[4]: Now running on CPU1
Thread[8]: Done
Thread[7]: Now running on CPU0
Thread[5]: Now running on CPU0
Thread[2]: Done
Thread[3]: Now running on CPU0
Thread[1]: Now running on CPU1
Thread[6]: Now running on CPU0
Thread[4]: Done
Thread[7]: Now running on CPU1
Thread[1]: Done
Thread[5]: Done
Thread[2]: Now running on CPU0
Thread[7]: Done
Thread[4]: Now running on CPU0
Thread[1]: Now running on CPU0
Thread[7]: Now running on CPU0
  Main[0]: Now running on CPU0
  Main[0]: Thread 1 completed with result=0
  Main[0]: Thread 2 completed with result=0
Thread[3]: Now running on CPU1
Thread[3]: Done
  Main[0]: Thread 3 completed with result=0
  Main[0]: Thread 4 completed with result=0
  Main[0]: Thread 5 completed with result=0
  Main[0]: Thread 6 completed with result=0
  Main[0]: Thread 7 completed with result=0
  Main[0]: Thread 8 completed with result=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=22

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       3e964    3e964
ordblks         1        1
mxordblk    3a000    3a000
uordblks     4964     4964
fordblks    3a000    3a000

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       3e964    3e964
ordblks         1        1
mxordblk    3a000    3a000
uordblks     4964     4964
fordblks    3a000    3a000

user_main: libc tests

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e964    3e964
ordblks         1        1
mxordblk    3a000    3a000
uordblks     4964     4964
fordblks    3a000    3a000
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       3e964    3e964
ordblks         1        2
mxordblk    3a000    3a000
uordblks     4964     4944
fordblks    3a000    3a020
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       3e964    3e964
ordblks         2        2
mxordblk    3a000    3a000
uordblks     4944     48cc
fordblks    3a020    3a098

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       3e964    3e964
ordblks         2        2
mxordblk    3a000    3a000
uordblks     48cc     48cc
fordblks    3a098    3a098

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       3e964    3e964
ordblks         2        2
mxordblk    3a000    3a000
uordblks     48cc     48cc
fordblks    3a098    3a098

user_main: task_restart test

Test task_restart()
restart_main: setenv(VarName, VarValue, TRUE)
restart_main: Started with argc=4
restart_main: Started restart_main at PID=23
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 with argc=4
restart_main: Started restart_main at PID=23
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       3e964    3e964
ordblks         2        2
mxordblk    3a000    3a000
uordblks     48cc     4904
fordblks    3a098    3a060

user_main: waitpid test

Test waitpid()
waitpid_main: PID 24 Started
waitpid_start_child: Started waitpid_main at PID=24
waitpid_main: PID 25 Started
waitpid_start_child: Started waitpid_main at PID=25
waitpid_main: PID 26 Started
waitpid_start_child: Started waitpid_main at PID=26
waitpid_test: Waiting for PID=24 with waitpid()
waitpid_main: PID 24 exitting with result=14
waitpid_main: PID 25 exitting with result=14
waitpid_test: PID 24 waitpid succeeded with stat_loc=0e00
waitpid_last: Waiting for PID=26 with waitpid()
waitpid_main: PID 26 exitting with result=14
waitpid_last: PASS: PID 26 waitpid succeeded with stat_loc=0e00

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e964    3e964
ordblks         2        4
mxordblk    3a000    358e8
uordblks     4904     69e4
fordblks    3a060    37f80

user_main: mutex test
Initializing mutex
Starting thread 1
Starting thread 2
                Thread1 Thread2
        Loops   32      32
        Errors  0       0

Testing moved mutex
Starting moved mutex thread 1
Starting moved mutex thread 2
                Thread1 Thread2
        Moved Loops     32      32
        Moved Errors    0       0

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e964    3e964
ordblks         4        4
mxordblk    358e8    37908
uordblks     69e4     5ad4
fordblks    37f80    38e90

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       3e964    3e964
ordblks         4        4
mxordblk    37908    37908
uordblks     5ad4     5ad4
fordblks    38e90    38e90

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       3e964    3e964
ordblks         4        4
mxordblk    37908    35900
uordblks     5ad4     7bbc
fordblks    38e90    36da8

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       3e964    3e964
ordblks         4        4
mxordblk    35900    35900
uordblks     7bbc     7bbc
fordblks    36da8    36da8

user_main: semaphore test
sem_test: Initializing semaphore to 0
sem_test: Starting waiter thread 1
sem_test: Set thread 1 priority to 191
sem_test: Starting waiter thread 2
waiter_func: Thread 1 Started
sem_test: Set thread 2 priority to 128
waiter_func: Thread 1 initial semaphore value = 0
waiter_func: Thread 2 Started
waiter_func: Thread 1 waiting on semaphore
waiter_func: Thread 2 initial semaphore value = 0
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
poster_func: Thread 3 new semaphore value = -1
waiter_func: Thread 1 new semaphore value = -1
poster_func: Thread 3 semaphore value = -1
waiter_func: Thread 1 done
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
poster_func: Thread 3 done
waiter_func: Thread 2 done

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e964    3e964
ordblks         4        4
mxordblk    35900    35900
uordblks     7bbc     7bbc
fordblks    36da8    36da8

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: (1612829054 sec, 400000000 nsec)
AFTER:  (1612829056 sec, 400000000 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
poster_func: Waiting for 1 second
semtimed_test: Waiting for two second timeout
poster_func: Posting
semtimed_test: PASS: sem_timedwait succeeded
BEFORE: (1612829056 sec, 400000000 nsec)
AFTER:  (1612829057 sec, 410000000 nsec)

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e964    3e964
ordblks         4        4
mxordblk    35900    35900
uordblks     7bbc     7bbc
fordblks    36da8    36da8

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 rn

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e964    3e964
ordblks         4        4
mxordblk    35900    35900
uordblks     7bbc     7bbc
fordblks    36da8    36da8

user_main: pthread_exit() test
pthread_exit_test: Started pthread_exit_main at PID=47
pthread_exit_main 47: Starting pthread_exit_thread
pthread_exit_main 47: Sleeping for 5 seconds
pthread_exit_thread 50: Sleeping for 10 second
pthread_exit_thread 50: Still running...
pthread_exit_main 47: Calling pthread_exit()

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e964    3e964
ordblks         4        4
mxordblk    35900    338f8
uordblks     7bbc     a58c
fordblks    36da8    343d8

user_main: pthread_rwlock test
pthread_rwlock: Initializing rwlock
pthread_exit_thread 50: Exiting

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e964    3e964
ordblks         4        3
mxordblk    338f8    38708
uordblks     a58c     51fc
fordblks    343d8    39768

user_main: pthread_rwlock_cancel test
pthread_rwlock_cancel: Starting test

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e964    3e964
ordblks         3        3
mxordblk    38708    38708
uordblks     51fc     51fc
fordblks    39768    39768

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
timedwait_test: Joining
thread_waiter: Taking mutex
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       3e964    3e964
ordblks         3        3
mxordblk    38708    38708
uordblks     51fc     51fc
fordblks    39768    39768

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       3e964    3e964
ordblks         3        3
mxordblk    38708    39ee8
uordblks     51fc     4984
fordblks    39768    39fe0

user_main: sigprocmask test
sigprocmask_test: SUCCESS

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e964    3e964
ordblks         3        3
mxordblk    39ee8    39ee8
uordblks     4984     4984
fordblks    39fe0    39fe0

user_main: message queue test
mqueue_test: Starting receiver
mqueue_test: Set receiver priority to 128
mqueue_test: Starting sender
receiver_thread: Starting
mqueue_test: Set sender thread priority to 64
mqueue_test: Waiting for sender to complete
sender_thread: Starting
sender_thread: mq_send succeeded on msg 0
receiver_thread: mq_receive succeeded on msg 0
sender_thread: mq_send succeeded on msg 1
receiver_thread: mq_receive succeeded on msg 1
sender_thread: mq_send succeeded on msg 2
receiver_thread: mq_receive succeeded on msg 2
sender_thread: mq_send succeeded on msg 3
receiver_thread: mq_receive succeeded on msg 3
sender_thread: mq_send succeeded on msg 4
receiver_thread: mq_receive succeeded on msg 4
sender_thread: mq_send succeeded on msg 5
receiver_thread: mq_receive succeeded on msg 5
sender_thread: mq_send succeeded on msg 6
receiver_thread: mq_receive succeeded on msg 6
sender_thread: mq_send succeeded on msg 7
receiver_thread: mq_receive succeeded on msg 7
sender_thread: mq_send succeeded on msg 8
receiver_thread: mq_receive succeeded on msg 8
sender_thread: mq_send succeeded on msg 9
receiver_thread: mq_receive 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       3e964    3e964
ordblks         3        3
mxordblk    39ee8    39ee8
uordblks     4984     4984
fordblks    39fe0    39fe0

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       3e964    3e964
ordblks         3        1
mxordblk    39ee8    37ee0
uordblks     4984     6a84
fordblks    39fe0    37ee0

user_main: nested signal handler test
signest_test: Starting signal waiter task at priority 101
signest_test: Started waiter_main pid=71
waiter_main: Waiter started
signest_test: Starting interfering task at priority 102
waiter_main: Setting signal mask
interfere_main: Waiting on semaphore
waiter_main: Registering signal handler
signest_test: Started interfere_main pid=72
waiter_main: Waiting on semaphore
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 interfering 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       3e964    3e964
ordblks         1        6
mxordblk    37ee0    335a0
uordblks     6a84     6ae4
fordblks    37ee0    37e80

user_main: spinlock test
Start Lock test:
Thread num: 1, Loop times: 10000000

Test type: spinlock
spinlock: Test Results:
spinlock: Final counter: 10000000
spinlock: Average throughput : 2118644 op/s
spinlock: Total execution time: 4720000000 ns
 
Test type: rspinlock
rspinlock: Test Results:
rspinlock: Final counter: 10000000
rspinlock: Average throughput : 805801 op/s
rspinlock: Total execution time: 12410000000 ns
 
Test type: seqcount
seqcount: Test Results:
seqcount: Final counter: 10000000
seqcount: Average throughput : 946969 op/s
seqcount: Total execution time: 10560000000 ns
 
Start Lock test:
Thread num: 2, Loop times: 10000000

Test type: spinlock
spinlock: Test Results:
spinlock: Final counter: 20000000
spinlock: Average throughput : 1100715 op/s
spinlock: Total execution time: 9090000000 ns
 
Test type: rspinlock
rspinlock: Test Results:
rspinlock: Final counter: 20000000
rspinlock: Average throughput : 743494 op/s
rspinlock: Total execution time: 13450000000 ns
 
Test type: seqcount
seqcount: Test Results:
seqcount: Final counter: 20000000
seqcount: Average throughput : 1892147 op/s
seqcount: Total execution time: 10570000000 ns
 

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e964    3e964
ordblks         6        6
mxordblk    335a0    335a0
uordblks     6ae4     52e4
fordblks    37e80    39680

user_main: wdog test
wdog_test start...
wdtest_once 0 ns
wdtest_once 0 ns
wdtest_once 0 ns
wdtest_once 0 ns
wdtest_once 0 ns
wdtest_once 0 ns
wdtest_once 0 ns
wdtest_once 0 ns
wdtest_once 1 ns
wdtest_once 1 ns
wdtest_once 1 ns
wdtest_once 1 ns
wdtest_once 1 ns
wdtest_once 1 ns
wdtest_once 1 ns
wdtest_once 1 ns
wdtest_once 10 ns
wdtest_once 10 ns
wdtest_once 10 ns
wdtest_once 10 ns
wdtest_once 10 ns
wdtest_once 10 ns
wdtest_once 10 ns
wdtest_once 10 ns
wdtest_once 100 ns
wdtest_once 100 ns
wdtest_once 100 ns
wdtest_once 100 ns
wdtest_once 100 ns
wdtest_once 100 ns
wdtest_once 100 ns
wdtest_once 100 ns
wdtest_once 1000 ns
wdtest_once 1000 ns
wdtest_once 1000 ns
wdtest_once 1000 ns
wdtest_once 1000 ns
wdtest_once 1000 ns
wdtest_once 1000 ns
wdtest_once 1000 ns
wdtest_once 10000 ns
wdtest_once 10000 ns
wdtest_once 10000 ns
wdtest_once 10000 ns
wdtest_once 10000 ns
wdtest_once 10000 ns
wdtest_once 10000 ns
wdtest_once 10000 ns
wdtest_once 100000 ns
wdtest_once 100000 ns
wdtest_once 100000 ns
wdtest_once 100000 ns
wdtest_once 100000 ns
wdtest_once 100000 ns
wdtest_once 100000 ns
wdtest_once 100000 ns
wdtest_once 1000000 ns
wdtest_once 1000000 ns
wdtest_once 1000000 ns
wdtest_once 1000000 ns
wdtest_once 1000000 ns
wdtest_once 1000000 ns
wdtest_once 1000000 ns
wdtest_once 1000000 ns
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wdtest_recursive 1000000ns
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wdtest_recursive 1000000ns
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wdtest_recursive 1000000ns
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wdtest_recursive 1000000ns
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wdtest_recursive 1000000ns
wdtest_recursive 1000000ns
wdtest_recursive 1000000ns
wdtest_recursive 1000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
recursive wdog triggered 6 times, elapsed tick 12
recursive wdog triggered 6 times, elapsed tick 12
recursive wdog triggered 6 times, elapsed tick 12
recursive wdog triggered 6 times, elapsed tick 12
recursive wdog triggered 6 times, elapsed tick 12
recursive wdog triggered 6 times, elapsed tick 12
recursive wdog triggered 6 times, elapsed tick 12
wdog_test end...

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e964    3e964
ordblks         6        6
mxordblk    335a0    335a0
uordblks     52e4     52e4
fordblks    39680    39680

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: 95
rr_test: Starting second get_primes_thread
         Second get_primes_thread: 98
rr_test: Waiting for threads to complete -- this should take awhile
         If RR scheduling is working, they should start and complete at
         about the same time
get_primes_thread id=1 started, looking for primes < 30000, doing 10 run(s)
get_primes_thread id=2 started, looking for primes < 30000, doing 10 run(s)
get_primes_thread id=1 finished, found 3246 primes, last one was 29989
get_primes_thread id=2 finished, found 3246 primes, last one was 29989
rr_test: Done

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e964    3e964
ordblks         6        6
mxordblk    335a0    335a0
uordblks     52e4     52e4
fordblks    39680    39680

user_main: barrier test
barrier_test: Initializing barrier
barrier_test: Thread 0 created
barrier_func: Thread 0 started
barrier_test: Thread 1 created
barrier_func: Thread 1 started
barrier_test: Thread 2 created
barrier_func: Thread 2 started
barrier_test: Thread 3 created
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 )
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_test: Thread 3 completed with result=0
barrier_func: Thread 4 done
barrier_func: Thread 5 done
barrier_test: Thread 4 completed with result=0
barrier_test: Thread 5 completed with result=0
barrier_func: Thread 6 done
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       3e964    3e964
ordblks         6        6
mxordblk    335a0    335a0
uordblks     52e4     52e4
fordblks    39680    39680

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       3e964    3e964
ordblks         6        6
mxordblk    335a0    335a0
uordblks     52e4     52e4
fordblks    39680    39680

user_main: vfork() test
vfork_test: Child 119 ran successfully

user_main: smp call test
smp_call_test: Test start
smp_call_test: Call cpu 0, nowait
smp_call_test: Call cpu 0, wait
smp_call_test: Call cpu 1, nowait
smp_call_test: Call cpu 1, wait
smp_call_test: Call multi cpu, nowait
smp_call_test: Call in interrupt, wait
smp_call_test: Call multi cpu, wait
smp_call_test: Test success

Final memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e964    3e964
ordblks         1        6
mxordblk    3a000    335a0
uordblks     4964     52e4
fordblks    3a000    39680
user_main: Exiting
ostest_main: Exiting with status 0


raspberrypi-pico: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=4

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       3fb68    3fb68
ordblks         1        1
mxordblk    3b628    3b628
uordblks     4540     4540
fordblks    3b628    3b628

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       3fb68    3fb68
ordblks         1        1
mxordblk    3b628    3b628
uordblks     4540     4540
fordblks    3b628    3b628

user_main: libc tests

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3fb68    3fb68
ordblks         1        1
mxordblk    3b628    3b628
uordblks     4540     4540
fordblks    3b628    3b628
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       3fb68    3fb68
ordblks         1        2
mxordblk    3b628    3b628
uordblks     4540     4520
fordblks    3b628    3b648
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       3fb68    3fb68
ordblks         2        2
mxordblk    3b628    3b628
uordblks     4520     44a8
fordblks    3b648    3b6c0

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       3fb68    3fb68
ordblks         2        2
mxordblk    3b628    3b628
uordblks     44a8     44a8
fordblks    3b6c0    3b6c0

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       3fb68    3fb68
ordblks         2        2
mxordblk    3b628    3b628
uordblks     44a8     44a8
fordblks    3b6c0    3b6c0

user_main: task_restart test

Test task_restart()
restart_main: setenv(VarName, VarValue, TRUE)
restart_main: Started restart_main at PID=5
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=5
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       3fb68    3fb68
ordblks         2        2
mxordblk    3b628    3b628
uordblks     44a8     44e0
fordblks    3b6c0    3b688

user_main: waitpid test

Test waitpid()
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_start_child: Started waitpid_main at PID=8
waitpid_main: PID 8 Started
waitpid_test: Waiting for PID=6 with waitpid()
waitpid_main: PID 6 exitting with result=14
waitpid_test: PID 6 waitpid succeeded with stat_loc=0e00
waitpid_last: Waiting for PID=8 with waitpid()
waitpid_main: PID 7 exitting with result=14
waitpid_main: PID 8 exitting with result=14
waitpid_last: PASS: PID 8 waitpid succeeded with stat_loc=0e00

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3fb68    3fb68
ordblks         2        2
mxordblk    3b628    3b628
uordblks     44e0     44e0
fordblks    3b688    3b688

user_main: mutex test
Initializing mutex
Starting thread 1
Starting thread 2
                Thread1 Thread2
        Loops   32      32
        Errors  0       0

Testing moved mutex
Starting moved mutex thread 1
Starting moved mutex thread 2
                Thread1 Thread2
        Moved Loops     32      32
        Moved Errors    0       0

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3fb68    3fb68
ordblks         2        2
mxordblk    3b628    3b628
uordblks     44e0     44e0
fordblks    3b688    3b688

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       3fb68    3fb68
ordblks         2        2
mxordblk    3b628    3b628
uordblks     44e0     44e0
fordblks    3b688    3b688

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       3fb68    3fb68
ordblks         2        2
mxordblk    3b628    3b628
uordblks     44e0     44e0
fordblks    3b688    3b688

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       3fb68    3fb68
ordblks         2        2
mxordblk    3b628    3b628
uordblks     44e0     44e0
fordblks    3b688    3b688

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
sem_test: Starting waiter thread 2
waiter_func: Thread 1 initial semaphore value = 0
sem_test: Set thread 2 priority to 128
waiter_func: Thread 1 waiting on semaphore
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
poster_func: Thread 3 done
waiter_func: Thread 2 done

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3fb68    3fb68
ordblks         2        2
mxordblk    3b628    3b628
uordblks     44e0     44e0
fordblks    3b688    3b688

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: (1612828917 sec, 330000000 nsec)
AFTER:  (1612828919 sec, 330000000 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: (1612828919 sec, 330000000 nsec)
AFTER:  (1612828920 sec, 340000000 nsec)

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3fb68    3fb68
ordblks         2        2
mxordblk    3b628    3b628
uordblks     44e0     44e0
fordblks    3b688    3b688

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       3fb68    3fb68
ordblks         2        2
mxordblk    3b628    3b628
uordblks     44e0     44e0
fordblks    3b688    3b688

user_main: pthread_exit() test
pthread_exit_test: Started pthread_exit_main at PID=28
pthread_exit_main 28: Starting pthread_exit_thread
pthread_exit_main 28: Sleeping for 5 seconds
pthread_exit_thread 29: Sleeping for 10 second
pthread_exit_thread 29: Still running...
pthread_exit_main 28: Calling pthread_exit()

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3fb68    3fb68
ordblks         2        3
mxordblk    3b628    38c68
uordblks     44e0     4dc0
fordblks    3b688    3ada8

user_main: pthread_rwlock test
pthread_rwlock: Initializing rwlock
pthread_exit_thread 29: Exiting

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3fb68    3fb68
ordblks         3        2
mxordblk    38c68    3b628
uordblks     4dc0     44f0
fordblks    3ada8    3b678

user_main: pthread_rwlock_cancel test
pthread_rwlock_cancel: Starting test

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3fb68    3fb68
ordblks         2        2
mxordblk    3b628    3b628
uordblks     44f0     44f0
fordblks    3b678    3b678

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       3fb68    3fb68
ordblks         2        2
mxordblk    3b628    3b628
uordblks     44f0     44f0
fordblks    3b678    3b678

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       3fb68    3fb68
ordblks         2        3
mxordblk    3b628    39510
uordblks     44f0     4560
fordblks    3b678    3b608

user_main: sigprocmask test
sigprocmask_test: SUCCESS

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3fb68    3fb68
ordblks         3        3
mxordblk    39510    39510
uordblks     4560     4560
fordblks    3b608    3b608

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       3fb68    3fb68
ordblks         3        3
mxordblk    39510    39510
uordblks     4560     4560
fordblks    3b608    3b608

user_main: signal handler test
sighand_test: Initializing semaphore to 0
sighand_test: Starting waiter task
sighand_test: Started waiter_main pid=45
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=45 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       3fb68    3fb68
ordblks         3        2
mxordblk    39510    39510
uordblks     4560     4578
fordblks    3b608    3b5f0

user_main: nested signal handler test
signest_test: Starting signal waiter task at priority 101
waiter_main: Waiter started
signest_test: Started waiter_main pid=46
waiter_main: Setting signal mask
signest_test: Starting interfering task at priority 102
waiter_main: Registering signal handler
interfere_main: Waiting on semaphore
waiter_main: Waiting on semaphore
signest_test: Started interfere_main pid=47
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 interfering 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       3fb68    3fb68
ordblks         2        5
mxordblk    39510    36cc0
uordblks     4578     45d8
fordblks    3b5f0    3b590

user_main: spinlock test
Start Lock test:
Thread num: 1, Loop times: 10000000

Test type: spinlock
spinlock: Test Results:
spinlock: Final counter: 10000000
spinlock: Average throughput : 7352941 op/s
spinlock: Total execution time: 1360000000 ns
 
Test type: rspinlock
rspinlock: Test Results:
rspinlock: Final counter: 10000000
rspinlock: Average throughput : 7352941 op/s
rspinlock: Total execution time: 1360000000 ns
 
Test type: seqcount
seqcount: Test Results:
seqcount: Final counter: 10000000
seqcount: Average throughput : 5681818 op/s
seqcount: Total execution time: 1760000000 ns
 

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3fb68    3fb68
ordblks         5        5
mxordblk    36cc0    36cc0
uordblks     45d8     45d8
fordblks    3b590    3b590

user_main: wdog test
wdog_test start...
wdtest_once 0 ns
wdtest_once 0 ns
wdtest_once 0 ns
wdtest_once 0 ns
wdtest_once 1 ns
wdtest_once 1 ns
wdtest_once 1 ns
wdtest_once 1 ns
wdtest_once 10 ns
wdtest_once 10 ns
wdtest_once 10 ns
wdtest_once 10 ns
wdtest_once 100 ns
wdtest_once 100 ns
wdtest_once 100 ns
wdtest_once 100 ns
wdtest_once 1000 ns
wdtest_once 1000 ns
wdtest_once 1000 ns
wdtest_once 1000 ns
wdtest_once 10000 ns
wdtest_once 10000 ns
wdtest_once 10000 ns
wdtest_once 10000 ns
wdtest_once 100000 ns
wdtest_once 100000 ns
wdtest_once 100000 ns
wdtest_once 100000 ns
wdtest_once 1000000 ns
wdtest_once 1000000 ns
wdtest_once 1000000 ns
wdtest_once 1000000 ns
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wdtest_recursive 1000000ns
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wdtest_recursive 1000000ns
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wdtest_recursive 1000000ns
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wdtest_recursive 1000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
recursive wdog triggered 6 times, elapsed tick 12
recursive wdog triggered 6 times, elapsed tick 12
recursive wdog triggered 6 times, elapsed tick 12
wdog_test end...

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3fb68    3fb68
ordblks         5        5
mxordblk    36cc0    36cc0
uordblks     45d8     45d8
fordblks    3b590    3b590

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: 59
rr_test: Starting second get_primes_thread
         Second get_primes_thread: 60
rr_test: Waiting for threads to complete -- this should take awhile
         If RR scheduling is working, they should start and complete at
         about the same time
get_primes_thread id=1 started, looking for primes < 30000, doing 10 run(s)
get_primes_thread id=2 started, looking for primes < 30000, doing 10 run(s)
get_primes_thread id=1 finished, found 3246 primes, last one was 29989
get_primes_thread id=2 finished, found 3246 primes, last one was 29989
rr_test: Done

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3fb68    3fb68
ordblks         5        5
mxordblk    36cc0    36cc0
uordblks     45d8     45d8
fordblks    3b590    3b590

user_main: barrier test
barrier_test: Initializing barrier
barrier_test: Thread 0 created
barrier_func: Thread 0 started
barrier_test: Thread 1 created
barrier_func: Thread 1 started
barrier_test: Thread 2 created
barrier_func: Thread 2 started
barrier_test: Thread 3 created
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_test: Thread 3 completed with result=0
barrier_func: Thread 4 done
barrier_func: Thread 5 done
barrier_test: Thread 4 completed with result=0
barrier_test: Thread 5 completed with result=0
barrier_func: Thread 6 done
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       3fb68    3fb68
ordblks         5        5
mxordblk    36cc0    36cc0
uordblks     45d8     45d8
fordblks    3b590    3b590

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       3fb68    3fb68
ordblks         5        5
mxordblk    36cc0    36cc0
uordblks     45d8     45d8
fordblks    3b590    3b590

user_main: vfork() test
vfork_test: Child 77 ran successfully

Final memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3fb68    3fb68
ordblks         1        5
mxordblk    3b628    36cc0
uordblks     4540     45d8
fordblks    3b628    3b590
user_main: Exiting
ostest_main: Exiting with status 0
nsh>

raspberrypi-pico:usbnsh





NuttShell (NSH) NuttX-13.0.0
nsh> help
help usage:  help [-v] [<cmd>]

    .           cp          exit        mkrd        rmdir         set         
truncate    
    ?           dirname     false       mv          kill        uname       
    alias       date        fdinfo      pidof       pkill       umount      
 
    basename    dmesg       help        ps          usleep      uptime      
    break       echo        hexdump     pwd         source      watch       
    cat         env         ls          reboot      test        xd          
    cd          exec        mkdir       rm          time        wait        

Builtin Apps:
    dd          getprime    hello       nsh         ostest      sh          
nsh> ostest
stdio_test: write fd=1
stdio_test: Standard I/O Check: printf
rite fdstdio_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=4

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       3f960    3f960
ordblks         1        1
mxordblk    3a988    3a988
uordblks     4fd8     4fd8
fordblks    3a988    3a988

raspberrypi-pico:smp


nsh> ls
/:
 dev/
 proc/
nsh> help
help usage:  help [-v] [<cmd>]

    .           cp          exit        mkrd        rmdir       true        
    [           cmp         expr        mount       set         truncate    
    ?           dirname     false       mv          kill        uname       
    alias       date        fdinfo      pidof       pkill       umount      
    unalias     df          free        printf      sleep       unset       
    basename    dmesg       help        ps          usleep      uptime      
    break       echo        hexdump     pwd         source      watch       
    cat         env         ls          reboot      test        xd          
    cd          exec        mkdir       rm          time        wait        

Builtin Apps:
    dd          hello       ostest      smp         
    getprime    nsh         sh          taskset     
nsh> smp
  Main[0]: Running on CPU1
  Main[0]: Initializing barrier
  Main[0]: Thread 1 created
Thread[1]: Started
  Main[0]: Thread 2 created
Thread[2]: Started
Thread[1]: Running on CPU0
  Main[0]: Thread 3 created
Thread[3]: Started
Thread[2]: Running on CPU0
  Main[0]: Now running on CPU0
Thread[3]: Running on CPU0
  Main[0]: Thread 4 created
Thread[2]: Now running on CPU1
Thread[4]: Started
  Main[0]: Thread 5 created
Thread[5]: Started
Thread[4]: Running on CPU1
  Main[0]: Now running on CPU1
Thread[3]: Now running on CPU1
Thread[5]: Running on CPU0
Thread[2]: Now running on CPU0
  Main[0]: Thread 6 created
Thread[6]: Started
Thread[1]: Now running on CPU1
Thread[4]: Now running on CPU0
Thread[5]: Now running on CPU1
  Main[0]: Now running on CPU0
Thread[6]: Running on CPU1
Thread[2]: Now running on CPU1
Thread[3]: Now running on CPU0
Thread[1]: Now running on CPU0
  Main[0]: Thread 7 created
Thread[7]: Started
Thread[4]: Now running on CPU1
Thread[2]: Now running on CPU0
Thread[5]: Now running on CPU0
Thread[3]: Now running on CPU1
  Main[0]: Thread 8 created
Thread[7]: Running on CPU0
Thread[8]: Started
Thread[6]: Now running on CPU0
Thread[1]: Now running on CPU1
  Main[0]: Now running on CPU1
Thread[5]: Now running on CPU1
Thread[8]: Running on CPU1
Thread[7]: Now running on CPU1
Thread[2]: Now running on CPU1
Thread[3]: Now running on CPU0
Thread[4]: Now running on CPU0
Thread[1]: Now running on CPU0
Thread[5]: Now running on CPU0
Thread[8]: Now running on CPU0
Thread[6]: Now running on CPU1
Thread[7]: Now running on CPU0
Thread[3]: Now running on CPU1
Thread[1]: Now running on CPU1
Thread[2]: Now running on CPU0
Thread[4]: Now running on CPU1
Thread[5]: Now running on CPU1
Thread[2]: Calling pthread_barrier_wait()
Thread[3]: Now running on CPU0
Thread[7]: Now running on CPU1
Thread[1]: Calling pthread_barrier_wait()
Thread[8]: Now running on CPU1
Thread[6]: Now running on CPU0
Thread[3]: Calling pthread_barrier_wait()
Thread[4]: Now running on CPU0
Thread[7]: Now running on CPU0
Thread[5]: Now running on CPU0
Thread[2]: Now running on CPU1
Thread[4]: Calling pthread_barrier_wait()
Thread[8]: Now running on CPU0
Thread[7]: Now running on CPU1
Thread[5]: Now running on CPU1
Thread[6]: Now running on CPU1
Thread[6]: Calling pthread_barrier_wait()
Thread[7]: Now running on CPU0
Thread[4]: Now running on CPU1
Thread[5]: Calling pthread_barrier_wait()
Thread[7]: Now running on CPU1
Thread[8]: Calling pthread_barrier_wait()
Thread[7]: Calling pthread_barrier_wait()
Thread[1]: Back with ret=0 (I am not special)
Thread[7]: Back with ret=PTHREAD_BARRIER_SERIAL_THREAD (I AM SPECIAL)
Thread[2]: Back with ret=0 (I am not special)
Thread[3]: Back with ret=0 (I am not special)
Thread[4]: Back with ret=0 (I am not special)
Thread[6]: Back with ret=0 (I am not special)
Thread[5]: Back with ret=0 (I am not special)
Thread[8]: Back with ret=0 (I am not special)
Thread[1]: Now running on CPU0
Thread[2]: Now running on CPU0
Thread[7]: Now running on CPU0
Thread[6]: Now running on CPU0
Thread[4]: Now running on CPU0
Thread[3]: Now running on CPU1
Thread[8]: Now running on CPU1
Thread[2]: Now running on CPU1
Thread[1]: Now running on CPU1
Thread[7]: Now running on CPU1
Thread[4]: Now running on CPU1
Thread[3]: Now running on CPU0
Thread[5]: Now running on CPU0
Thread[8]: Now running on CPU0
Thread[6]: Now running on CPU1
Thread[4]: Now running on CPU0
Thread[7]: Now running on CPU0
Thread[1]: Now running on CPU0
Thread[2]: Now running on CPU0
Thread[5]: Now running on CPU1
Thread[6]: Now running on CPU0
Thread[8]: Now running on CPU1
Thread[4]: Now running on CPU1
Thread[3]: Now running on CPU1
Thread[2]: Now running on CPU1
Thread[5]: Now running on CPU0
Thread[7]: Now running on CPU1
Thread[4]: Now running on CPU0
Thread[3]: Now running on CPU0
Thread[1]: Now running on CPU1
Thread[2]: Now running on CPU0
Thread[8]: Now running on CPU0
Thread[5]: Now running on CPU1
Thread[6]: Now running on CPU1
Thread[2]: Now running on CPU1
Thread[7]: Now running on CPU0
Thread[8]: Now running on CPU1
Thread[3]: Now running on CPU1
Thread[1]: Now running on CPU0
Thread[6]: Now running on CPU0
Thread[4]: Now running on CPU1
Thread[2]: Now running on CPU0
Thread[7]: Now running on CPU1
Thread[5]: Done
Thread[3]: Done
Thread[1]: Now running on CPU1
Thread[6]: Done
Thread[4]: Now running on CPU0
Thread[8]: Done
Thread[7]: Now running on CPU0
Thread[1]: Done
Thread[4]: Done
Thread[5]: Now running on CPU0
Thread[3]: Now running on CPU0
Thread[7]: Done
Thread[8]: Now running on CPU0
Thread[1]: Now running on CPU0
  Main[0]: Now running on CPU0
  Main[0]: Thread 1 completed with result=0
Thread[2]: Now running on CPU1
Thread[2]: Done
  Main[0]: Thread 2 completed with result=0
  Main[0]: Thread 3 completed with result=0
  Main[0]: Thread 4 completed with result=0
  Main[0]: Thread 5 completed with result=0
  Main[0]: Thread 6 completed with result=0
  Main[0]: Thread 7 completed with result=0
  Main[0]: Thread 8 completed with result=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=14

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       3e8e4    3e8e4
ordblks         1        1
mxordblk    39f80    39f80
uordblks     4964     4964
fordblks    39f80    39f80

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       3e8e4    3e8e4
ordblks         1        1
mxordblk    39f80    39f80
uordblks     4964     4964
fordblks    39f80    39f80

user_main: libc tests

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e8e4    3e8e4
ordblks         1        1
mxordblk    39f80    39f80
uordblks     4964     4964
fordblks    39f80    39f80
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       3e8e4    3e8e4
ordblks         1        2
mxordblk    39f80    39f80
uordblks     4964     4944
fordblks    39f80    39fa0
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       3e8e4    3e8e4
ordblks         2        2
mxordblk    39f80    39f80
uordblks     4944     48cc
fordblks    39fa0    3a018

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       3e8e4    3e8e4
ordblks         2        2
mxordblk    39f80    39f80
uordblks     48cc     48cc
fordblks    3a018    3a018

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       3e8e4    3e8e4
ordblks         2        2
mxordblk    39f80    39f80
uordblks     48cc     48cc
fordblks    3a018    3a018

user_main: task_restart test

Test task_restart()
restart_main: setenv(VarName, VarValue, TRUE)
restart_main: Started with argc=4
restart_main: Started restart_main at PID=15
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 with argc=4
restart_main: Started restart_main at PID=15
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       3e8e4    3e8e4
ordblks         2        2
mxordblk    39f80    39f80
uordblks     48cc     4904
fordblks    3a018    39fe0

user_main: waitpid test

Test waitpid()
waitpid_main: PID 18 Started
waitpid_start_child: Started waitpid_main at PID=18
waitpid_main: PID 20 Started
waitpid_start_child: Started waitpid_main at PID=20
waitpid_main: PID 21 Started
waitpid_start_child: Started waitpid_main at PID=21
waitpid_test: Waiting for PID=18 with waitpid()
waitpid_main: PID 18 exitting with result=14
waitpid_main: PID 20 exitting with result=14
waitpid_main: PID 21 exitting with result=14
waitpid_test: PID 18 waitpid succeeded with stat_loc=0e00
waitpid_last: Waiting for PID=21 with waitpid()
waitpid_last: PASS: PID 21 waitpid failed with ECHILD.  That may be
              acceptable because child status is disabled on this thread.

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e8e4    3e8e4
ordblks         2        2
mxordblk    39f80    39f80
uordblks     4904     4904
fordblks    39fe0    39fe0

user_main: mutex test
Initializing mutex
Starting thread 1
Starting thread 2
                Thread1 Thread2
        Loops   32      32
        Errors  0       0

Testing moved mutex
Starting moved mutex thread 1
Starting moved mutex thread 2
                Thread1 Thread2
        Moved Loops     32      32
        Moved Errors    0       0

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e8e4    3e8e4
ordblks         2        2
mxordblk    39f80    37be0
uordblks     4904     6ca4
fordblks    39fe0    37c40

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       3e8e4    3e8e4
ordblks         2        2
mxordblk    37be0    37be0
uordblks     6ca4     6ca4
fordblks    37c40    37c40

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       3e8e4    3e8e4
ordblks         2        2
mxordblk    37be0    35af8
uordblks     6ca4     8d8c
fordblks    37c40    35b58

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       3e8e4    3e8e4
ordblks         2        2
mxordblk    35af8    35af8
uordblks     8d8c     8d8c
fordblks    35b58    35b58

user_main: semaphore test
sem_test: Initializing semaphore to 0
sem_test: Starting waiter thread 1
sem_test: Set thread 1 priority to 191
sem_test: Starting waiter thread 2
waiter_func: Thread 1 Started
sem_test: Set thread 2 priority to 128
waiter_func: Thread 1 initial semaphore value = 0
waiter_func: Thread 2 Started
waiter_func: Thread 1 waiting on semaphore
waiter_func: Thread 2 initial semaphore value = 0
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
poster_func: Thread 3 new semaphore value = -1
waiter_func: Thread 1 new semaphore value = -1
poster_func: Thread 3 semaphore value = -1
waiter_func: Thread 1 done
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
poster_func: Thread 3 done
waiter_func: Thread 2 done

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e8e4    3e8e4
ordblks         2        3
mxordblk    35af8    34040
uordblks     8d8c     51ec
fordblks    35b58    396f8

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: (1612828854 sec, 650000000 nsec)
AFTER:  (1612828856 sec, 650000000 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
poster_func: Waiting for 1 second
semtimed_test: Waiting for two second timeout
poster_func: Posting
semtimed_test: PASS: sem_timedwait succeeded
BEFORE: (1612828856 sec, 650000000 nsec)
AFTER:  (1612828857 sec, 660000000 nsec)

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e8e4    3e8e4
ordblks         3        3
mxordblk    34040    34040
uordblks     51ec     51ec
fordblks    396f8    396f8

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       3e8e4    3e8e4
ordblks         3        3
mxordblk    34040    34040
uordblks     51ec     51ec
fordblks    396f8    396f8

user_main: pthread_exit() test
pthread_exit_test: Started pthread_exit_main at PID=42
pthread_exit_main 42: Starting pthread_exit_thread
pthread_exit_main 42: Sleeping for 5 seconds
pthread_exit_thread 43: Sleeping for 10 second
pthread_exit_thread 43: Still running...
pthread_exit_main 42: Calling pthread_exit()

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e8e4    3e8e4
ordblks         3        2
mxordblk    34040    375b0
uordblks     51ec     72d4
fordblks    396f8    37610

user_main: pthread_rwlock test
pthread_rwlock: Initializing rwlock
pthread_exit_thread 43: Exiting

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e8e4    3e8e4
ordblks         2        2
mxordblk    375b0    39698
uordblks     72d4     51fc
fordblks    37610    396e8

user_main: pthread_rwlock_cancel test
pthread_rwlock_cancel: Starting test

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e8e4    3e8e4
ordblks         2        2
mxordblk    39698    39698
uordblks     51fc     51fc
fordblks    396e8    396e8

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
timedwait_test: Joining
thread_waiter: Taking mutex
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       3e8e4    3e8e4
ordblks         2        2
mxordblk    39698    39698
uordblks     51fc     51fc
fordblks    396e8    396e8

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       3e8e4    3e8e4
ordblks         2        2
mxordblk    39698    39f48
uordblks     51fc     4984
fordblks    396e8    39f60

user_main: sigprocmask test
sigprocmask_test: SUCCESS

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e8e4    3e8e4
ordblks         2        2
mxordblk    39f48    39f48
uordblks     4984     4984
fordblks    39f60    39f60

user_main: message queue test
mqueue_test: Starting receiver
mqueue_test: Set receiver priority to 128
mqueue_test: Starting sender
receiver_thread: Starting
mqueue_test: Set sender thread priority to 64
mqueue_test: Waiting for sender to complete
sender_thread: Starting
sender_thread: mq_send succeeded on msg 0
receiver_thread: mq_receive succeeded on msg 0
sender_thread: mq_send succeeded on msg 1
receiver_thread: mq_receive succeeded on msg 1
sender_thread: mq_send succeeded on msg 2
receiver_thread: mq_receive succeeded on msg 2
sender_thread: mq_send succeeded on msg 3
receiver_thread: mq_receive succeeded on msg 3
sender_thread: mq_send succeeded on msg 4
receiver_thread: mq_receive succeeded on msg 4
sender_thread: mq_send succeeded on msg 5
receiver_thread: mq_receive succeeded on msg 5
sender_thread: mq_send succeeded on msg 6
receiver_thread: mq_receive succeeded on msg 6
sender_thread: mq_send succeeded on msg 7
receiver_thread: mq_receive succeeded on msg 7
sender_thread: mq_send succeeded on msg 8
receiver_thread: mq_receive succeeded on msg 8
sender_thread: mq_send succeeded on msg 9
receiver_thread: mq_receive 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       3e8e4    3e8e4
ordblks         2        2
mxordblk    39f48    39f48
uordblks     4984     4984
fordblks    39f60    39f60

user_main: signal handler test
sighand_test: Initializing semaphore to 0
sighand_test: Starting waiter task
sighand_test: Started waiter_main pid=60
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=60 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       3e8e4    3e8e4
ordblks         2        1
mxordblk    39f48    37e60
uordblks     4984     6a84
fordblks    39f60    37e60

user_main: nested signal handler test
signest_test: Starting signal waiter task at priority 101
signest_test: Started waiter_main pid=63
waiter_main: Waiter started
signest_test: Starting interfering task at priority 102
waiter_main: Setting signal mask
interfere_main: Waiting on semaphore
waiter_main: Registering signal handler
signest_test: Started interfere_main pid=66
waiter_main: Waiting on semaphore
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 interfering 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       3e8e4    3e8e4
ordblks         1        5
mxordblk    37e60    33520
uordblks     6a84     6ae4
fordblks    37e60    37e00

user_main: spinlock test
Start Lock test:
Thread num: 1, Loop times: 10000000

Test type: spinlock
spinlock: Test Results:
spinlock: Final counter: 10000000
spinlock: Average throughput : 2118644 op/s
spinlock: Total execution time: 4720000000 ns
 
Test type: rspinlock
rspinlock: Test Results:
rspinlock: Final counter: 10000000
rspinlock: Average throughput : 806451 op/s
rspinlock: Total execution time: 12400000000 ns
 
Test type: seqcount
seqcount: Test Results:
seqcount: Final counter: 10000000
seqcount: Average throughput : 946969 op/s
seqcount: Total execution time: 10570000000 ns
 
Start Lock test:
Thread num: 2, Loop times: 10000000

Test type: spinlock
spinlock: Test Results:
spinlock: Final counter: 20000000
spinlock: Average throughput : 1100715 op/s
spinlock: Total execution time: 9090000000 ns
 
Test type: rspinlock
rspinlock: Test Results:
rspinlock: Final counter: 20000000
rspinlock: Average throughput : 740192 op/s
rspinlock: Total execution time: 13510000000 ns
 
Test type: seqcount
seqcount: Test Results:
seqcount: Final counter: 20000000
seqcount: Average throughput : 1890359 op/s
seqcount: Total execution time: 10580000000 ns
 

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e8e4    3e8e4
ordblks         5        5
mxordblk    33520    33520
uordblks     6ae4     52e4
fordblks    37e00    39600

user_main: wdog test
wdog_test start...
wdtest_once 0 ns
wdtest_once 0 ns
wdtest_once 0 ns
wdtest_once 0 ns
wdtest_once 0 ns
wdtest_once 0 ns
wdtest_once 0 ns
wdtest_once 0 ns
wdtest_once 1 ns
wdtest_once 1 ns
wdtest_once 1 ns
wdtest_once 1 ns
wdtest_once 1 ns
wdtest_once 1 ns
wdtest_once 1 ns
wdtest_once 1 ns
wdtest_once 10 ns
wdtest_once 10 ns
wdtest_once 10 ns
wdtest_once 10 ns
wdtest_once 10 ns
wdtest_once 10 ns
wdtest_once 10 ns
wdtest_once 10 ns
wdtest_once 100 ns
wdtest_once 100 ns
wdtest_once 100 ns
wdtest_once 100 ns
wdtest_once 100 ns
wdtest_once 100 ns
wdtest_once 100 ns
wdtest_once 100 ns
wdtest_once 1000 ns
wdtest_once 1000 ns
wdtest_once 1000 ns
wdtest_once 1000 ns
wdtest_once 1000 ns
wdtest_once 1000 ns
wdtest_once 1000 ns
wdtest_once 1000 ns
wdtest_once 10000 ns
wdtest_once 10000 ns
wdtest_once 10000 ns
wdtest_once 10000 ns
wdtest_once 10000 ns
wdtest_once 10000 ns
wdtest_once 10000 ns
wdtest_once 10000 ns
wdtest_once 100000 ns
wdtest_once 100000 ns
wdtest_once 100000 ns
wdtest_once 100000 ns
wdtest_once 100000 ns
wdtest_once 100000 ns
wdtest_once 100000 ns
wdtest_once 100000 ns
wdtest_once 1000000 ns
wdtest_once 1000000 ns
wdtest_once 1000000 ns
wdtest_once 1000000 ns
wdtest_once 1000000 ns
wdtest_once 1000000 ns
wdtest_once 1000000 ns
wdtest_once 1000000 ns
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wdtest_recursive 1000000ns
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wdtest_recursive 1000000ns
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wdtest_recursive 1000000ns
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wdtest_recursive 1000000ns
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wdtest_recursive 1000000ns
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wd_start with maximum delay, cancel OK, rest 2305843009213693949
wdtest_recursive 1000000ns
wdtest_recursive 1000000ns
wdtest_recursive 1000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
wdtest_recursive 10000000ns
recursive wdog triggered 6 times, elapsed tick 12
recursive wdog triggered 6 times, elapsed tick 12
recursive wdog triggered 6 times, elapsed tick 12
recursive wdog triggered 6 times, elapsed tick 12
recursive wdog triggered 6 times, elapsed tick 12
recursive wdog triggered 6 times, elapsed tick 12
recursive wdog triggered 6 times, elapsed tick 12
recursive wdog triggered 6 times, elapsed tick 12
wdog_test end...

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e8e4    3e8e4
ordblks         5        5
mxordblk    33520    33520
uordblks     52e4     52e4
fordblks    39600    39600

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: 90
rr_test: Starting second get_primes_thread
         Second get_primes_thread: 91
rr_test: Waiting for threads to complete -- this should take awhile
         If RR scheduling is working, they should start and complete at
         about the same time
get_primes_thread id=1 started, looking for primes < 30000, doing 10 run(s)
get_primes_thread id=2 started, looking for primes < 30000, doing 10 run(s)
get_primes_thread id=1 finished, found 3246 primes, last one was 29989
get_primes_thread id=2 finished, found 3246 primes, last one was 29989
rr_test: Done

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e8e4    3e8e4
ordblks         5        5
mxordblk    33520    33520
uordblks     52e4     52e4
fordblks    39600    39600

user_main: barrier test
barrier_test: Initializing barrier
barrier_test: Thread 0 created
barrier_test: Thread 1 created
barrier_test: Thread 2 created
barrier_test: Thread 3 created
barrier_test: Thread 4 created
barrier_test: Thread 5 created
barrier_func: Thread 0 started
barrier_func: Thread 1 started
barrier_func: Thread 2 started
barrier_func: Thread 3 started
barrier_func: Thread 4 started
barrier_func: Thread 5 started
barrier_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       3e8e4    3e8e4
ordblks         5        5
mxordblk    33520    33520
uordblks     52e4     52e4
fordblks    39600    39600

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       3e8e4    3e8e4
ordblks         5        5
mxordblk    33520    33520
uordblks     52e4     52e4
fordblks    39600    39600

user_main: vfork() test
vfork_test: Child 111 ran successfully

user_main: smp call test
smp_call_test: Test start
smp_call_test: Call cpu 0, nowait
smp_call_test: Call cpu 0, wait
smp_call_test: Call cpu 1, nowait
smp_call_test: Call cpu 1, wait
smp_call_test: Call multi cpu, nowait
smp_call_test: Call in interrupt, wait
smp_call_test: Call multi cpu, wait
smp_call_test: Test success

Final memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3e8e4    3e8e4
ordblks         1        5
mxordblk    39f80    33520
uordblks     4964     52e4
fordblks    39f80    39600
user_main: Exiting
ostest_main: Exiting with status 0
nsh>

seeed-xiao-rp2040:usbnsh





NuttShell (NSH) NuttX-13.0.0
nsh> help
help usage:  help [-v] [<cmd>]

    .           cp          exit        mkrd        rmdir         set         
truncate    
    ?           dirname     false       mv          kill        uname       

    unalias     df          free        printf      sleep        ps          
usleep      uptime      
    break       echo        hexdump     pwd         source      watch       
    cat         env         ls          reboot      test        xd          
    cd          exec        mkdir  wait        

Builtin Apps:
    dd          getprime    hello       nsh         ostest       
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=4

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:
  BEFORE   AFTER
======== ======== ========
arena       3f960    3f960
ordblks         1        1
mxordblk    3a988    3a988
uordblks     4fd8     4fd8
fordblks    3a988    3a988
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       3f960    3f960
ordblks         1        1
mxordblk    3a988    3a988
uordblks     4fd8     4fd8
fordblks    3a988    3a988

user_main: libc tests

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena       3f960    3f960
ordblks         1        1
mxordblk    3a988    3a988
uordblks     4fd8     4fd8
fordblks    3a988    3a988
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       3f960    3f960
ordblks         1        2
mxordblk    3a988    3a988
uordblks     4fd8     4fb8
fordblks    3a988    3a9a8
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:
EFORE   AFTER
======== ======== ========
arena       3f960    3f960
or  2
mxordblk    3a988    3a988
uordblks     4fb8     4f40
fordblks    3a9a8    3aa20

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       3f960    3f960
ordblks         2        2
mxordblk    3a988    3a988
uordblks     4f40     4f40
fordblks    3aa20    3aa20

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 ER
======== ======== ========
arena       3f960    3f960
ordblks         2        2
mxordblk    3a988    3a988
uordblks     4f40     4f40
fordblks    3aa20    3aa20

seeed-xiao-rp2040:userleds





NuttShell (NSH) NuttX-13.0.0
h> 
nsh> help
help usage:  help [-v] [<cmd>]

    .           cp          exit        mkrd        rmdir            expr       
 mount       set         truncate    
  uname       
idof       pkill       umount      
    unalias     df          free        printf      sleep       unset       
    basename    dmesg       help        ps          usleep      uptime      
    break       echo        hexdump     pwd         source      watch       
    cat         env         ls          reboot      test        xd          
    cd          exec        mkdir       rm          time        wait        

Builtin Apps:
    dd          hello       nsh         sh          
    getprime    leds        ostest      
nsh> 
nsh> leds -h
leds_main: Starting the led_daemon
leds_main: led_daemon started

led_daemon (pid# 4): Running
led_daemon: Opening /dev/userleds
led_daemon: Supported LEDs 0x07
led_daemon: LED set 0x01
nsh> led_daemon: LED set 0x02
led_daemon: LED set 0x03
led_daemon: LED set 0x04
led_daemon: LED set 0x05
led_daemon: LED set 0x06
led_daemon: LED set 0x07
led_daemon: LED set 0x06
led_daemon: LED set 0x05
led_daemon: LED set 0x04
led_daemon: LED set 0x03
led_daemon: LED set 0x02
led_daemon: LED set 0x01
led_daemon: LED set 0x00
led_daemon: LED set 0x01
led_daemon: LED set 0x02

nsh>

xiao-seeduino:nsh

help
help usage:  help [-v] [<cmd>]

    ?          cmp        exit       help       mkrd       uname      
    break      exec       false      hexdump    true       xd         

Builtin Apps:
    hello    nsh      sh       
nsh> hello
Hello, World!!
nsh>

-- 
Matteo Golin

Attachment: signature.asc
Description: PGP signature

Reply via email to