source: rtems/testsuites/tmtests/tm05/task1.c @ c64e4ed4

4.104.114.84.95
Last change on this file since c64e4ed4 was 5c491aef, checked in by Joel Sherrill <joel.sherrill@…>, on 12/20/95 at 15:39:19

changes remerged after lost in disk crash -- recovered from snapshot, partially recovered working tree, etc

  • Property mode set to 100644
File size: 2.6 KB
Line 
1/*
2 *
3 *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
4 *  On-Line Applications Research Corporation (OAR).
5 *  All rights assigned to U.S. Government, 1994.
6 *
7 *  This material may be reproduced by or for the U.S. Government pursuant
8 *  to the copyright license under the clause at DFARS 252.227-7013.  This
9 *  notice must appear in all copies of this file and its derivatives.
10 *
11 *  $Id$
12 */
13
14#define TEST_INIT
15#include "system.h"
16
17rtems_id         Task_id[OPERATION_COUNT+1];
18rtems_unsigned32 Task_index;
19
20rtems_task High_task(
21  rtems_task_argument argument
22);
23
24rtems_task Middle_tasks(
25  rtems_task_argument argument
26);
27
28rtems_task Low_task(
29  rtems_task_argument argument
30);
31
32void test_init();
33
34rtems_task Init(
35  rtems_task_argument argument
36)
37{
38  rtems_status_code status;
39
40  Print_Warning();
41
42  puts( "\n\n*** TIME TEST 5 ***" );
43
44  test_init();
45
46  status = rtems_task_delete( RTEMS_SELF );
47  directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
48}
49
50void test_init()
51{
52  rtems_status_code   status;
53  rtems_task_entry    task_entry;
54  rtems_task_priority priority;
55  rtems_unsigned32    index;
56
57  priority = 250;
58
59  for( index = 0; index <= OPERATION_COUNT ; index++ ) {
60
61    status = rtems_task_create(
62      rtems_build_name( 'T', 'I', 'M', 'E' ),
63      priority,
64      RTEMS_MINIMUM_STACK_SIZE,
65      RTEMS_DEFAULT_MODES,
66      RTEMS_DEFAULT_ATTRIBUTES,
67      &Task_id[ index ]
68    );
69    directive_failed( status, "rtems_task_create loop" );
70
71    priority--;
72
73    if ( index==0 )                    task_entry = Low_task;
74    else if ( index==OPERATION_COUNT ) task_entry = High_task;
75    else                               task_entry = Middle_tasks;
76
77    status = rtems_task_start( Task_id[ index ], task_entry, 0 );
78    directive_failed( status, "rtems_task_start loop" );
79  }
80}
81
82rtems_task High_task(
83  rtems_task_argument argument
84)
85{
86  Timer_initialize();
87
88  (void) rtems_task_suspend( RTEMS_SELF );
89
90  end_time = Read_timer();
91
92  put_time(
93    "rtems_task_resume: task readied -- preempts caller",
94    end_time,
95    OPERATION_COUNT,
96    0,
97    CALLING_OVERHEAD_TASK_RESUME
98  );
99
100  puts( "*** END OF TEST 5 ***" );
101  exit( 0 );
102}
103
104rtems_task Middle_tasks(
105  rtems_task_argument argument
106)
107{
108  (void) rtems_task_suspend( RTEMS_SELF );
109
110  Task_index++;
111  (void) rtems_task_resume( Task_id[ Task_index ] );
112}
113
114rtems_task Low_task(
115  rtems_task_argument argument
116)
117{
118
119  end_time = Read_timer();
120
121  put_time(
122    "rtems_task_suspend: calling task",
123    end_time,
124    OPERATION_COUNT,
125    0,
126    CALLING_OVERHEAD_TASK_SUSPEND
127  );
128
129  Task_index = 1;
130  Timer_initialize();
131  (void) rtems_task_resume( Task_id[ Task_index ] );
132}
Note: See TracBrowser for help on using the repository browser.