diff --git a/testsuites/sptests/ChangeLog b/testsuites/sptests/ChangeLog index a4a736719f..dc9c5dfc4e 100644 --- a/testsuites/sptests/ChangeLog +++ b/testsuites/sptests/ChangeLog @@ -1,3 +1,10 @@ +2009-07-20 Joel Sherrill + + * spintrcritical_support/intrcritical.c, + spintrcritical_support/intrcritical.h: Change prototype of delay + method to indicate when counter is reset. This can be used to count + how many iterations we are doing. + 2009-07-19 Joel Sherrill * Makefile.am, configure.ac: Add sp60 to exercise case where a task is diff --git a/testsuites/sptests/spintrcritical_support/intrcritical.c b/testsuites/sptests/spintrcritical_support/intrcritical.c index 63d1b12654..7d1d3ecb0c 100644 --- a/testsuites/sptests/spintrcritical_support/intrcritical.c +++ b/testsuites/sptests/spintrcritical_support/intrcritical.c @@ -57,10 +57,11 @@ void interrupt_critical_section_test_support_initialize( #endif } -void interrupt_critical_section_test_support_delay(void) +bool interrupt_critical_section_test_support_delay(void) { uint32_t counter; Watchdog_Interval initial; + bool retval; if (TSR) { rtems_status_code rc; @@ -72,8 +73,12 @@ void interrupt_critical_section_test_support_delay(void) /* * Count down */ - if ( !Maximum_current ) + if ( !Maximum_current ) { Maximum_current = Maximum; + retval = true; + } else + retval = false; + initial = _Watchdog_Ticks_since_boot; for (counter=Maximum_current ; counter ; counter--) if ( initial != _Watchdog_Ticks_since_boot ) @@ -84,4 +89,5 @@ void interrupt_critical_section_test_support_delay(void) /* * Return so the test can try to generate the condition */ + return retval; } diff --git a/testsuites/sptests/spintrcritical_support/intrcritical.h b/testsuites/sptests/spintrcritical_support/intrcritical.h index 4b523a656d..fb0f2ed26f 100644 --- a/testsuites/sptests/spintrcritical_support/intrcritical.h +++ b/testsuites/sptests/spintrcritical_support/intrcritical.h @@ -21,6 +21,15 @@ void interrupt_critical_section_test_support_initialize( rtems_timer_service_routine (*tsr)( rtems_id, void * ) ); -void interrupt_critical_section_test_support_delay(void); +/** + * @brief Delay Test Support + * + * This method delays a varying amount of time each call. + * + * @return This method returns true each time the delay counter has + * to be reset. + */ +bool interrupt_critical_section_test_support_delay(void); + #endif