summaryrefslogtreecommitdiffstats
path: root/testsuites/support
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2010-06-21 16:54:17 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2010-06-21 16:54:17 +0000
commit82fbd358baf0ace0ecfc76cbbdb49505470b8402 (patch)
tree3431c21cb640d8cb452566bef273f9fcfb2452d7 /testsuites/support
parent2010-06-21 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-82fbd358baf0ace0ecfc76cbbdb49505470b8402.tar.bz2
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.
Diffstat (limited to 'testsuites/support')
-rw-r--r--testsuites/support/include/test_support.h25
-rw-r--r--testsuites/support/src/tmtests_empty_function.c7
-rw-r--r--testsuites/support/src/tmtests_support.c53
3 files changed, 85 insertions, 0 deletions
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
+ );
+}