eCos provides testing facility which can automaticky test your design for features which you turn on. Here page provides the test results.
*_install/tests foldereCos Kernel Timings
Notes: all times are in microseconds (.000001) unless otherwise stated
Reading the hardware clock takes 32 'ticks' overhead
... this value will be factored out of all other measurements
Clock interrupt took 122.96 microseconds (6148 raw clock ticks)
Testing parameters:
Clock samples: 32
Threads: 16
Thread switches: 128
Mutexes: 32
Mailboxes: 32
Semaphores: 32
Scheduler operations: 128
Timers: 32
Confidence
Ave Min Max Var Ave Min Function
====== ====== ====== ====== ========== ========
81.72 76.20 135.02 6.66 93% 93% Create thread
5.80 5.44 10.02 0.55 93% 87% Yield thread [all lower priority]
33.21 29.98 66.12 4.11 93% 93% Set priority
19.09 17.30 38.06 2.37 93% 93% Get priority
50.70 42.34 81.32 5.75 75% 43% Join exited thread
5.13 4.80 8.82 0.51 93% 87% Yield [no other] thread
27.74 26.20 41.78 1.75 93% 93% Cancel [running] thread
63.16 54.62 94.48 6.31 68% 50% Join [cancelled] thread
929.66 879.90 1156.46 63.53 81% 81% Create [high priority] thread
14.70 14.38 24.36 0.20 96% 50% Thread switch
1.58 1.42 6.54 0.31 96% 96% Init mutex
4.72 4.08 13.56 0.71 96% 75% Lock [unlocked] mutex
4.35 4.00 10.42 0.43 96% 71% Unlock [locked] mutex
5.02 4.58 13.80 0.56 96% 93% Trylock [unlocked] mutex
0.56 0.36 2.76 0.26 90% 65% Trylock [locked] mutex
0.79 0.66 4.22 0.24 93% 93% Destroy mutex
47.22 46.74 48.18 0.26 46% 28% Unlock/Lock mutex
0.64 0.52 4.22 0.22 96% 96% Init semaphore
4.49 4.02 11.78 0.47 53% 87% Post [0] semaphore
7.68 7.24 15.20 0.57 96% 87% Wait [1] semaphore
4.21 3.94 10.14 0.42 96% 87% Trywait [0] semaphore
3.81 3.66 7.18 0.23 96% 93% Trywait [1] semaphore
0.59 0.46 3.28 0.23 87% 87% Get value of semaphore
4.14 3.90 8.22 0.31 96% 87% Destroy semaphore
57.00 56.42 64.88 0.56 87% 87% Post/Wait semaphore
20.47 19.40 37.80 1.16 96% 90% Create timer
23.25 22.26 42.76 1.22 96% 96% Initialize timer to zero
260.92 259.44 279.06 1.29 84% 78% Initialize timer to 1.25 sec
28.50 27.60 45.60 1.09 96% 93% Disable timer
19.84 19.10 33.86 0.99 93% 90% Delete timer
293.40 285.78 467.92 10.94 95% 95% Timer latency [0 threads]
317.38 300.22 488.56 11.40 74% 45% Timer latency [2 threads]
326.31 304.78 489.00 12.73 76% 39% Timer latency [many threads]
85629.72 394.90 669.02 0.00 0% 2% Timer -> thread post latency
All done : Idlethread stack used 728 size 3612
Timing complete - 35780 ms total
PASS:<Basic timing OK>
EXIT:<done>
INFO:<Main: calling sem_waiINFO:<Thread 1 running> INFO:<Thread1: INFO:<Thread 2 running> INFO:<Thread2:t()> INFO:<Main: calling sem_wait() againcalling sigsetjmp()> INFO:<Thread1: cal calling sigsetjmp()> INFO:<Thread2: c> INFO:<Main: calling pthread_join(threadling pause()> alling pause()> 1)> INFO:<Thread1: pause() returned> INFO:<INFO:<sigusr2() handler called> INFO:<sThread1: calling sigsetjmp()> INFO:<Thigusr2() handler calling siglongjmp()> read1: calling pause()> INFO:<Thread2: sigsetjINFO:<sigusr2() handler called> INFO:<sigusr2() handler calling siglongjmp()> INFO:<Thread2: sigsetjmp() returned non-zero> INFO:<Thread2: calling pause()> INFO:<Thread1: pause() returned> INFO:<Thread1: calling sigsetjmp()> INFO:<Thread1: calling pause()> INFO:<Thread2: pause() returned> INFO:<Thread2: calling sigsetjmp()> INFO:<Thread2: calling pause()> INFO:<sigusr1() handler INFO:<sigusr2() handler called> INFO:<sigusr2() handler calling siglongjmp()> INFO:<Thread2: sigsetjmp() returned non-zero> INFO:<Thread2: calling pause()> called> INFO:<sigusr1() handler calling siglongjmp()> INFO:<Thread1: sigsetjmp() returned non-zero> INFO:<Thread1: calling pthread_exit()> INFO:<Main: calling pthread_join(threadINFO:<sigusr2() handler called> INFO:<sigusr2() handler calling siglongjmp()> INFO:<Thread2: sigsetjmp() returned non-zero> INFO:<Thread2: calling pause()> 2)> INFO:<sigusr2() handler called> INFO:<sigusr2() handler calling siglongjmp()> INFO:<Thread2: sigsetjmp() returned non-zero> INFO:<Thread2: calling pause()> INFO:<sigusr2() handler called> INFO:<sigusr2() handler calling siglongjmp()> INFO:<Thread2: sigsetjmp() returned non-zero> INFO:<Thread2: calling pthread_exit()> INFO:<Main: calling timer_delete(timer1)> INFO:<Main: calling timer_delete(timer2)> PASS:<sigsetjmp> EXIT:<done>
INFO:<Main: calling sem_waiINFO:<Thread 1 running> INFO:<Thread1: calINFO:<Thread 2 running> INFO:<Thread2: cat()> ling pause()>alling sem_wait() again> lling pause()> INFO:<Main: calling pthread_join(thread1)> INFO:<Thread1: calling pause()> INFO:<sigusr2() handler called> INFINFO:<Thread1: calling pause()> O:<Thread2: calling pause()> INFO:<Thread1: calling pause()> INFO:<sigusr2() handler called> INFINFO:<Thread1: calling pause()> O:<Thread2: calling pause()> INFO:<sigusr1() handler called> INFO:<ThreINFO:<sigusr2() handler called> INFO:<Thread1: calling pthread_exit()> ad2: calling pause()> INFO:<Main: calling pthread_join(thread2)> INFO:<sigusr2() handler called> INFO:<Thread2: calling pause()> INFO:<sigusr2() handler called> INFO:<Thread2: calling pause()> INFO:<sigusr2() handler called> INFO:<Thread2: calling pthread_exit()> INFO:<Main: calling timer_delete(timer1)> INFO:<Main: calling timer_delete(timer2)> PASS:<timer1> EXIT:<done>
INFO:<Main: calling sem_waiINFO:<Thread 1 running> INFO:<Thread1: calINFO:<Thread 2 running> INFO:<Thread2: cat()> ling pause()>alling sem_wait() again> lling pause()> INFO:<Main: calling pthread_join(thread1)> INFO:<Thread1: calling pause()> INFO:<sigusr2() handler called> INFINFO:<Thread1: calling pause()> O:<Thread2: calling pause()> INFO:<Thread1: calling pause()> INFO:<sigusr2() handler called> INFINFO:<Thread1: calling pause()> O:<Thread2: calling pause()> INFO:<sigusr1() handler called> INFO:<ThreINFO:<sigusr2() handler called> INFO:<Thread1: calling pthread_exit()> ad2: calling pause()> INFO:<Main: calling pthread_join(thread2)> INFO:<sigusr2() handler called> INFO:<Thread2: calling pause()> INFO:<sigusr2() handler called> INFO:<Thread2: calling pause()> INFO:<sigusr2() handler called> INFO:<Thread2: calling pthread_exit()> INFO:<Main: calling timer_delete(timer1)> INFO:<Main: calling timer_delete(timer2)> PASS:<timer1> EXIT:<done>
INFO:<Main: calling sem_waiINFO:<Thread 1 running> INFO:<Thread1: calINFO:<Thread 2 running> INFO:<Thread2: cat()> ling pause()>alling sem_wait() again> lling pause()> INFO:<Main: calling pthread_join(thread1)> INFO:<Thread1: calling pause()> INFO:<sigusr2() handler called> INFINFO:<Thread1: calling pause()> O:<Thread2: calling pause()> INFO:<Thread1: calling pause()> INFO:<sigusr2() handler called> INFINFO:<Thread1: calling pause()> O:<Thread2: calling pause()> INFO:<sigusr1() handler called> INFO:<ThreINFO:<sigusr2() handler called> INFO:<Thread1: calling pthread_exit()> ad2: calling pause()> INFO:<Main: calling pthread_join(thread2)> INFO:<sigusr2() handler called> INFO:<Thread2: calling pause()> INFO:<sigusr2() handler called> INFO:<Thread2: calling pause()> INFO:<sigusr2() handler called> INFO:<Thread2: calling pthread_exit()> INFO:<Main: calling timer_delete(timer1)> INFO:<Main: calling timer_delete(timer2)> PASS:<timer1> EXIT:<done>