source: rtems/c/src/tests/tmtests/tm03/task1.c @ 3652ad35

4.104.114.84.95
Last change on this file since 3652ad35 was 3652ad35, checked in by Joel Sherrill <joel.sherrill@…>, on Sep 19, 1995 at 2:53:29 PM

Minor bug fixes to get all targets compilable and running. The
single biggest changes were the expansion of the workspace size
macro to include other types of objects and the increase in the
minimum stack size for most CPUs.

  • 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 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 (preemptive)",
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.