diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2002-01-29 18:20:59 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2002-01-29 18:20:59 +0000 |
commit | ef70d9b652e75326f534d7e66bb3e0bcc55b3b58 (patch) | |
tree | b924708ca07655b2f7e8da8e740314c121b723eb /testsuites/sptests/sp31/task1.c | |
parent | 2002-01-29 Joel Sherrill <joel@OARcorp.com> (diff) | |
download | rtems-ef70d9b652e75326f534d7e66bb3e0bcc55b3b58.tar.bz2 |
2001-01-29 Joel Sherrill <joel@OARcorp.com>
* Fixed bug where resetting a timer that was not at the head
of one of the task timer chains resulted in the Timer Server
task waking up too far in the future.
* Added rtems_timer_get_information() directive to support testing.
* sp31/init.c, sp31/system.h, sp31/task1.c: Modified to test for
above condition.
Diffstat (limited to '')
-rw-r--r-- | testsuites/sptests/sp31/task1.c | 74 |
1 files changed, 71 insertions, 3 deletions
diff --git a/testsuites/sptests/sp31/task1.c b/testsuites/sptests/sp31/task1.c index f66f0f2aa5..2e21b15dce 100644 --- a/testsuites/sptests/sp31/task1.c +++ b/testsuites/sptests/sp31/task1.c @@ -24,9 +24,11 @@ rtems_task Task_1( rtems_task_argument argument ) { - rtems_id tmid; - rtems_time_of_day time; - rtems_status_code status; + rtems_id tmid; + rtems_id tmid2; + rtems_time_of_day time; + rtems_status_code status; + rtems_timer_information info; /* Get id */ @@ -35,6 +37,72 @@ rtems_task Task_1( directive_failed( status, "rtems_timer_ident" ); printf( "TA1 - timer 1 has id (0x%x)\n", tmid ); + puts( "TA1 - rtems_timer_ident - identing timer 2" ); + status = rtems_timer_ident( Timer_name[ 2 ], &tmid2 ); + directive_failed( status, "rtems_timer_ident" ); + printf( "TA1 - timer 2 has id (0x%x)\n", tmid2 ); + +/* now check that rescheduling an active timer works OK. */ + puts( "TA1 - rtems_timer_server_fire_after - timer 1 in 30 seconds" ); + status = rtems_timer_server_fire_after( + tmid, 30 * TICKS_PER_SECOND, Delayed_resume, NULL ); + directive_failed( status, "rtems_timer_server_fire_after" ); + + puts( "TA1 - rtems_timer_server_fire_after - timer 2 in 60 seconds" ); + status = rtems_timer_server_fire_after( + tmid2, 60 * TICKS_PER_SECOND, Delayed_resume, NULL ); + directive_failed( status, "rtems_timer_server_fire_after" ); + + status = rtems_timer_get_information( tmid, &info ); + printf( "Timer 1 scheduled for %d ticks since boot\n", + info.start_time + info.initial ); + printf( "Timer Server scheduled for %d ticks since boot\n", + _Timer_Server->Timer.initial + _Timer_Server->Timer.start_time ); + + puts( "TA1 - rtems_task_wake_after - 1 second" ); + status = rtems_task_wake_after( 1 * TICKS_PER_SECOND ); + directive_failed( status, "rtems_timer_wake_after" ); + + puts( "TA1 - rtems_timer_server_fire_after - timer 2 in 60 seconds" ); + status = rtems_timer_server_fire_after( + tmid2, 60 * TICKS_PER_SECOND, Delayed_resume, NULL ); + directive_failed( status, "rtems_timer_server_fire_after" ); + + status = rtems_timer_get_information( tmid, &info ); + directive_failed( status, "rtems_timer_get_information" ); + printf( "Timer 1 scheduled for %d ticks since boot\n", + info.start_time + info.initial ); + printf( "Timer Server scheduled for %d ticks since boot\n", + _Timer_Server->Timer.initial + _Timer_Server->Timer.start_time ); + assert( (info.start_time + info.initial) == + (_Timer_Server->Timer.initial + _Timer_Server->Timer.start_time) ); + + puts( "TA1 - rtems_task_wake_after - 1 second" ); + status = rtems_task_wake_after( 1 * TICKS_PER_SECOND ); + directive_failed( status, "rtems_timer_wake_after" ); + + puts( "TA1 - rtems_timer_server_fire_after - timer 2 in 60 seconds" ); + status = rtems_timer_server_fire_after( + tmid2, 60 * TICKS_PER_SECOND, Delayed_resume, NULL ); + directive_failed( status, "rtems_timer_server_fire_after" ); + + status = rtems_timer_get_information( tmid, &info ); + directive_failed( status, "rtems_timer_get_information" ); + printf( "Timer 1 scheduled for %d ticks since boot\n", + info.start_time + info.initial ); + printf( "Timer Server scheduled for %d ticks since boot\n", + _Timer_Server->Timer.initial + _Timer_Server->Timer.start_time ); + assert( (info.start_time + info.initial) == + (_Timer_Server->Timer.initial + _Timer_Server->Timer.start_time) ); + + puts( "TA1 - rtems_timer_cancel - timer 1" ); + status = rtems_timer_cancel( tmid ); + directive_failed( status, "rtems_timer_cancel" ); + + puts( "TA1 - rtems_timer_cancel - timer 2" ); + status = rtems_timer_cancel( tmid2 ); + directive_failed( status, "rtems_timer_cancel" ); + /* after which is allowed to fire */ Print_time(); |