source: rtems/testsuites/mptests/mp14/init.c @ 91de2549

4.104.114.84.95
Last change on this file since 91de2549 was d8e681e, checked in by Ralf Corsepius <ralf.corsepius@…>, on 03/30/04 at 11:18:29

2004-03-30 Ralf Corsepius <ralf_corsepius@…>

  • mp02/task1.c, mp03/system.h, mp03/task1.c, mp04/task1.c, mp05/system.h, mp06/task1.c, mp07/task1.c, mp08/task1.c, mp09/recvmsg.c, mp09/sendmsg.c, mp09/task1.c, mp10/task1.c, mp11/init.c, mp12/init.c, mp13/task1.c, mp14/evtask1.c, mp14/evtmtask.c, mp14/init.c, mp14/msgtask1.c, mp14/pttask1.c, mp14/smtask1.c, mp14/system.h: Convert to using c99 fixed size types.
  • Property mode set to 100644
File size: 5.1 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
27uint8_t   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.