summaryrefslogtreecommitdiffstats
path: root/testsuites/sptests/sp31/task1.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2002-01-29 18:20:59 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2002-01-29 18:20:59 +0000
commitef70d9b652e75326f534d7e66bb3e0bcc55b3b58 (patch)
treeb924708ca07655b2f7e8da8e740314c121b723eb /testsuites/sptests/sp31/task1.c
parent2002-01-29 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-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.c74
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();