From 0104056056a3946d17e1d000f24b64acc0ac99d1 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 3 Dec 2014 11:14:42 +0100 Subject: 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 dec308fc31..7cea9adeb8 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; -- cgit v1.2.3