source: rtems/testsuites/sptests/sp30/task1.c @ 58b727f6

4.9
Last change on this file since 58b727f6 was 58b727f6, checked in by Joel Sherrill <joel.sherrill@…>, on Dec 3, 2008 at 9:00:35 PM

2008-12-03 Joel Sherrill <joel.sherrill@…>

PR 1347/cpukit

  • Makefile.am, configure.ac, sp30/resume.c, sp30/task1.c, sp31/delay.c: Rework Timer Server to ensure that the context allows for blocking, allocating memory, and acquiring semaphores and mutexes.
  • sp45/.cvsignore, sp45/Makefile.am, sp45/sp45.doc, sp45/sp45.scn: New files.
  • Property mode set to 100644
File size: 1.7 KB
Line 
1/*  Task_1_through_3
2 *
3 *  This task is a cyclic version of test1 to asssure that the times
4 *  displayed are not skewed as in test1.  "TA1" is printed once every
5 *  5 seconds, "TA2" is printed once every 10 seconds, and "TA3" is
6 *  printed once every 15 seconds.  The times displayed should be
7 *  in multiples of 5, 10, and 15 for TA1, TA2, and TA3 respectively.
8 *  If the times are skewed from these values, then the calendar time
9 *  does not correspond correctly with the number of ticks.
10 *
11 *  COPYRIGHT (c) 1989-2002.
12 *  On-Line Applications Research Corporation (OAR).
13 *
14 *  The license and distribution terms for this file may be
15 *  found in the file LICENSE in this distribution or at
16 *  http://www.rtems.com/license/LICENSE.
17 *
18 *  $Id$
19 */
20
21#include "system.h"
22
23rtems_task Task_1_through_3(
24  rtems_task_argument argument
25)
26{
27  rtems_id          tid;
28  rtems_time_of_day time;
29  rtems_status_code status;
30
31  status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid );
32  directive_failed( status, "rtems_task_ident of self" );
33
34  while ( FOREVER )  {
35    status = rtems_timer_server_fire_after(
36      Timer_id[ argument ],
37      (task_number( tid ) - 1) * 5 * TICKS_PER_SECOND,
38      Resume_task,
39      (void *) tid
40    );
41    directive_failed( status, "rtems_timer_server_fire_after failed" );
42
43    status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time );
44    directive_failed( status, "rtems_clock_get failed" );
45
46    if ( time.second >= 35 ) {
47      puts( "*** END OF TEST 30 ***" );
48      rtems_test_exit( 0 );
49    }
50
51    put_name( Task_name[ task_number( tid ) - 1 ], FALSE );
52    print_time( " - rtems_clock_get - ", &time, "\n" );
53
54    status = rtems_task_suspend( RTEMS_SELF );
55    directive_failed( status, "rtems_task_suspend" );
56  }
57}
Note: See TracBrowser for help on using the repository browser.