source: rtems/c/src/tests/mptests/mp14/init.c @ d7a0857

4.104.114.84.95
Last change on this file since d7a0857 was d7a0857, checked in by Joel Sherrill <joel.sherrill@…>, on 09/04/03 at 18:53:31

2003-09-04 Joel Sherrill <joel@…>

  • mp01/init.c, mp01/system.h, mp01/task1.c, mp01/node1/mp01.doc, mp01/node2/mp01.doc, mp02/init.c, mp02/system.h, mp02/task1.c, mp02/node1/mp02.doc, mp02/node2/mp02.doc, mp03/delay.c, mp03/init.c, mp03/system.h, mp03/task1.c, mp03/node1/mp03.doc, mp03/node2/mp03.doc, mp04/init.c, mp04/system.h, mp04/task1.c, mp04/node1/mp04.doc, mp04/node2/mp04.doc, mp05/asr.c, mp05/init.c, mp05/system.h, mp05/task1.c, mp05/node1/mp05.doc, mp05/node2/mp05.doc, mp06/init.c, mp06/system.h, mp06/task1.c, mp06/node1/mp06.doc, mp06/node2/mp06.doc, mp07/init.c, mp07/system.h, mp07/task1.c, mp07/node1/mp07.doc, mp07/node2/mp07.doc, mp08/init.c, mp08/system.h, mp08/task1.c, mp08/node1/mp08.doc, mp08/node2/mp08.doc, mp09/init.c, mp09/recvmsg.c, mp09/sendmsg.c, mp09/system.h, mp09/task1.c, mp09/node1/mp09.doc, mp09/node2/mp09.doc, mp10/init.c, mp10/system.h, mp10/task1.c, mp10/task2.c, mp10/task3.c, mp10/node1/mp10.doc, mp10/node2/mp10.doc, mp11/init.c, mp11/system.h, mp11/node1/mp11.doc, mp11/node2/mp11.doc, mp12/init.c, mp12/system.h, mp12/node1/mp12.doc, mp12/node2/mp12.doc, mp13/init.c, mp13/system.h, mp13/task1.c, mp13/task2.c, mp13/node1/mp13.doc, mp13/node2/mp13.doc, mp14/delay.c, mp14/evtask1.c, mp14/evtmtask.c, mp14/exit.c, mp14/init.c, mp14/msgtask1.c, mp14/pttask1.c, mp14/smtask1.c, mp14/system.h, mp14/node1/mp14.doc, mp14/node2/mp14.doc: URL for license changed.
  • Property mode set to 100644
File size: 5.2 KB
Line 
1/*  Init
2 *
3 *  This routine is the initialization task for this test program.
4 *  It is a user initialization task and has the responsibility for creating
5 *  and starting the tasks that make up the test.  If the time of day
6 *  clock is required for the test, it should also be set to a known
7 *  value by this function.
8 *
9 *  Input parameters:
10 *    argument - task argument
11 *
12 *  Output parameters:  NONE
13 *
14 *  COPYRIGHT (c) 1989-1999.
15 *  On-Line Applications Research Corporation (OAR).
16 *
17 *  The license and distribution terms for this file may be
18 *  found in the file LICENSE in this distribution or at
19 *  http://www.rtems.com/license/LICENSE.
20 *
21 *  $Id$
22 */
23
24#define TEST_INIT
25#include "system.h"
26
27rtems_unsigned8 my_partition[0x30000] CPU_STRUCTURE_ALIGNMENT;
28
29rtems_timer_service_routine Stop_Test_TSR(
30  rtems_id  ignored_id,
31  void     *ignored_address
32)
33{
34  Stop_Test = TRUE;
35}
36
37rtems_task Init(
38  rtems_task_argument argument
39)
40{
41  rtems_status_code   status;
42  rtems_task_priority previous_priority;
43
44  printf(
45    "\n\n*** TEST 14 -- NODE %d ***\n",
46    Multiprocessing_configuration.node
47  );
48
49  Stop_Test = FALSE;
50
51  status = rtems_timer_create(
52    rtems_build_name('S', 'T', 'O', 'P'),
53    &timer_id
54  );
55  directive_failed( status, "rtems_timer_create" );
56
57  status = rtems_timer_fire_after(
58    timer_id,
59    MAX_LONG_TEST_DURATION * TICKS_PER_SECOND,
60    Stop_Test_TSR,
61    NULL
62  );
63  directive_failed( status, "rtems_timer_fire_after" );
64
65  Task_name[ 1 ] = rtems_build_name( '1', '1', '1', ' ' );
66  Task_name[ 2 ] = rtems_build_name( '2', '2', '2', ' ' );
67
68  Queue_task_name[ 1 ] = rtems_build_name( 'M', 'T', '1', ' ' );
69  Queue_task_name[ 2 ] = rtems_build_name( 'M', 'T', '2', ' ' );
70
71  Partition_task_name[ 1 ] = rtems_build_name( 'P', 'T', '1', ' ' );
72  Partition_task_name[ 2 ] = rtems_build_name( 'P', 'T', '2', ' ' );
73
74  Semaphore_task_name[ 1 ] = rtems_build_name( 'S', 'M', '1', ' ' );
75  Semaphore_task_name[ 2 ] = rtems_build_name( 'S', 'M', '2', ' ' );
76
77  Semaphore_name[ 1 ] =  rtems_build_name( 'S', 'E', 'M', ' ' );
78
79  Queue_name[ 1 ] = rtems_build_name( 'M', 'S', 'G', ' ' );
80
81  Partition_name[ 1 ] = rtems_build_name( 'P', 'A', 'R', ' ' );
82
83  Timer_name[ 1 ] = rtems_build_name( 'T', 'M', 'R', ' ' );
84
85  if ( Multiprocessing_configuration.node == 1 ) {
86    puts( "Creating Semaphore (Global)" );
87    status = rtems_semaphore_create(
88      Semaphore_name[ 1 ],
89      1,
90      RTEMS_GLOBAL,
91      RTEMS_NO_PRIORITY,
92      &Semaphore_id[ 1 ]
93    );
94    directive_failed( status, "rtems_semaphore_create" );
95
96    puts( "Creating Message Queue (Global)" );
97    status = rtems_message_queue_create(
98      Queue_name[ 1 ],
99      1,
100      16,
101      RTEMS_GLOBAL,
102      &Queue_id[ 1 ]
103    );
104    directive_failed( status, "rtems_message_queue_create" );
105
106    puts( "Creating Partition (Global)" );
107    status = rtems_partition_create(
108      Partition_name[ 1 ],
109      (void *)my_partition,
110      0x8000,
111      0x3800,
112      RTEMS_GLOBAL,
113      &Partition_id[ 1 ]
114    );
115    directive_failed( status, "rtems_partition_create" );
116  }
117
118  puts( "Creating Event task (Global)" );
119  status = rtems_task_create(
120    Task_name[ Multiprocessing_configuration.node ],
121    2,
122    RTEMS_MINIMUM_STACK_SIZE,
123    RTEMS_TIMESLICE,
124    RTEMS_GLOBAL,
125    &Event_task_id[ 1 ]
126  );
127  directive_failed( status, "rtems_task_create" );
128
129  puts( "Starting Event task (Global)" );
130  status = rtems_task_start( Event_task_id[ 1 ], Test_task, 0 );
131  directive_failed( status, "rtems_task_start" );
132
133  puts( "Creating Semaphore task (Global)" );
134  status = rtems_task_create(
135    Semaphore_task_name[ Multiprocessing_configuration.node ],
136    2,
137    RTEMS_MINIMUM_STACK_SIZE,
138    RTEMS_TIMESLICE,
139    RTEMS_GLOBAL,
140    &Semaphore_task_id[ 1 ]
141  );
142  directive_failed( status, "rtems_task_create" );
143
144  puts( "Starting Semaphore task (Global)" );
145  status = rtems_task_start( Semaphore_task_id[ 1 ], Semaphore_task, 0 );
146  directive_failed( status, "rtems_task_start" );
147
148  puts( "Creating Message Queue task (Global)" );
149  status = rtems_task_create(
150    Queue_task_name[ Multiprocessing_configuration.node ],
151    2,
152    RTEMS_MINIMUM_STACK_SIZE,
153    RTEMS_TIMESLICE,
154    RTEMS_GLOBAL,
155    &Queue_task_id[ 1 ]
156  );
157  directive_failed( status, "rtems_task_create" );
158
159  /* argument is index into Buffers */
160  puts( "Starting Message Queue task (Global)" );
161  status = rtems_task_start( Queue_task_id[ 1 ], Message_queue_task, 1 );
162  directive_failed( status, "rtems_task_start" );
163
164  puts( "Creating Partition task (Global)" );
165  status = rtems_task_create(
166    Partition_task_name[ Multiprocessing_configuration.node ],
167    2,
168    RTEMS_MINIMUM_STACK_SIZE * 2,
169    RTEMS_TIMESLICE,
170    RTEMS_GLOBAL,
171    &Partition_task_id[ 1 ]
172  );
173  directive_failed( status, "rtems_task_create" );
174
175  puts( "Starting Partition task (Global)" );
176  status = rtems_task_start( Partition_task_id[ 1 ], Partition_task, 0 );
177  directive_failed( status, "rtems_task_start" );
178
179  status = rtems_task_set_priority( RTEMS_SELF, 2, &previous_priority );
180  directive_failed( status, "rtems_task_set_priority" );
181
182  status = rtems_task_ident(
183    RTEMS_SELF,
184    RTEMS_SEARCH_ALL_NODES,
185    &Task_id[ 1 ]
186  );
187  directive_failed( status, "rtems_task_ident" );
188
189  Delayed_events_task( 1 );
190}
Note: See TracBrowser for help on using the repository browser.