source: rtems/testsuites/tmtests/tm02/task1.c @ 8389628

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