diff options
-rw-r--r-- | testsuites/ChangeLog | 7 | ||||
-rw-r--r-- | testsuites/support/include/test_support.h | 25 | ||||
-rw-r--r-- | testsuites/support/src/tmtests_empty_function.c | 7 | ||||
-rw-r--r-- | testsuites/support/src/tmtests_support.c | 53 |
4 files changed, 92 insertions, 0 deletions
diff --git a/testsuites/ChangeLog b/testsuites/ChangeLog index b1621506b9..66162fbb3d 100644 --- a/testsuites/ChangeLog +++ b/testsuites/ChangeLog @@ -1,3 +1,10 @@ +2010-06-21 Joel Sherrill <joel.sherrill@oarcorp.com> + + * support/include/test_support.h, support/src/tmtests_empty_function.c: + Add helper so it is easier to write a basic repeated operation + tmtest. + * support/src/tmtests_support.c: New file. + 2010-06-17 Ralf Corsépius <ralf.corsepius@rtems.org> * configure.ac: Remove itron. diff --git a/testsuites/support/include/test_support.h b/testsuites/support/include/test_support.h index b7f4aa281a..cbb2c4de55 100644 --- a/testsuites/support/include/test_support.h +++ b/testsuites/support/include/test_support.h @@ -46,6 +46,31 @@ void rtems_test_spin_for_ticks(int ticks); */ void rtems_test_spin_until_next_tick( void ); +/*********************************************************************/ +/*********************************************************************/ +/************** TMTEST SUPPORT **************/ +/*********************************************************************/ +/*********************************************************************/ + +/* + * Type of method used for timing operations + */ +typedef void (*rtems_time_test_method_t)( + int iteration, + void *argument +); + +/* + * Obtain baseline timing information for benchmark tests. + */ +void rtems_time_test_measure_operation( + const char *description, + rtems_time_test_method_t operation, + void *argument, + int iterations, + int overhead +); + #ifdef __cplusplus }; #endif diff --git a/testsuites/support/src/tmtests_empty_function.c b/testsuites/support/src/tmtests_empty_function.c index c8ed245bb1..17ac5bf39c 100644 --- a/testsuites/support/src/tmtests_empty_function.c +++ b/testsuites/support/src/tmtests_empty_function.c @@ -20,3 +20,10 @@ rtems_status_code benchmark_timer_empty_function( void ) { return RTEMS_SUCCESSFUL; } + +void benchmark_timer_empty_operation( + int iteration, + void *argument +) +{ +} diff --git a/testsuites/support/src/tmtests_support.c b/testsuites/support/src/tmtests_support.c new file mode 100644 index 0000000000..350b35c85c --- /dev/null +++ b/testsuites/support/src/tmtests_support.c @@ -0,0 +1,53 @@ +/* + * COPYRIGHT (c) 1989-2010. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#include <bsp.h> +#include <rtems/timerdrv.h> +#include "test_support.h" +#include "timesys.h" + +extern void benchmark_timer_empty_operation( + int iteration, + void *argument +); + +void rtems_time_test_measure_operation( + const char *description, + rtems_time_test_method_t operation, + void *argument, + int iterations, + int overhead +) +{ + int i; + int loop_overhead; + int end_time; + + benchmark_timer_initialize(); + for (i=0 ; i<iterations ; i++ ) { + benchmark_timer_empty_operation( i, argument ); + } + loop_overhead = benchmark_timer_read(); + + benchmark_timer_initialize(); + for (i=0 ; i<iterations ; i++ ) { + (*operation)( i, argument ); + } + end_time = benchmark_timer_read(); + + put_time( + description, + end_time, + iterations, + loop_overhead, + overhead + ); +} |