From 9cfc2f8f66638ef25bfb09d68cec00bd17bb187e Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Wed, 8 Apr 2015 09:05:48 -0600 Subject: Remove some carriage returns --- nuttx/configs/avr32dev1/ostest/test-result.txt | 808 ++++++++++----------- nuttx/configs/cc3200-launchpad/README.txt | 246 +++---- nuttx/configs/mcu123-lpc214x/lpc21isp-1.60.diff | 128 ++-- .../configs/olimex-strp711/scripts/oocd_ft2xx.cfg | 74 +- nuttx/configs/sama5d3x-ek/Using-NxPlayer.txt | 86 +-- 5 files changed, 671 insertions(+), 671 deletions(-) diff --git a/nuttx/configs/avr32dev1/ostest/test-result.txt b/nuttx/configs/avr32dev1/ostest/test-result.txt index 8fe09d12f..154a47482 100644 --- a/nuttx/configs/avr32dev1/ostest/test-result.txt +++ b/nuttx/configs/avr32dev1/ostest/test-result.txt @@ -1,404 +1,404 @@ -examples/ostest output as of November 4, 2010 -============================================= - -stdio_test: write fd=1 -stdio_test: write fd=2 -stdio_test: Standard I/O Check: printf -user_start: Started user_main at PID=2 -user_start: Exitting -stdio_test: Standard I/O Check: fprintf to stderr - -user_main: Begin argument test -user_main: Started with argc=5 -user_main: argv[0]="" -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 71a0 71a0 -ordblks 2 2 -mxordblk 4a80 4a80 -uordblks 1900 1900 -fordblks 58a0 58a0 - -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 71a0 71a0 -ordblks 2 2 -mxordblk 4a80 4a80 -uordblks 1900 1900 -fordblks 58a0 58a0 - -user_main: mutex test -Initializing mutex -Starting thread 1 -Starting thread 2 - Thread1 Thread2 - Loops 32 32 - Errors 0 0 - -End of test memory usage: -VARIABLE BEFORE AFTER -======== ======== ======== -arena 71a0 71a0 -ordblks 2 2 -mxordblk 4a80 4a80 -uordblks 1900 1900 -fordblks 58a0 58a0 - -user_main: cancel test -cancel_test: Test 1: Normal Cancelation -cancel_test: Starting thread -start_thread: Initializing mutex -start_thread: Initializing cond -start_thread: Starting thread -thread_waiter: Taking mutex -thread_waiter: Starting wait for condition -start_thread: Yielding -cancel_test: Canceling thread -cancel_test: Joining -cancel_test: waiter exited with result=ffffffff -cancel_test: PASS thread terminated with PTHREAD_CANCELED -cancel_test: Test 2: Cancelation 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 -thread_waiter: Taking mutex -thread_waiter: Starting wait for condition -start_thread: Yielding -cancel_test: Canceling thread -cancel_test: Joining -cancel_test: PASS pthread_join failed with status=ESRCH -cancel_test: Test 3: 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 -thread_waiter: Taking mutex -thread_waiter: Starting wait for condition -thread_waiter: Setting non-cancelable -start_thread: Yielding -cancel_test: Canceling thread -cancel_test: Joining -thread_waiter: Releasing mutex -thread_waiter: Setting cancelable -cancel_test: waiter exited with result=ffffffff -cancel_test: PASS thread terminated with PTHREAD_CANCELED - -End of test memory usage: -VARIABLE BEFORE AFTER -======== ======== ======== -arena 71a0 71a0 -ordblks 2 2 -mxordblk 4a80 4a80 -uordblks 1900 1900 -fordblks 58a0 58a0 - -user_main: semaphore test -sem_test: Initializing semaphore to 0 -sem_test: Starting waiter thread 1 -sem_test: Set thread 1 priority to 191 -waiter_func: Thread 1 Started -waiter_func: Thread 1 initial semaphore value = 0 -waiter_func: Thread 1 waiting on semaphore -sem_test: Starting waiter thread 2 -sem_test: Set thread 2 priority to 128 -waiter_func: Thread 2 Started -waiter_func: Thread 2 initial semaphore value = -1 -waiter_func: Thread 2 waiting on semaphore -sem_test: Starting poster thread 3 -sem_test: Set thread 3 priority to 64 -poster_func: Thread 3 started -poster_func: Thread 3 semaphore value = -2 -poster_func: Thread 3 posting semaphore -waiter_func: Thread 1 awakened -waiter_func: Thread 1 new semaphore value = -1 -waiter_func: Thread 1 done -poster_func: Thread 3 new semaphore value = -1 -poster_func: Thread 3 semaphore value = -1 -poster_func: Thread 3 posting semaphore -waiter_func: Thread 2 awakened -waiter_func: Thread 2 new semaphore value = 0 -waiter_func: Thread 2 done -poster_func: Thread 3 new semaphore value = 0 -poster_func: Thread 3 done - -End of test memory usage: -VARIABLE BEFORE AFTER -======== ======== ======== -arena 71a0 71a0 -ordblks 2 2 -mxordblk 4a80 4a80 -uordblks 1900 1900 -fordblks 58a0 58a0 - -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 71a0 71a0 -ordblks 2 2 -mxordblk 4a80 4a80 -uordblks 1900 1900 -fordblks 58a0 58a0 - -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 -thread_waiter: Starting 5 second wait for condition -timedwait_test: Joining -thread_waiter: pthread_cond_timedwait timed out -thread_waiter: Releasing mutex -thread_waiter: Exit with status 0x12345678 -timedwait_test: waiter exited with result=12345678 - -End of test memory usage: -VARIABLE BEFORE AFTER -======== ======== ======== -arena 71a0 71a0 -ordblks 2 2 -mxordblk 4a80 4a80 -uordblks 1900 1900 -fordblks 58a0 58a0 - -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 71a0 71a0 -ordblks 2 2 -mxordblk 4a80 4a80 -uordblks 1900 1900 -fordblks 58a0 58a0 - -user_main: timed message queue test -timedmqueue_test: Starting sender -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 -timedmqueue_test: Waiting for sender to complete -sender_thread: mq_timedsend 9 timed out as expected -sender_thread: returning nerrors=0 -timedmqueue_test: Starting receiver -receiver_thread: Starting -receiver_thread: mq_timedreceive succeeded on msg 0 -receiver_thread: mq_timedreceive succeeded on msg 1 -receiver_thread: mq_timedreceive succeeded on msg 2 -receiver_thread: mq_timedreceive succeeded on msg 3 -receiver_thread: mq_timedreceive succeeded on msg 4 -receiver_thread: mq_timedreceive succeeded on msg 5 -receiver_thread: mq_timedreceive succeeded on msg 6 -receiver_thread: mq_timedreceive succeeded on msg 7 -receiver_thread: mq_timedreceive succeeded on msg 8 -timedmqueue_test: Waiting for receiver to complete -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 71a0 71a0 -ordblks 2 2 -mxordblk 4a80 4a80 -uordblks 1900 1900 -fordblks 58a0 58a0 - -user_main: signal handler test -sighand_test: Initializing semaphore to 0 -sighand_test: Starting waiter task -sighand_test: Started waiter_main pid=20 -waiter_main: Waiter started -waiter_main: Unmasking signal 17 -waiter_main: Registering signal handler -waiter_main: oact.sigaction=0 oact.sa_flags=0 oact.sa_mask=0 -waiter_main: Waiting on semaphore -sighand_test: Signaling pid=20 with signo=17 sigvalue=42 -wakeup_action: Received signal 17 -wakeup_action: sival_int=42 -wakeup_action: si_code=1 -wakeup_action: ucontext=0 -waiter_main: sem_wait() successfully interrupted by signal -waiter_main: done -sighand_test: done - -End of test memory usage: -VARIABLE BEFORE AFTER -======== ======== ======== -arena 71a0 71a0 -ordblks 2 2 -mxordblk 4a80 4a80 -uordblks 1900 1900 -fordblks 58a0 58a0 - -user_main: POSIX timer test -timer_test: Initializing semaphore to 0 -timer_test: Unmasking signal 17 -timer_test: Registering signal handler -timer_test: oact.sigaction=0 oact.sa_flags=0 oact.sa_mask=0 -timer_test: Creating timer -timer_test: Starting timer -timer_test: Waiting on semaphore -timer_expiration: Received signal 17 -timer_expiration: sival_int=42 -timer_expiration: si_code=2 (SI_TIMER) -timer_expiration: ucontext=0 -timer_test: sem_wait() successfully interrupted by signal -timer_test: g_nsigreceived=1 -timer_test: Waiting on semaphore -timer_expiration: Received signal 17 -timer_expiration: sival_int=42 -timer_expiration: si_code=2 (SI_TIMER) -timer_expiration: ucontext=0 -timer_test: sem_wait() successfully interrupted by signal -timer_test: g_nsigreceived=2 -timer_test: Waiting on semaphore -timer_expiration: Received signal 17 -timer_expiration: sival_int=42 -timer_expiration: si_code=2 (SI_TIMER) -timer_expiration: ucontext=0 -timer_test: sem_wait() successfully interrupted by signal -timer_test: g_nsigreceived=3 -timer_test: Waiting on semaphore -timer_expiration: Received signal 17 -timer_expiration: sival_int=42 -timer_expiration: si_code=2 (SI_TIMER) -timer_expiration: ucontext=0 -timer_test: sem_wait() successfully interrupted by signal -timer_test: g_nsigreceived=4 -timer_test: Waiting on semaphore -timer_expiration: Received signal 17 -timer_expiration: sival_int=42 -timer_expiration: si_code=2 (SI_TIMER) -timer_expiration: ucontext=0 -timer_test: sem_wait() successfully interrupted by signal -timer_test: g_nsigreceived=5 -timer_test: Deleting timer -timer_test: done - -End of test memory usage: -VARIABLE BEFORE AFTER -======== ======== ======== -arena 71a0 71a0 -ordblks 2 2 -mxordblk 4a80 4a80 -uordblks 1900 1900 -fordblks 58a0 58a0 - -user_main: barrier test -barrier_test: Initializing barrier -barrier_func: Thread 0 started -barrier_test: Thread 0 created -barrier_func: Thread 1 started -barrier_test: Thread 1 created -barrier_func: Thread 2 started -barrier_test: Thread 2 created -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 2, 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 done -barrier_func: Thread 0 done -barrier_func: Thread 1 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 - -End of test memory usage: -VARIABLE BEFORE AFTER -======== ======== ======== -arena 71a0 71a0 -ordblks 2 2 -mxordblk 4a80 4a80 -uordblks 1900 1900 -fordblks 58a0 58a0 - -Final memory usage: -VARIABLE BEFORE AFTER -======== ======== ======== -arena 71a0 71a0 -ordblks 2 2 -mxordblk 4a80 4a80 -uordblks 1900 1900 -fordblks 58a0 58a0 -user_main: Exitting +examples/ostest output as of November 4, 2010 +============================================= + +stdio_test: write fd=1 +stdio_test: write fd=2 +stdio_test: Standard I/O Check: printf +user_start: Started user_main at PID=2 +user_start: Exitting +stdio_test: Standard I/O Check: fprintf to stderr + +user_main: Begin argument test +user_main: Started with argc=5 +user_main: argv[0]="" +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 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +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 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: mutex test +Initializing mutex +Starting thread 1 +Starting thread 2 + Thread1 Thread2 + Loops 32 32 + Errors 0 0 + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: cancel test +cancel_test: Test 1: Normal Cancelation +cancel_test: Starting thread +start_thread: Initializing mutex +start_thread: Initializing cond +start_thread: Starting thread +thread_waiter: Taking mutex +thread_waiter: Starting wait for condition +start_thread: Yielding +cancel_test: Canceling thread +cancel_test: Joining +cancel_test: waiter exited with result=ffffffff +cancel_test: PASS thread terminated with PTHREAD_CANCELED +cancel_test: Test 2: Cancelation 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 +thread_waiter: Taking mutex +thread_waiter: Starting wait for condition +start_thread: Yielding +cancel_test: Canceling thread +cancel_test: Joining +cancel_test: PASS pthread_join failed with status=ESRCH +cancel_test: Test 3: 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 +thread_waiter: Taking mutex +thread_waiter: Starting wait for condition +thread_waiter: Setting non-cancelable +start_thread: Yielding +cancel_test: Canceling thread +cancel_test: Joining +thread_waiter: Releasing mutex +thread_waiter: Setting cancelable +cancel_test: waiter exited with result=ffffffff +cancel_test: PASS thread terminated with PTHREAD_CANCELED + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: semaphore test +sem_test: Initializing semaphore to 0 +sem_test: Starting waiter thread 1 +sem_test: Set thread 1 priority to 191 +waiter_func: Thread 1 Started +waiter_func: Thread 1 initial semaphore value = 0 +waiter_func: Thread 1 waiting on semaphore +sem_test: Starting waiter thread 2 +sem_test: Set thread 2 priority to 128 +waiter_func: Thread 2 Started +waiter_func: Thread 2 initial semaphore value = -1 +waiter_func: Thread 2 waiting on semaphore +sem_test: Starting poster thread 3 +sem_test: Set thread 3 priority to 64 +poster_func: Thread 3 started +poster_func: Thread 3 semaphore value = -2 +poster_func: Thread 3 posting semaphore +waiter_func: Thread 1 awakened +waiter_func: Thread 1 new semaphore value = -1 +waiter_func: Thread 1 done +poster_func: Thread 3 new semaphore value = -1 +poster_func: Thread 3 semaphore value = -1 +poster_func: Thread 3 posting semaphore +waiter_func: Thread 2 awakened +waiter_func: Thread 2 new semaphore value = 0 +waiter_func: Thread 2 done +poster_func: Thread 3 new semaphore value = 0 +poster_func: Thread 3 done + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +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 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +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 +thread_waiter: Starting 5 second wait for condition +timedwait_test: Joining +thread_waiter: pthread_cond_timedwait timed out +thread_waiter: Releasing mutex +thread_waiter: Exit with status 0x12345678 +timedwait_test: waiter exited with result=12345678 + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +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 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: timed message queue test +timedmqueue_test: Starting sender +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 +timedmqueue_test: Waiting for sender to complete +sender_thread: mq_timedsend 9 timed out as expected +sender_thread: returning nerrors=0 +timedmqueue_test: Starting receiver +receiver_thread: Starting +receiver_thread: mq_timedreceive succeeded on msg 0 +receiver_thread: mq_timedreceive succeeded on msg 1 +receiver_thread: mq_timedreceive succeeded on msg 2 +receiver_thread: mq_timedreceive succeeded on msg 3 +receiver_thread: mq_timedreceive succeeded on msg 4 +receiver_thread: mq_timedreceive succeeded on msg 5 +receiver_thread: mq_timedreceive succeeded on msg 6 +receiver_thread: mq_timedreceive succeeded on msg 7 +receiver_thread: mq_timedreceive succeeded on msg 8 +timedmqueue_test: Waiting for receiver to complete +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 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: signal handler test +sighand_test: Initializing semaphore to 0 +sighand_test: Starting waiter task +sighand_test: Started waiter_main pid=20 +waiter_main: Waiter started +waiter_main: Unmasking signal 17 +waiter_main: Registering signal handler +waiter_main: oact.sigaction=0 oact.sa_flags=0 oact.sa_mask=0 +waiter_main: Waiting on semaphore +sighand_test: Signaling pid=20 with signo=17 sigvalue=42 +wakeup_action: Received signal 17 +wakeup_action: sival_int=42 +wakeup_action: si_code=1 +wakeup_action: ucontext=0 +waiter_main: sem_wait() successfully interrupted by signal +waiter_main: done +sighand_test: done + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: POSIX timer test +timer_test: Initializing semaphore to 0 +timer_test: Unmasking signal 17 +timer_test: Registering signal handler +timer_test: oact.sigaction=0 oact.sa_flags=0 oact.sa_mask=0 +timer_test: Creating timer +timer_test: Starting timer +timer_test: Waiting on semaphore +timer_expiration: Received signal 17 +timer_expiration: sival_int=42 +timer_expiration: si_code=2 (SI_TIMER) +timer_expiration: ucontext=0 +timer_test: sem_wait() successfully interrupted by signal +timer_test: g_nsigreceived=1 +timer_test: Waiting on semaphore +timer_expiration: Received signal 17 +timer_expiration: sival_int=42 +timer_expiration: si_code=2 (SI_TIMER) +timer_expiration: ucontext=0 +timer_test: sem_wait() successfully interrupted by signal +timer_test: g_nsigreceived=2 +timer_test: Waiting on semaphore +timer_expiration: Received signal 17 +timer_expiration: sival_int=42 +timer_expiration: si_code=2 (SI_TIMER) +timer_expiration: ucontext=0 +timer_test: sem_wait() successfully interrupted by signal +timer_test: g_nsigreceived=3 +timer_test: Waiting on semaphore +timer_expiration: Received signal 17 +timer_expiration: sival_int=42 +timer_expiration: si_code=2 (SI_TIMER) +timer_expiration: ucontext=0 +timer_test: sem_wait() successfully interrupted by signal +timer_test: g_nsigreceived=4 +timer_test: Waiting on semaphore +timer_expiration: Received signal 17 +timer_expiration: sival_int=42 +timer_expiration: si_code=2 (SI_TIMER) +timer_expiration: ucontext=0 +timer_test: sem_wait() successfully interrupted by signal +timer_test: g_nsigreceived=5 +timer_test: Deleting timer +timer_test: done + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: barrier test +barrier_test: Initializing barrier +barrier_func: Thread 0 started +barrier_test: Thread 0 created +barrier_func: Thread 1 started +barrier_test: Thread 1 created +barrier_func: Thread 2 started +barrier_test: Thread 2 created +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 2, 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 done +barrier_func: Thread 0 done +barrier_func: Thread 1 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 + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +Final memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 +user_main: Exitting diff --git a/nuttx/configs/cc3200-launchpad/README.txt b/nuttx/configs/cc3200-launchpad/README.txt index c6f6f595f..02d928f9d 100755 --- a/nuttx/configs/cc3200-launchpad/README.txt +++ b/nuttx/configs/cc3200-launchpad/README.txt @@ -1,123 +1,123 @@ -README -====== - - This is the README file for the port of NuttX to the TI CC3200 Launchpad. - -OpenOCD for Windows -=================== - - Get the CC3200 SDK - ------------------ - Get this from the TI web site. Also get "CC3200 SimpleLink™ Wi-Fi® and - IoT Solution With MCU LaunchPad™ Getting Started Guide" (SWRU376A) - - Get OpenOCD - ------------ - The OpenOCD project is here: http://openocd.sourceforge.net/ - - I use the pre-built binaries provided by Freddie Chopin that can b - downloaded here: http://www.freddiechopin.info/ - - I used version 0.8.0 which available here: - http://www.freddiechopin.info/en/articles/34-news/92-openocd-w-wersji-080 - - Other versions are available here: - http://www.freddiechopin.info/en/download/category/4-openocd - - Get Zadig - --------- - Unless you are very clever with Windows drivers, then I also recommend - that you download and install Zadig: http://zadig.akeo.ie/ - - Other Stuff - ----------- - USB Cable, your favorite serial terminal program, NuttX build with - one of the CC3200 configurations in this diretory. - - Installing - ---------- - Install the TI CC3200 SDK and OpenOCD. Zadig is just an binary so there - is no installation. Plug in the CC3200 via the USB cable. You should see - two new devices in the Windows Device Manager, both called: - - USB <-> JTAG/SWD - - There will be indications on the driver icon that no driver is installed. - - Follow the instructions in the paragraph "Install USB Driver" to install - the TI USB drivers. You need to do this twice, once for each device. Now - you will have two devices with different names: - - CC3200CP JTAG Port A, and - CC3200CP UART Port B - - OpenOCD cannot use the TI JTAG drivers. So we need to replace that port - (ONLY) with the libusb driver. Use Zadig to install the libusb driver - replacing the TI driver for "CC3200CP JTAG Port A". Now you should have - the following under "Ports (COM & LPT)": - - CC3200 UART Port B - - And under "Universal Serial Bus Devices", again: - - USB <-> JTAG/SWD - - But this time without the indication that a driver is needed. - - Starting OpenOCD - ---------------- - These instructions assume that (1) you are using a terminal with a Bash - shell under Cygwin, (2) that you installed OpenOCD at C:\openocd-0.8.0, - and (3) you are using a 64-bit windows version. You will need to make - minor changes if any of these are not true. - - The script to use with OpenOCD 0.8.0 is provided in - nuttx/configs/cc3200-launchpad/tools. Go there and start OpenOCd as - follow: - - $ cd configs/cc3200-launchpad/tools - $ /cygdrive/c/openocd-0.8.0/bin-x64/openocd-x64-0.8.0.exe --file cc3200.cfg - - And you should see something like: - - Open On-Chip Debugger 0.8.0 (2014-04-28-08:42) - Licensed under GNU GPL v2 - For bug reports, read - http://openocd.sourceforge.net/doc/doxygen/bugs.html - Info : only one transport option; autoselect 'jtag' - adapter speed: 1000 kHz - Info : clock speed 1000 kHz - Info : JTAG tap: cc3200.jrc tap/device found: 0x0b97c02f (mfg: 0x017, part: 0xb97c, ver: 0x0) - Info : JTAG tap: cc3200.dap enabled - Info : cc3200.cpu: hardware has 6 breakpoints, 4 watchpoints - - Open the Serial Terminal - ------------------------ - Connect the CC3200 board via the USB cabale. Open the serial terminal - program using the libusb COM device. For me this is usually COM6 but - could be anything. If you are unsure, remove the CC3200 and see which - one goes away. - - The serial interface should be configured 115200 8N1. - - Using GDB - --------- - Start GDB and connect to OpenOCD: - - $ arm-none-eabi-gdb - (gdb) target remote localhost:3333 - - Load and start the NuttX ELF file (nuttx): - - (gdb) mon reset halt - (gdb) load nuttx - (gdb) cont - (gdb) - - After entering cont(inue), you should see the NSH prompt in the serial - terminal window: - - C3200 init - - NuttShell (NSH) - nsh> +README +====== + + This is the README file for the port of NuttX to the TI CC3200 Launchpad. + +OpenOCD for Windows +=================== + + Get the CC3200 SDK + ------------------ + Get this from the TI web site. Also get "CC3200 SimpleLink™ Wi-Fi® and + IoT Solution With MCU LaunchPad™ Getting Started Guide" (SWRU376A) + + Get OpenOCD + ------------ + The OpenOCD project is here: http://openocd.sourceforge.net/ + + I use the pre-built binaries provided by Freddie Chopin that can b + downloaded here: http://www.freddiechopin.info/ + + I used version 0.8.0 which available here: + http://www.freddiechopin.info/en/articles/34-news/92-openocd-w-wersji-080 + + Other versions are available here: + http://www.freddiechopin.info/en/download/category/4-openocd + + Get Zadig + --------- + Unless you are very clever with Windows drivers, then I also recommend + that you download and install Zadig: http://zadig.akeo.ie/ + + Other Stuff + ----------- + USB Cable, your favorite serial terminal program, NuttX build with + one of the CC3200 configurations in this diretory. + + Installing + ---------- + Install the TI CC3200 SDK and OpenOCD. Zadig is just an binary so there + is no installation. Plug in the CC3200 via the USB cable. You should see + two new devices in the Windows Device Manager, both called: + + USB <-> JTAG/SWD + + There will be indications on the driver icon that no driver is installed. + + Follow the instructions in the paragraph "Install USB Driver" to install + the TI USB drivers. You need to do this twice, once for each device. Now + you will have two devices with different names: + + CC3200CP JTAG Port A, and + CC3200CP UART Port B + + OpenOCD cannot use the TI JTAG drivers. So we need to replace that port + (ONLY) with the libusb driver. Use Zadig to install the libusb driver + replacing the TI driver for "CC3200CP JTAG Port A". Now you should have + the following under "Ports (COM & LPT)": + + CC3200 UART Port B + + And under "Universal Serial Bus Devices", again: + + USB <-> JTAG/SWD + + But this time without the indication that a driver is needed. + + Starting OpenOCD + ---------------- + These instructions assume that (1) you are using a terminal with a Bash + shell under Cygwin, (2) that you installed OpenOCD at C:\openocd-0.8.0, + and (3) you are using a 64-bit windows version. You will need to make + minor changes if any of these are not true. + + The script to use with OpenOCD 0.8.0 is provided in + nuttx/configs/cc3200-launchpad/tools. Go there and start OpenOCd as + follow: + + $ cd configs/cc3200-launchpad/tools + $ /cygdrive/c/openocd-0.8.0/bin-x64/openocd-x64-0.8.0.exe --file cc3200.cfg + + And you should see something like: + + Open On-Chip Debugger 0.8.0 (2014-04-28-08:42) + Licensed under GNU GPL v2 + For bug reports, read + http://openocd.sourceforge.net/doc/doxygen/bugs.html + Info : only one transport option; autoselect 'jtag' + adapter speed: 1000 kHz + Info : clock speed 1000 kHz + Info : JTAG tap: cc3200.jrc tap/device found: 0x0b97c02f (mfg: 0x017, part: 0xb97c, ver: 0x0) + Info : JTAG tap: cc3200.dap enabled + Info : cc3200.cpu: hardware has 6 breakpoints, 4 watchpoints + + Open the Serial Terminal + ------------------------ + Connect the CC3200 board via the USB cabale. Open the serial terminal + program using the libusb COM device. For me this is usually COM6 but + could be anything. If you are unsure, remove the CC3200 and see which + one goes away. + + The serial interface should be configured 115200 8N1. + + Using GDB + --------- + Start GDB and connect to OpenOCD: + + $ arm-none-eabi-gdb + (gdb) target remote localhost:3333 + + Load and start the NuttX ELF file (nuttx): + + (gdb) mon reset halt + (gdb) load nuttx + (gdb) cont + (gdb) + + After entering cont(inue), you should see the NSH prompt in the serial + terminal window: + + C3200 init + + NuttShell (NSH) + nsh> diff --git a/nuttx/configs/mcu123-lpc214x/lpc21isp-1.60.diff b/nuttx/configs/mcu123-lpc214x/lpc21isp-1.60.diff index 277b21921..998ed321d 100644 --- a/nuttx/configs/mcu123-lpc214x/lpc21isp-1.60.diff +++ b/nuttx/configs/mcu123-lpc214x/lpc21isp-1.60.diff @@ -2,82 +2,82 @@ diff -rub lpc21isp-1.60/lpc21isp.c lpc21isp-Linux//lpc21isp.c --- lpc21isp-1.60/lpc21isp.c 2008-07-21 15:17:06.000000000 -0600 +++ lpc21isp-Linux//lpc21isp.c 2008-09-16 09:21:20.000000000 -0600 @@ -22,6 +22,7 @@ - #include "adprog.h" - #include "lpcprog.h" - #include "lpcterm.h" -+#include "errno.h" - - /* - Change-History: + #include "adprog.h" + #include "lpcprog.h" + #include "lpcterm.h" ++#include "errno.h" + + /* + Change-History: @@ -319,10 +320,7 @@ - - if (IspEnvironment->fdCom < 0) - { -- int* p_err = __error(); -- int err; -- if (p_err) { err = *p_err; } -- DebugPrintf(1, "Can't open COM-Port %s ! (Error: %dd (0x%X))\n", IspEnvironment->serial_port, err, err); -+ DebugPrintf(1, "Can't open COM-Port %s ! (Error: %dd (0x%X))\n", IspEnvironment->serial_port, errno, errno); - exit(2); - } - + + if (IspEnvironment->fdCom < 0) + { +- int* p_err = __error(); +- int err; +- if (p_err) { err = *p_err; } +- DebugPrintf(1, "Can't open COM-Port %s ! (Error: %dd (0x%X))\n", IspEnvironment->serial_port, err, err); ++ DebugPrintf(1, "Can't open COM-Port %s ! (Error: %dd (0x%X))\n", IspEnvironment->serial_port, errno, errno); + exit(2); + } + diff -rub lpc21isp-1.60/lpc21isp.h lpc21isp-Linux//lpc21isp.h --- lpc21isp-1.60/lpc21isp.h 2008-05-10 17:35:00.000000000 -0600 +++ lpc21isp-Linux//lpc21isp.h 2008-09-16 09:18:42.000000000 -0600 @@ -165,6 +165,7 @@ - #endif - - unsigned serial_timeout_count; /**< Local used to track timeouts on serial port read. */ -+ unsigned char DoNotStart; /* Do not start Code if this is set*/ - - } ISP_ENVIRONMENT; - + #endif + + unsigned serial_timeout_count; /**< Local used to track timeouts on serial port read. */ ++ unsigned char DoNotStart; /* Do not start Code if this is set*/ + + } ISP_ENVIRONMENT; + @@ -173,7 +174,6 @@ - #define DebugPrintf(in, ...) - - #else --extern int debug_level; - - #if defined INTEGRATED_IN_WIN_APP - + #define DebugPrintf(in, ...) + + #else +-extern int debug_level; + + #if defined INTEGRATED_IN_WIN_APP + @@ -191,7 +191,6 @@ - - #else - void DebugPrintf(int level, const char *fmt, ...); --//#define DebugPrintf(level, ...) if (level <= debug_level) { TRACE( __VA_ARGS__ ); } - #endif - - void ClearSerialPortBuffers(ISP_ENVIRONMENT *IspEnvironment); + + #else + void DebugPrintf(int level, const char *fmt, ...); +-//#define DebugPrintf(level, ...) if (level <= debug_level) { TRACE( __VA_ARGS__ ); } + #endif + + void ClearSerialPortBuffers(ISP_ENVIRONMENT *IspEnvironment); diff -rub lpc21isp-1.60/lpcprog.c lpc21isp-Linux//lpcprog.c --- lpc21isp-1.60/lpcprog.c 2008-07-21 14:39:50.000000000 -0600 +++ lpc21isp-Linux//lpcprog.c 2008-09-16 08:52:46.000000000 -0600 @@ -1062,15 +1062,16 @@ - } - else - { -+ if (IspEnvironment->DoNotStart == 0) -+ { - DebugPrintf(2, "Now launching the brand new code\n"); - fflush(stdout); -- - if (IspEnvironment->HalfDuplex == 0) - sprintf(tmpString, "G %ld A\r\n", IspEnvironment->StartAddress); - else - sprintf(tmpString, "G %ld A\n", IspEnvironment->StartAddress); -- - SendComPort(IspEnvironment, tmpString); //goto 0 : run this fresh new downloaded code code -+ - if (IspEnvironment->BinaryOffset < LPC_RAMSTART) - { // Skip response on G command - show response on Terminal instead - ReceiveComPort(IspEnvironment, Answer, sizeof(Answer)-1, &realsize, 2, 5000); + } + else + { ++ if (IspEnvironment->DoNotStart == 0) ++ { + DebugPrintf(2, "Now launching the brand new code\n"); + fflush(stdout); +- + if (IspEnvironment->HalfDuplex == 0) + sprintf(tmpString, "G %ld A\r\n", IspEnvironment->StartAddress); + else + sprintf(tmpString, "G %ld A\n", IspEnvironment->StartAddress); +- + SendComPort(IspEnvironment, tmpString); //goto 0 : run this fresh new downloaded code code ++ + if (IspEnvironment->BinaryOffset < LPC_RAMSTART) + { // Skip response on G command - show response on Terminal instead + ReceiveComPort(IspEnvironment, Answer, sizeof(Answer)-1, &realsize, 2, 5000); @@ -1099,6 +1100,7 @@ - return (FAILED_RUN + GetAndReportErrorNumber(Answer)); - } - } -+ } - - fflush(stdout); - } + return (FAILED_RUN + GetAndReportErrorNumber(Answer)); + } + } ++ } + + fflush(stdout); + } Only in lpc21isp-Linux/: lpcprog.c.orig diff -rub lpc21isp-1.60/Makefile lpc21isp-Linux//Makefile --- lpc21isp-1.60/Makefile 2008-04-07 00:23:00.000000000 -0600 diff --git a/nuttx/configs/olimex-strp711/scripts/oocd_ft2xx.cfg b/nuttx/configs/olimex-strp711/scripts/oocd_ft2xx.cfg index a5c027bff..395da86b8 100755 --- a/nuttx/configs/olimex-strp711/scripts/oocd_ft2xx.cfg +++ b/nuttx/configs/olimex-strp711/scripts/oocd_ft2xx.cfg @@ -1,37 +1,37 @@ -#daemon configuration -telnet_port 4444 -gdb_port 3333 - -#interface -interface ft2232 -ft2232_device_desc "Olimex OpenOCD JTAG A" -ft2232_layout "olimex-jtag" -ft2232_vid_pid 0x15BA 0x0003 -jtag_speed 0 - -#use combined on interfaces or targets that can't set TRST/SRST separately -reset_config trst_and_srst srst_pulls_trst - -#jtag scan chain -#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE) -jtag_device 4 0x1 0xf 0xe - -#target configuration -daemon_startup reset - -#target -#target arm7tdmi -target arm7tdmi little run_and_halt 0 arm7tdmi -run_and_halt_time 0 30 - -working_area 0 0x2000C000 0x4000 nobackup - -#flash bank -flash bank str7x 0x40000000 0x00040000 0 0 0 STR71x -#flash bank cfi 0x60000000 0x00400000 2 2 0 - -#Script used for FLASH programming -#target_script 0 reset str71x_flashprogram.ocd - -# For more information about the configuration files, take a look at: -# http://openfacts.berlios.de/index-en.phtml?title=Open+On-Chip+Debugger +#daemon configuration +telnet_port 4444 +gdb_port 3333 + +#interface +interface ft2232 +ft2232_device_desc "Olimex OpenOCD JTAG A" +ft2232_layout "olimex-jtag" +ft2232_vid_pid 0x15BA 0x0003 +jtag_speed 0 + +#use combined on interfaces or targets that can't set TRST/SRST separately +reset_config trst_and_srst srst_pulls_trst + +#jtag scan chain +#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE) +jtag_device 4 0x1 0xf 0xe + +#target configuration +daemon_startup reset + +#target +#target arm7tdmi +target arm7tdmi little run_and_halt 0 arm7tdmi +run_and_halt_time 0 30 + +working_area 0 0x2000C000 0x4000 nobackup + +#flash bank +flash bank str7x 0x40000000 0x00040000 0 0 0 STR71x +#flash bank cfi 0x60000000 0x00400000 2 2 0 + +#Script used for FLASH programming +#target_script 0 reset str71x_flashprogram.ocd + +# For more information about the configuration files, take a look at: +# http://openfacts.berlios.de/index-en.phtml?title=Open+On-Chip+Debugger diff --git a/nuttx/configs/sama5d3x-ek/Using-NxPlayer.txt b/nuttx/configs/sama5d3x-ek/Using-NxPlayer.txt index de5168a32..22ce45a3b 100755 --- a/nuttx/configs/sama5d3x-ek/Using-NxPlayer.txt +++ b/nuttx/configs/sama5d3x-ek/Using-NxPlayer.txt @@ -1,43 +1,43 @@ -Using the Binaries: -================== - -Prequisites: -=========== - -1. SAMA5D3x-EK board and power supply -2. RS-232 NUL modem cable -3. A full size SD card. This should be older style SD or SDHC cards. Some - of the newest very high capacity cards will not work. -4. The WAV file jsbach16.wav -5. The NuttX HEX binary, nuttx.hex, .bin or .elf. - -Procedure: - -1. Put the WAV file jsbach16.wav on the SD card - -2. Place the SD card in the full size SD slot on the motherboard. - -3. Use SAM-BA to copy the NuttX binary to NOR flash - -4. Set the boot jumper to boot from NOR FLASH - -5. NSH shouls start - - NuttShell (NSH) NuttX-7.3 - nsh> - -6. Mount the SD card at /music - - nsh> mount -t vfat /dev/mmcsd0 /music - -7. Star the NxPlayer and select the pcm0 device - - nsh> nxplayer - NxPlayer version 1.04 - h for commands, q to exit - - nxplayer> device pcm0 - -8. And play the WAV file - - nxplayer> play jsbach16.wav +Using the Binaries: +================== + +Prequisites: +=========== + +1. SAMA5D3x-EK board and power supply +2. RS-232 NUL modem cable +3. A full size SD card. This should be older style SD or SDHC cards. Some + of the newest very high capacity cards will not work. +4. The WAV file jsbach16.wav +5. The NuttX HEX binary, nuttx.hex, .bin or .elf. + +Procedure: + +1. Put the WAV file jsbach16.wav on the SD card + +2. Place the SD card in the full size SD slot on the motherboard. + +3. Use SAM-BA to copy the NuttX binary to NOR flash + +4. Set the boot jumper to boot from NOR FLASH + +5. NSH shouls start + + NuttShell (NSH) NuttX-7.3 + nsh> + +6. Mount the SD card at /music + + nsh> mount -t vfat /dev/mmcsd0 /music + +7. Star the NxPlayer and select the pcm0 device + + nsh> nxplayer + NxPlayer version 1.04 + h for commands, q to exit + + nxplayer> device pcm0 + +8. And play the WAV file + + nxplayer> play jsbach16.wav -- cgit v1.2.3