diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-07-31 11:56:55 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-07-31 15:09:04 +0200 |
commit | f20275db90d3e2b37508894c0a312c0a5c6a7bba (patch) | |
tree | b3a19fe62f468499d36964c6386cd07f015b5754 | |
parent | tmtests/tm26: Fixes for RTEMS_DEBUG (diff) | |
download | rtems-f20275db90d3e2b37508894c0a312c0a5c6a7bba.tar.bz2 |
sptests/sp37: Improved interrupt lock tests
-rw-r--r-- | testsuites/sptests/sp37/init.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/testsuites/sptests/sp37/init.c b/testsuites/sptests/sp37/init.c index 862493cd44..0ae0b2118b 100644 --- a/testsuites/sptests/sp37/init.c +++ b/testsuites/sptests/sp37/init.c @@ -44,17 +44,35 @@ rtems_timer_service_routine test_isr_in_progress( /* test bodies */ +static rtems_mode get_interrupt_level( void ) +{ + rtems_status_code sc; + rtems_mode mode; + + sc = rtems_task_mode( RTEMS_CURRENT_MODE, RTEMS_CURRENT_MODE, &mode ); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); + + return mode & RTEMS_INTERRUPT_MASK; +} + static void test_interrupt_locks( void ) { - rtems_interrupt_lock lock = RTEMS_INTERRUPT_LOCK_INITIALIZER; + rtems_mode normal_interrupt_level = get_interrupt_level(); + rtems_interrupt_lock initialized = RTEMS_INTERRUPT_LOCK_INITIALIZER; + rtems_interrupt_lock lock; rtems_interrupt_level level; rtems_interrupt_lock_initialize( &lock ); + rtems_test_assert( memcmp( &lock, &initialized, sizeof( lock ) ) == 0 ); rtems_interrupt_lock_acquire( &lock, level ); + rtems_test_assert( normal_interrupt_level != get_interrupt_level() ); rtems_interrupt_lock_release( &lock, level ); + rtems_test_assert( normal_interrupt_level == get_interrupt_level() ); + rtems_interrupt_lock_acquire_isr( &lock ); + rtems_test_assert( normal_interrupt_level == get_interrupt_level() ); rtems_interrupt_lock_release_isr( &lock ); } @@ -210,6 +228,8 @@ rtems_task Init( puts( "\n\n*** TEST 37 ***" ); + test_interrupt_locks(); + build_time( &time, 12, 31, 1988, 9, 0, 0, 0 ); status = rtems_clock_set( &time ); directive_failed( status, "rtems_clock_set" ); @@ -337,8 +357,6 @@ rtems_task Init( check_isr_worked( "body", isr_in_progress_body ); - test_interrupt_locks(); - puts( "*** END OF TEST 37 ***" ); rtems_test_exit( 0 ); } |