source: rtems/testsuites/tmtests/tm03/task1.c @ 5c491aef

4.104.114.84.95
Last change on this file since 5c491aef 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: 3.3 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 Semaphore_id;
18rtems_task test_init(
19  rtems_task_argument argument
20);
21
22rtems_task Middle_tasks(
23  rtems_task_argument argument
24);
25
26rtems_task High_task(
27  rtems_task_argument argument
28);
29
30
31rtems_task Init(
32  rtems_task_argument argument
33)
34{
35  rtems_status_code status;
36  rtems_id          task_id;
37
38  Print_Warning();
39
40  puts( "\n\n*** TIME TEST 3 ***" );
41  status = rtems_task_create(
42    rtems_build_name( 'T', 'A', '1', ' ' ),
43    252,
44    RTEMS_MINIMUM_STACK_SIZE,
45    RTEMS_DEFAULT_MODES,
46    RTEMS_DEFAULT_ATTRIBUTES,
47    &task_id
48  );
49  directive_failed( status, "rtems_task_create of test_init" );
50
51  status = rtems_task_start( task_id, test_init, 0 );
52  directive_failed( status, "rtems_task_start of test_init" );
53
54  status = rtems_task_delete( RTEMS_SELF );
55  directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
56}
57
58rtems_task test_init(
59  rtems_task_argument argument
60)
61{
62  rtems_status_code   status;
63  rtems_unsigned32    index;
64  rtems_id            task_id;
65  rtems_task_priority priority;
66
67  priority = 250;
68
69  status = rtems_semaphore_create(
70    rtems_build_name( 'S', 'M', '1', '\0'),
71    0,
72    RTEMS_DEFAULT_ATTRIBUTES,
73    RTEMS_NO_PRIORITY,
74    &Semaphore_id
75  );
76  directive_failed( status, "rtems_semaphore_create of SM1" );
77
78  for ( index = 2 ; index <= OPERATION_COUNT ; index ++ ) {
79    rtems_task_create(
80      rtems_build_name( 'M', 'I', 'D', ' ' ),
81      priority,
82      RTEMS_MINIMUM_STACK_SIZE,
83      RTEMS_DEFAULT_MODES,
84      RTEMS_DEFAULT_ATTRIBUTES,
85      &task_id
86    );
87    directive_failed( status, "rtems_task_create middle" );
88
89    priority--;
90
91    rtems_task_start( task_id, Middle_tasks, 0 );
92    directive_failed( status, "rtems_task_start middle" );
93  }
94
95  status = rtems_task_create(
96    rtems_build_name( 'H', 'I', 'G', 'H' ),
97    priority,
98    RTEMS_MINIMUM_STACK_SIZE,
99    RTEMS_DEFAULT_MODES,
100    RTEMS_DEFAULT_ATTRIBUTES,
101    &task_id
102  );
103  directive_failed( status, "rtems_task_create of high task" );
104
105  status = rtems_task_start( task_id, High_task, 0 );
106  directive_failed( status, "rtems_task_start of high task" );
107
108  Timer_initialize();                          /* start the timer */
109  status = rtems_semaphore_release( Semaphore_id );
110}
111
112rtems_task Middle_tasks(
113  rtems_task_argument argument
114)
115{
116  rtems_status_code status;
117
118  status = rtems_semaphore_obtain(
119    Semaphore_id,
120    RTEMS_DEFAULT_OPTIONS,
121    RTEMS_NO_TIMEOUT
122  );
123
124  status = rtems_semaphore_release( Semaphore_id );
125}
126
127rtems_task High_task(
128  rtems_task_argument argument
129)
130{
131  rtems_status_code status;
132
133  status = rtems_semaphore_obtain(
134    Semaphore_id,
135    RTEMS_DEFAULT_OPTIONS,
136    RTEMS_NO_TIMEOUT
137  );
138
139  end_time = Read_timer();
140
141  put_time(
142    "rtems_semaphore_release: task readied -- preempts caller",
143    end_time,
144    OPERATION_COUNT,
145    0,
146    CALLING_OVERHEAD_SEMAPHORE_RELEASE
147  );
148
149  puts( "*** END OF TEST 3 ***" );
150  exit( 0 );
151}
Note: See TracBrowser for help on using the repository browser.