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

4.104.114.84.95
Last change on this file since ced11f99 was 3a4ae6c, checked in by Joel Sherrill <joel.sherrill@…>, on 09/11/95 at 19:35:39

The word "RTEMS" almost completely removed from the core.

Configuration Table Template file added and all tests
modified to use this. All gvar.h and conftbl.h files
removed from test directories.

Configuration parameter maximum_devices added.

Core semaphore and mutex handlers added and RTEMS API Semaphore
Manager updated to reflect this.

Initialization sequence changed to invoke API specific initialization
routines. Initialization tasks table now owned by RTEMS Tasks Manager.

Added user extension for post-switch.

Utilized user extensions to implement API specific functionality
like signal dispatching.

Added extensions to the System Initialization Thread so that an
API can register a function to be invoked while the system
is being initialized. These are largely equivalent to the
pre-driver and post-driver hooks.

Added the Modules file oar-go32_p5, modified oar-go32, and modified
the file make/custom/go32.cfg to look at an environment varable which
determines what CPU model is being used.

All BSPs updated to reflect named devices and clock driver's IOCTL
used by the Shared Memory Driver. Also merged clock isr into
main file and removed ckisr.c where possible.

Updated spsize to reflect new and moved variables.

Makefiles for the executive source and include files updated to show
break down of files into Core, RTEMS API, and Neither.

Header and inline files installed into subdirectory based on whether
logically in the Core or a part of the RTEMS API.

  • 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    2048,
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      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
149  puts( "*** END OF TEST 3 ***" );
150  exit( 0 );
151}
Note: See TracBrowser for help on using the repository browser.