Table of Contents

eCos tests

eCos provides testing facility which can automaticky test your design for features which you turn on. Here page provides the test results.

Building tests

Test results

tests/compat/posix/v2_0/tests/tm_basic

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

tests/compat/posix/v2_0/tests/sigsetjmp

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>

tests/compat/posix/v2_0/tests/timer1

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>

tests/compat/posix/v2_0/tests/signal3

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>

tests/compat/posix/v2_0/tests/signal2

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>