[rtems commit] sptests: Add get_one_tick_busy_value()

Sebastian Huber sebh at rtems.org
Wed Dec 3 10:20:32 UTC 2014


Module:    rtems
Branch:    master
Commit:    0104056056a3946d17e1d000f24b64acc0ac99d1
Changeset: http://git.rtems.org/rtems/commit/?id=0104056056a3946d17e1d000f24b64acc0ac99d1

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Wed Dec  3 11:14:42 2014 +0100

sptests: Add get_one_tick_busy_value()

Extract this function from
interrupt_critical_section_test_support_initialize().

---

 .../sptests/spintrcritical_support/intrcritical.c  | 67 ++++++++++++----------
 1 file changed, 38 insertions(+), 29 deletions(-)

diff --git a/testsuites/sptests/spintrcritical_support/intrcritical.c b/testsuites/sptests/spintrcritical_support/intrcritical.c
index dec308f..7cea9ad 100644
--- a/testsuites/sptests/spintrcritical_support/intrcritical.c
+++ b/testsuites/sptests/spintrcritical_support/intrcritical.c
@@ -67,25 +67,7 @@ static __attribute__( ( noinline ) ) void busy( rtems_interval max )
   } while ( i < max );
 }
 
-static bool interrupt_critical_busy_wait( void )
-{
-  rtems_interval max = interrupt_critical.maximum_current;
-  bool reset = max <= interrupt_critical.minimum;
-
-  if ( reset ) {
-    interrupt_critical.maximum_current = interrupt_critical.maximum;
-  } else {
-    interrupt_critical.maximum_current = max - 1;
-  }
-
-  busy( max );
-
-  return reset;
-}
-
-void interrupt_critical_section_test_support_initialize(
-  rtems_timer_service_routine_entry tsr
-)
+static rtems_interval get_one_tick_busy_value( void )
 {
   rtems_interval last;
   rtems_interval now;
@@ -93,16 +75,6 @@ void interrupt_critical_section_test_support_initialize(
   rtems_interval b;
   rtems_interval m;
 
-  interrupt_critical.tsr = tsr;
-
-  if ( tsr != NULL && interrupt_critical.timer == 0 ) {
-    rtems_status_code sc = rtems_timer_create(
-      INTERRUPT_CRITICAL_NAME,
-      &interrupt_critical.timer
-    );
-    rtems_test_assert( sc == RTEMS_SUCCESSFUL );
-  }
-
   /* Choose a lower bound */
   a = 1;
 
@@ -139,6 +111,43 @@ void interrupt_critical_section_test_support_initialize(
     }
   } while ( b - a > 1 );
 
+  return m;
+}
+
+static bool interrupt_critical_busy_wait( void )
+{
+  rtems_interval max = interrupt_critical.maximum_current;
+  bool reset = max <= interrupt_critical.minimum;
+
+  if ( reset ) {
+    interrupt_critical.maximum_current = interrupt_critical.maximum;
+  } else {
+    interrupt_critical.maximum_current = max - 1;
+  }
+
+  busy( max );
+
+  return reset;
+}
+
+void interrupt_critical_section_test_support_initialize(
+  rtems_timer_service_routine_entry tsr
+)
+{
+  rtems_interval m;
+
+  interrupt_critical.tsr = tsr;
+
+  if ( tsr != NULL && interrupt_critical.timer == 0 ) {
+    rtems_status_code sc = rtems_timer_create(
+      INTERRUPT_CRITICAL_NAME,
+      &interrupt_critical.timer
+    );
+    rtems_test_assert( sc == RTEMS_SUCCESSFUL );
+  }
+
+  m = get_one_tick_busy_value();
+
   interrupt_critical.minimum = 0;
   interrupt_critical.maximum = m;
   interrupt_critical.maximum_current = m;




More information about the vc mailing list