source: rtems/c/src/tests/tmtests/tm03/task1.c @ 3b438fa

4.104.114.84.95
Last change on this file since 3b438fa was ac7d5ef0, checked in by Joel Sherrill <joel.sherrill@…>, on 05/11/95 at 17:39:37

Initial revision

  • 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#include "system.h"
15#undef EXTERN
16#define EXTERN
17#include "conftbl.h"
18#include "gvar.h"
19
20rtems_id Semaphore_id;
21rtems_task test_init(
22  rtems_task_argument argument
23);
24
25rtems_task Middle_tasks(
26  rtems_task_argument argument
27);
28
29rtems_task High_task(
30  rtems_task_argument argument
31);
32
33
34rtems_task Init(
35  rtems_task_argument argument
36)
37{
38  rtems_status_code status;
39  rtems_id          task_id;
40
41  puts( "\n\n*** TIME TEST 3 ***" );
42  status = rtems_task_create(
43    rtems_build_name( 'T', 'A', '1', ' ' ),
44    252,
45    2048,
46    RTEMS_DEFAULT_MODES,
47    RTEMS_DEFAULT_ATTRIBUTES,
48    &task_id
49  );
50  directive_failed( status, "rtems_task_create of test_init" );
51
52  status = rtems_task_start( task_id, test_init, 0 );
53  directive_failed( status, "rtems_task_start of test_init" );
54
55  status = rtems_task_delete( RTEMS_SELF );
56  directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
57}
58
59rtems_task test_init(
60  rtems_task_argument argument
61)
62{
63  rtems_status_code   status;
64  rtems_unsigned32    index;
65  rtems_id            task_id;
66  rtems_task_priority priority;
67
68  priority = 250;
69
70  status = rtems_semaphore_create(
71    rtems_build_name( 'S', 'M', '1', '\0'),
72    0,
73    RTEMS_DEFAULT_ATTRIBUTES,
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      1024,
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    1024,
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  exit( 0 );
149}
Note: See TracBrowser for help on using the repository browser.