summaryrefslogtreecommitdiffstats
path: root/testsuites/support
diff options
context:
space:
mode:
authorGlenn Humphrey <glenn.humphrey@oarcorp.com>2009-12-08 21:39:21 +0000
committerGlenn Humphrey <glenn.humphrey@oarcorp.com>2009-12-08 21:39:21 +0000
commit6cc1c294d691aafb73ce46c1d4f6e0b4e55ff073 (patch)
treecbc9e6dcd0e76ef087e91109717971e3d44801da /testsuites/support
parent2009-12-08 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-6cc1c294d691aafb73ce46c1d4f6e0b4e55ff073.tar.bz2
2009-12-08 Glenn Humphrey <glenn.humphrey@OARcorp.com>
* support/include/test_support.h, support/include/tmacros.h, support/src/test_support.c: Added support functions to spin for a number of ticks and to spin until the next tick. * support/src/spin.c: New file.
Diffstat (limited to 'testsuites/support')
-rw-r--r--testsuites/support/include/test_support.h39
-rw-r--r--testsuites/support/include/tmacros.h8
-rw-r--r--testsuites/support/src/spin.c46
-rw-r--r--testsuites/support/src/test_support.c10
4 files changed, 87 insertions, 16 deletions
diff --git a/testsuites/support/include/test_support.h b/testsuites/support/include/test_support.h
index d3fd472a99..b7f4aa281a 100644
--- a/testsuites/support/include/test_support.h
+++ b/testsuites/support/include/test_support.h
@@ -1,5 +1,10 @@
/*
- * Support routines for test code.
+ * COPYRIGHT (c) 1989-2009.
+ * 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$
*/
@@ -11,9 +16,35 @@
extern "C" {
#endif
-extern void Allocate_majority_of_workspace( int smallest );
-extern const char *Get_Too_Long_Name(void);
-extern const char *Get_Longest_Name(void);
+/*
+ * Allocate a number of small blocks from the heap
+ * until the largest free block of memory available is
+ * smaller than smallest.
+ *
+ * NOTE: The memory CANNOT be freed.
+ */
+void Allocate_majority_of_workspace( int smallest );
+
+/*
+ * Return a pointer to the POSIX name that is slightly
+ * beyond the legal limit.
+ */
+const char *Get_Too_Long_Name(void);
+
+/*
+ * Return a pointer to the longest legal POSIX name.
+ */
+const char *Get_Longest_Name(void);
+
+/*
+ * Spin for specified number of ticks.
+ */
+void rtems_test_spin_for_ticks(int ticks);
+
+/*
+ * Spin until the next clock tick
+ */
+void rtems_test_spin_until_next_tick( void );
#ifdef __cplusplus
};
diff --git a/testsuites/support/include/tmacros.h b/testsuites/support/include/tmacros.h
index 4a4f525040..960c20f14a 100644
--- a/testsuites/support/include/tmacros.h
+++ b/testsuites/support/include/tmacros.h
@@ -45,12 +45,13 @@ extern "C" {
* Check that that the dispatch disable level is proper for the
* mode/state of the test. Normally it should be 0 when in task space.
*/
-
#define check_dispatch_disable_level( _expect ) \
do { \
if ( (_expect) != -1 && _Thread_Dispatch_disable_level != (_expect) ) { \
- printf( "\n_Thread_Dispatch_disable_level is (%" PRId32 ") not %d\n", \
- _Thread_Dispatch_disable_level, (_expect) ); \
+ printk( \
+ "\n_Thread_Dispatch_disable_level is (%" PRId32 \
+ ") not %d detected at %s:%d\n", \
+ _Thread_Dispatch_disable_level, (_expect), __FILE__, __LINE__ ); \
FLUSH_OUTPUT(); \
rtems_test_exit( 1 ); \
} \
@@ -59,7 +60,6 @@ extern "C" {
/*
* These macros properly report errors within the Classic API
*/
-
#define directive_failed( _dirstat, _failmsg ) \
fatal_directive_status( _dirstat, RTEMS_SUCCESSFUL, _failmsg )
diff --git a/testsuites/support/src/spin.c b/testsuites/support/src/spin.c
new file mode 100644
index 0000000000..a3a73d1f5f
--- /dev/null
+++ b/testsuites/support/src/spin.c
@@ -0,0 +1,46 @@
+/*
+ * COPYRIGHT (c) 1989-2009.
+ * 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 <rtems.h>
+
+/*
+ * Burn CPU for specified number of ticks
+ */
+void rtems_test_spin_for_ticks(int ticks)
+{
+ rtems_interval start;
+ rtems_interval now;
+
+ start = rtems_clock_get_ticks_since_boot();
+ do {
+ now = rtems_clock_get_ticks_since_boot();
+ /*
+ * Spin for <= ticks so we spin >= number of ticks.
+ * The first tick we spin through is a partial one.
+ * So you sping "ticks" number of ticks plus a partial
+ * one.
+ */
+ } while ( (now-start) <= ticks );
+}
+
+/*
+ * Spin until the next clock tick
+ */
+void rtems_test_spin_until_next_tick( void )
+{
+ rtems_interval start;
+ rtems_interval now;
+
+ start = rtems_clock_get_ticks_since_boot();
+ do {
+ now = rtems_clock_get_ticks_since_boot();
+ } while ( now != start );
+}
diff --git a/testsuites/support/src/test_support.c b/testsuites/support/src/test_support.c
index 6596561c3c..e71700aec4 100644
--- a/testsuites/support/src/test_support.c
+++ b/testsuites/support/src/test_support.c
@@ -1,11 +1,5 @@
-/* long_name
- *
- * This set of routines is create names that are the maximum length or one over
- * the maximum length.
- *
- * Output parameters: constant character string of max length or max length + 1
- *
- * COPYRIGHT (c) 1989-2008.
+/*
+ * COPYRIGHT (c) 1989-2009.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be