source: rtems/testsuites/sptests/sp16/task1.c @ 99de42c

5
Last change on this file since 99de42c was 6c0301d, checked in by Sebastian Huber <sebastian.huber@…>, on 03/25/14 at 07:06:21

tests/sptests: Use <rtems/test.h>

  • Property mode set to 100644
File size: 8.8 KB
Line 
1/*  Task_1
2 *
3 *  This routine serves as a test task.  It tests the region manager.
4 *
5 *  Input parameters:
6 *    argument - task argument
7 *
8 *  Output parameters:  NONE
9 *
10 *  COPYRIGHT (c) 1989-2009.
11 *  On-Line Applications Research Corporation (OAR).
12 *
13 *  The license and distribution terms for this file may be
14 *  found in the file LICENSE in this distribution or at
15 *  http://www.rtems.org/license/LICENSE.
16 */
17
18#ifdef HAVE_CONFIG_H
19#include "config.h"
20#endif
21
22#include "system.h"
23
24rtems_task Task_1(
25  rtems_task_argument argument
26)
27{
28  rtems_id           rnid;
29  void              *segment_address_1;
30  void              *segment_address_2;
31  void              *segment_address_3;
32  void              *segment_address_4;
33  rtems_status_code  status;
34
35  status = rtems_region_ident( Region_name[ 1 ], &rnid );
36  printf( "TA1 - rtems_region_ident - rnid => %08" PRIxrtems_id "\n", rnid );
37  directive_failed( status, "rtems_region_ident of RN1" );
38
39  puts(
40    "TA1 - rtems_region_get_segment - wait on 1000 byte segment from region 2"
41  );
42  status = rtems_region_get_segment(
43    Region_id[ 2 ],
44    1000,
45    RTEMS_DEFAULT_OPTIONS,
46    RTEMS_NO_TIMEOUT,
47    &segment_address_1
48  );
49  directive_failed( status, "rtems_region_get_segment" );
50  puts_nocr( "TA1 - got segment from region 2 - " );
51  Put_address_from_area_2( segment_address_1 );
52  new_line;
53
54  puts( "TA1 - rtems_region_get_segment - wait on 3K segment from region 3" );
55  status = rtems_region_get_segment(
56    Region_id[ 3 ],
57    3072,
58    RTEMS_DEFAULT_OPTIONS,
59    RTEMS_NO_TIMEOUT,
60    &segment_address_2
61  );
62  directive_failed( status, "rtems_region_get_segment" );
63  puts_nocr( "TA1 - got segment from region 3 - " );
64  Put_address_from_area_3( segment_address_2 );
65  new_line;
66
67  puts_nocr( "TA1 - rtems_region_get_segment - get 3080 byte segment " );
68  puts     ( "from region 1 - NO_WAIT" );
69  status = rtems_region_get_segment(
70    Region_id[ 1 ],
71    3080,
72    RTEMS_NO_WAIT,
73    RTEMS_NO_TIMEOUT,
74    &segment_address_3
75  );
76  directive_failed( status, "rtems_region_get_segment" );
77  puts_nocr( "TA1 - got segment from region 1 - " );
78  Put_address_from_area_1( segment_address_3 );
79  new_line;
80
81  puts( "TA1 - rtems_task_wake_after - yield processor" );
82  status = rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
83  directive_failed( status, "rtems_task_wake_after" );
84
85rtems_test_pause();
86
87  puts_nocr(
88    "TA1 - rtems_region_return_segment - return segment to region 1 - "
89  );
90  Put_address_from_area_1( segment_address_3 );
91  status = rtems_region_return_segment( Region_id[ 1 ], segment_address_3 );
92  directive_failed( status, "rtems_region_return_segment" );
93  new_line;
94
95  puts(
96    "TA1 - rtems_region_get_segment - wait 10 seconds for 3K "
97      "segment from region 1"
98  );
99  status = rtems_region_get_segment(
100    Region_id[ 1 ],
101    3072,
102    RTEMS_DEFAULT_OPTIONS,
103    10 * rtems_clock_get_ticks_per_second(),
104    &segment_address_4
105  );
106  directive_failed( status, "rtems_region_get_segment" );
107  puts_nocr( "TA1 - got segment from region 1 - " );
108  Put_address_from_area_1( segment_address_4 );
109  new_line;
110
111  puts_nocr(
112    "TA1 - rtems_region_return_segment - return segment to region 2 - "
113  );
114  Put_address_from_area_2( segment_address_1 );
115  new_line;
116  status = rtems_region_return_segment( Region_id[ 2 ], segment_address_1 );
117  directive_failed( status, "rtems_region_return_segment" );
118
119  puts( "TA1 - rtems_task_wake_after - yield processor" );
120  status = rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
121  directive_failed( status, "rtems_task_wake_after" );
122
123  puts( "TA1 - rtems_task_delete - delete TA3" );
124  status = rtems_task_delete( Task_id[ 3 ] );
125  directive_failed( status, "rtems_task_delete of TA3" );
126
127rtems_test_pause();
128
129  status = rtems_task_create(
130    Task_name[ 4 ],
131    BASE_PRIORITY,
132    RTEMS_MINIMUM_STACK_SIZE,
133    RTEMS_DEFAULT_MODES,
134    RTEMS_DEFAULT_ATTRIBUTES,
135    &Task_id[ 4 ]
136  );
137  directive_failed( status, "rtems_task_create of TA4" );
138
139  status = rtems_task_create(
140    Task_name[ 5 ],
141    BASE_PRIORITY,
142    RTEMS_MINIMUM_STACK_SIZE,
143    RTEMS_DEFAULT_MODES,
144    RTEMS_DEFAULT_ATTRIBUTES,
145    &Task_id[ 5 ]
146  );
147  directive_failed( status, "rtems_task_create of TA5" );
148
149  status = rtems_task_start( Task_id[ 4 ], Task_4, 0 );
150  directive_failed( status, "rtems_task_start of TA4" );
151
152  status = rtems_task_start( Task_id[ 5 ], Task5, 0 );
153  directive_failed( status, "rtems_task_start of TA5" );
154
155  puts( "TA1 - rtems_task_wake_after - yield processor" );
156  status = rtems_task_wake_after( 1 * rtems_clock_get_ticks_per_second() );
157  directive_failed( status, "rtems_task_wake_after" );
158
159  puts_nocr(
160    "TA1 - rtems_region_return_segment - return segment to region 1 - "
161  );
162  Put_address_from_area_1( segment_address_4 );
163  status = rtems_region_return_segment( Region_id[ 1 ], segment_address_4 );
164  directive_failed( status, "rtems_region_return_segment" );
165  new_line;
166
167  puts( "TA1 - rtems_task_wake_after - yield processor" );
168  status = rtems_task_wake_after( 1 * rtems_clock_get_ticks_per_second() );
169  directive_failed( status, "rtems_task_wake_after" );
170
171  puts_nocr( "TA1 - rtems_region_get_segment - wait 10 seconds for 3K " );
172  puts     ( "segment from region 1");
173  status = rtems_region_get_segment(
174    Region_id[ 1 ],
175    3072,
176    RTEMS_DEFAULT_OPTIONS,
177    10 * rtems_clock_get_ticks_per_second(),
178    &segment_address_4
179  );
180  directive_failed( status, "rtems_region_get_segment" );
181  puts_nocr( "TA1 - got segment from region 1 - " );
182  Put_address_from_area_1( segment_address_4 );
183  new_line;
184
185  puts( "TA1 - rtems_task_wake_after - yield processor" );
186  status = rtems_task_wake_after( 1 * rtems_clock_get_ticks_per_second() );
187  directive_failed( status, "rtems_task_wake_after" );
188
189  puts( "TA1 - rtems_task_delete - delete TA4" );
190  status = rtems_task_delete( Task_id[ 4 ] );
191  directive_failed( status, "rtems_task_delete of TA4" );
192
193  puts_nocr(
194    "TA1 - rtems_region_return_segment - return segment to region 1 - "
195  );
196  Put_address_from_area_1( segment_address_4 );
197  status = rtems_region_return_segment( Region_id[ 1 ], segment_address_4 );
198  directive_failed( status, "rtems_region_return_segment" );
199  new_line;
200
201  puts( "TA1 - rtems_task_wake_after - yield processor" );
202  status = rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
203
204  puts( "TA1 - rtems_region_delete - delete region 1" );
205  status = rtems_region_delete( Region_id[ 1 ] );
206  directive_failed( status, "rtems_region_delete" );
207
208  puts( "TA1 - rtems_region_get_segment - get 3K segment from region 4" );
209  status = rtems_region_get_segment(
210    Region_id[ 4 ],
211    3072,
212    RTEMS_DEFAULT_OPTIONS,
213    RTEMS_NO_TIMEOUT,
214    &segment_address_1
215  );
216  directive_failed( status, "rtems_region_get_segment" );
217  puts_nocr( "TA1 - got segment from region 4 - " );
218  Put_address_from_area_4( segment_address_1 );
219  new_line;
220
221  puts(
222   "TA1 - rtems_region_get_segment - attempt to get 3K segment from region 4"
223  );
224  status =  rtems_region_get_segment(
225    Region_id[ 4 ],
226    3072,
227    RTEMS_NO_WAIT,
228    RTEMS_NO_TIMEOUT,
229    &segment_address_2
230  );
231  fatal_directive_status(
232    status,
233    RTEMS_UNSATISFIED,
234    "rtems_region_get_segment with no memory left"
235  );
236  puts( "TA1 - rtems_region_get_segment - RTEMS_UNSATISFIED" );
237
238  puts( "TA1 - rtems_region_extend - extend region 4 by 1" );
239  status = rtems_region_extend(
240    Region_id[ 4 ],
241    &Area_4[4096],
242    1
243  );
244  fatal_directive_status(
245    status,
246    RTEMS_INVALID_ADDRESS,
247    "rtems_region_extend with too small memory area"
248  );
249  puts( "TA1 - rtems_region_extend - RTEMS_INVALID_ADDRESS" );
250
251  puts( "TA1 - rtems_region_extend - extend region 4 by 4K - 1" );
252  status = rtems_region_extend(
253    Region_id[ 4 ],
254    (char *) &Area_4[4096] + 1,
255    4096 - 1
256  );
257  directive_failed( status, "rtems_region_extend" );
258
259  puts(
260   "TA1 - rtems_region_get_segment - attempt to get 3K segment from region 4"
261  );
262  status = rtems_region_get_segment(
263    Region_id[ 4 ],
264    3072,
265    RTEMS_NO_WAIT,
266    RTEMS_NO_TIMEOUT,
267    &segment_address_3
268  );
269  directive_failed( status, "rtems_region_get_segment" );
270  puts_nocr( "TA1 - got 3K segment from region 4 - " );
271  Put_address_from_area_4( segment_address_3 );
272  new_line;
273
274  puts_nocr(
275    "TA1 - rtems_region_return_segment - return segment to region 4 - "
276  );
277  Put_address_from_area_4( segment_address_1 );
278  status = rtems_region_return_segment( Region_id[ 4 ], segment_address_1 );
279  directive_failed( status, "rtems_region_return_segment" );
280  new_line;
281
282  puts_nocr(
283    "TA1 - rtems_region_return_segment - return segment to region 4 - "
284  );
285  Put_address_from_area_4( segment_address_3 );
286  status = rtems_region_return_segment( Region_id[ 4 ], segment_address_3 );
287  directive_failed( status, "rtems_region_return_segment" );
288  new_line;
289
290  puts( "TA1 - rtems_region_delete - delete region 4" );
291  status = rtems_region_delete( Region_id[ 4 ] );
292  directive_failed( status, "rtems_region_delete" );
293
294  TEST_END();
295  rtems_test_exit( 0 );
296}
Note: See TracBrowser for help on using the repository browser.