Files
rtems/testsuites/sptests/sp31/task1.c
Joel Sherrill de569fee9f 2001-01-16 Joel Sherrill <joel@OARcorp.com>
* Added tests for task-based timers.  This included the new tests
	sp30 and sp31.
	* Makefile.am, configure.ac: Modified to reflect new tests and files.
	* sp09/screen14.c, sp09/sp09.scn: Modified to add error checks
	for task-based timer services.
	* sp30/.cvsignore, sp30/Makefile.am, sp30/init.c, sp30/resume.c,
	sp30/sp30.doc, sp30/sp30.scn, sp30/system.h, sp30/task1.c,
	sp31/.cvsignore, sp31/Makefile.am, sp31/delay.c, sp31/init.c,
	sp31/prtime.c, sp31/sp31.doc, sp31/sp31.scn, sp31/system.h,
	sp31/task1.c: New files.
2002-01-16 22:13:29 +00:00

164 lines
4.4 KiB
C

/* Task_1
*
* This routine serves as a test task. It verifies the basic task
* switching capabilities of the executive.
*
* Input parameters:
* argument - task argument
*
* Output parameters: NONE
*
* COPYRIGHT (c) 1989-2002.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.OARcorp.com/rtems/license.html.
*
* $Id$
*/
#include "system.h"
rtems_task Task_1(
rtems_task_argument argument
)
{
rtems_id tmid;
rtems_time_of_day time;
rtems_status_code status;
/* Get id */
puts( "TA1 - rtems_timer_ident - identing timer 1" );
status = rtems_timer_ident( Timer_name[ 1 ], &tmid );
directive_failed( status, "rtems_timer_ident" );
printf( "TA1 - timer 1 has id (0x%x)\n", tmid );
/* after which is allowed to fire */
Print_time();
puts( "TA1 - rtems_timer_server_fire_after - timer 1 in 3 seconds" );
status = rtems_timer_server_fire_after(
tmid,
3 * TICKS_PER_SECOND,
Delayed_resume,
NULL
);
directive_failed( status, "rtems_timer_server_fire_after" );
puts( "TA1 - rtems_task_suspend( RTEMS_SELF )" );
status = rtems_task_suspend( RTEMS_SELF );
directive_failed( status, "rtems_task_suspend" );
Print_time();
/* after which is reset and allowed to fire */
puts( "TA1 - rtems_timer_server_fire_after - timer 1 in 3 seconds" );
status = rtems_timer_server_fire_after(
tmid,
3 * TICKS_PER_SECOND,
Delayed_resume,
NULL
);
directive_failed( status, "rtems_timer_server_fire_after" );
puts( "TA1 - rtems_task_wake_after - 1 second" );
status = rtems_task_wake_after( 1 * TICKS_PER_SECOND );
directive_failed( status, "rtems_task_wake_after" );
Print_time();
puts( "TA1 - rtems_timer_reset - timer 1" );
status = rtems_timer_reset( tmid );
directive_failed( status, "rtems_timer_reset" );
puts( "TA1 - rtems_task_suspend( RTEMS_SELF )" );
status = rtems_task_suspend( RTEMS_SELF );
directive_failed( status, "rtems_task_suspend" );
Print_time();
rtems_test_pause();
/*
* Reset the time since we do not know how long the user waited
* before pressing <cr> at the pause. This insures that the
* actual output matches the screen.
*/
build_time( &time, 12, 31, 1988, 9, 0, 7, 0 );
status = rtems_clock_set( &time );
directive_failed( status, "rtems_clock_set" );
/* after which is canceled */
puts( "TA1 - rtems_timer_server_fire_after - timer 1 in 3 seconds" );
status = rtems_timer_server_fire_after(
tmid,
3 * TICKS_PER_SECOND,
Delayed_resume,
NULL
);
directive_failed( status, "rtems_timer_server_fire_after" );
puts( "TA1 - rtems_timer_cancel - timer 1" );
status = rtems_timer_cancel( tmid );
directive_failed( status, "rtems_timer_cancel" );
/* when which is allowed to fire */
Print_time();
status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time );
directive_failed( status, "rtems_clock_get" );
time.second += 3;
puts( "TA1 - rtems_timer_server_fire_when - timer 1 in 3 seconds" );
status = rtems_timer_server_fire_when( tmid, &time, Delayed_resume, NULL );
directive_failed( status, "rtems_timer_server_fire_when" );
puts( "TA1 - rtems_task_suspend( RTEMS_SELF )" );
status = rtems_task_suspend( RTEMS_SELF );
directive_failed( status, "rtems_task_suspend" );
Print_time();
/* when which is canceled */
status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time );
directive_failed( status, "rtems_clock_get" );
time.second += 3;
puts( "TA1 - rtems_timer_server_fire_when - timer 1 in 3 seconds" );
status = rtems_timer_server_fire_when( tmid, &time, Delayed_resume, NULL );
directive_failed( status, "rtems_timer_server_fire_when" );
puts( "TA1 - rtems_task_wake_after - 1 second" );
status = rtems_task_wake_after( 1 * TICKS_PER_SECOND );
directive_failed( status, "rtems_task_wake_after" );
Print_time();
puts( "TA1 - rtems_timer_cancel - timer 1" );
status = rtems_timer_cancel( tmid );
directive_failed( status, "rtems_timer_cancel" );
/* delete */
puts( "TA1 - rtems_task_wake_after - YIELD (only task at priority)" );
status = rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
directive_failed( status, "rtems_task_wake_after" );
puts( "TA1 - timer_deleting - timer 1" );
status = rtems_timer_delete( tmid );
directive_failed( status, "rtems_timer_delete" );
puts( "*** END OF TEST 31 *** " );
exit( 0 );
}