source: rtems/testsuites/sptests/sp09/screen12.c @ 08311cc3

4.104.114.84.95
Last change on this file since 08311cc3 was 08311cc3, checked in by Joel Sherrill <joel.sherrill@…>, on Nov 17, 1999 at 5:51:34 PM

Updated copyright notice.

  • Property mode set to 100644
File size: 8.2 KB
Line 
1/*  Screen12
2 *
3 *  This routine generates error screen 12 for test 9.
4 *
5 *  Input parameters:  NONE
6 *
7 *  Output parameters:  NONE
8 *
9 *  COPYRIGHT (c) 1989-1999.
10 *  On-Line Applications Research Corporation (OAR).
11 *
12 *  The license and distribution terms for this file may be
13 *  found in the file LICENSE in this distribution or at
14 *  http://www.OARcorp.com/rtems/license.html.
15 *
16 *  $Id$
17 */
18
19#include "system.h"
20
21void Screen12()
22{
23  void              *segment_address_1;
24  void              *segment_address_2;
25  void              *segment_address_3;
26  rtems_unsigned32   offset;
27  rtems_unsigned32   good_front_flag;
28  rtems_unsigned32   good_back_flag;
29  rtems_status_code  status;
30
31  status = rtems_region_create(
32    0,
33    Region_good_area,
34    0x40,
35    32,
36    RTEMS_DEFAULT_ATTRIBUTES,
37    &Junk_id
38  );
39  fatal_directive_status(
40    status,
41    RTEMS_INVALID_NAME,
42    "rtems_region_create with illegal name"
43  );
44  puts( "TA1 - rtems_region_create - RTEMS_INVALID_NAME" );
45
46  status = rtems_region_create(
47    Region_name[ 1 ],
48    Region_bad_area,
49    0x40,
50    32,
51    RTEMS_DEFAULT_ATTRIBUTES,
52    &Junk_id
53  );
54  fatal_directive_status(
55    status,
56    RTEMS_INVALID_ADDRESS,
57    "rtems_region_create with illegal address"
58  );
59  puts( "TA1 - rtems_region_create - RTEMS_INVALID_ADDRESS" );
60
61  status = rtems_region_create(
62    Region_name[ 1 ],
63    Region_good_area,
64    0x40,
65    34,
66    RTEMS_DEFAULT_ATTRIBUTES,
67    &Junk_id
68  );
69  fatal_directive_status(
70    status,
71    RTEMS_INVALID_SIZE,
72    "rtems_region_create with illegal size"
73  );
74  puts( "TA1 - rtems_region_create - RTEMS_INVALID_SIZE" );
75
76  status = rtems_region_create(
77    Region_name[ 1 ],
78    &Region_good_area[ REGION_START_OFFSET ],
79    REGION_LENGTH,
80    0x40,
81    RTEMS_DEFAULT_ATTRIBUTES,
82    &Region_id[ 1 ]
83  );
84  directive_failed( status, "rtems_region_create" );
85  puts( "TA1 - rtems_region_create - RTEMS_SUCCESSFUL" );
86
87  status = rtems_region_create(
88    Region_name[ 1 ],
89    Region_good_area,
90    REGION_LENGTH,
91    0x40,
92    RTEMS_DEFAULT_ATTRIBUTES,
93    &Junk_id
94  );
95  fatal_directive_status(
96    status,
97    RTEMS_TOO_MANY,
98    "rtems_region_create of too many"
99  );
100  puts( "TA1 - rtems_region_create - RTEMS_TOO_MANY" );
101
102  status = rtems_region_delete( 100 );
103  fatal_directive_status(
104    status,
105    RTEMS_INVALID_ID,
106    "rtems_region_delete with illegal id"
107  );
108  puts( "TA1 - rtems_region_delete - unknown RTEMS_INVALID_ID" );
109
110  status = rtems_region_delete( 0x10100 );
111  fatal_directive_status(
112    status,
113    RTEMS_INVALID_ID,
114    "rtems_region_delete with illegal id"
115  );
116  puts( "TA1 - rtems_region_delete - local RTEMS_INVALID_ID" );
117
118  status = rtems_region_ident( 0, &Junk_id );
119  fatal_directive_status(
120    status,
121    RTEMS_INVALID_NAME,
122    "rtems_region_ident with illegal name"
123  );
124  puts( "TA1 - rtems_region_ident - RTEMS_INVALID_NAME" );
125
126  status = rtems_region_get_segment(
127    100,
128    0x40,
129    RTEMS_DEFAULT_OPTIONS,
130    RTEMS_NO_TIMEOUT,
131    &segment_address_1
132  );
133  fatal_directive_status(
134    status,
135    RTEMS_INVALID_ID,
136    "rtems_region_get_segment with illegal id"
137  );
138  puts( "TA1 - rtems_region_get_segment - RTEMS_INVALID_ID" );
139
140  status = rtems_region_get_segment(
141     Region_id[ 1 ],
142     sizeof( Region_good_area ) * 2,
143     RTEMS_DEFAULT_OPTIONS,
144     RTEMS_NO_TIMEOUT,
145     &segment_address_1
146  );
147  fatal_directive_status(
148    status,
149    RTEMS_INVALID_SIZE,
150    "rtems_region_get_segment with illegal size"
151  );
152  puts( "TA1 - rtems_region_get_segment - RTEMS_INVALID_SIZE" );
153
154  status = rtems_region_get_segment(
155     Region_id[ 1 ],
156     384,
157     RTEMS_DEFAULT_OPTIONS,
158     RTEMS_NO_TIMEOUT,
159     &segment_address_1
160  );
161  directive_failed( status, "rtems_region_get_segment" );
162  puts( "TA1 - rtems_region_get_segment - RTEMS_SUCCESSFUL" );
163
164  status = rtems_region_get_segment(
165     Region_id[ 1 ],
166     REGION_LENGTH / 2,
167     RTEMS_NO_WAIT,
168     RTEMS_NO_TIMEOUT,
169     &segment_address_2
170  );
171  fatal_directive_status(
172    status,
173    RTEMS_UNSATISFIED,
174    "rtems_region_get_segment unsatisfied"
175  );
176  puts( "TA1 - rtems_region_get_segment - RTEMS_UNSATISFIED" );
177
178  puts( "TA1 - rtems_region_get_segment - timeout in 3 seconds" );
179  status = rtems_region_get_segment(
180    Region_id[ 1 ],
181    128,
182    RTEMS_DEFAULT_OPTIONS,
183    3 * TICKS_PER_SECOND,
184    &segment_address_3
185  );
186  fatal_directive_status(
187    status,
188    RTEMS_TIMEOUT,
189    "rtems_region_get_segment timeout"
190  );
191  puts( "TA1 - rtems_region_get_segment - woke up with RTEMS_TIMEOUT" );
192
193  status = rtems_region_delete( Region_id[ 1 ] );
194  fatal_directive_status(
195    status,
196    RTEMS_RESOURCE_IN_USE,
197    "rtems_region_delete with buffers in use"
198  );
199  puts( "TA1 - rtems_region_delete - RTEMS_RESOURCE_IN_USE" );
200
201  status = rtems_region_return_segment( 100, segment_address_1 );
202  fatal_directive_status(
203    status,
204    RTEMS_INVALID_ID,
205    "rtems_region_return_segment with illegal id"
206  );
207  puts( "TA1 - rtems_region_return_segment - RTEMS_INVALID_ID" );
208
209  status = rtems_region_return_segment( Region_id[ 1 ], Region_good_area );
210  fatal_directive_status(
211    status,
212    RTEMS_INVALID_ADDRESS,
213    "rtems_region_return_segment with illegal segment"
214  );
215  puts( "TA1 - rtems_region_return_segment - RTEMS_INVALID_ADDRESS" );
216
217/*
218 *  The following generate internal heap errors.  Thus this code
219 *  is subject to change if the heap code changes.
220 */
221
222  puts( "TA1 - rtems_debug_disable - RTEMS_DEBUG_REGION" );
223  rtems_debug_disable( RTEMS_DEBUG_REGION );
224
225#if 0
226
227  offset = (segment_address_1 - (void *)Region_good_area) / 4;
228
229/* bad FRONT_FLAG error */
230
231  good_front_flag = Region_good_area[ offset - 1 ];
232  Region_good_area[ offset - 1 ] = good_front_flag + 2;
233
234  status = rtems_region_return_segment( Region_id[ 1 ], segment_address_1 );
235  fatal_directive_status(
236    status,
237    RTEMS_INVALID_ADDRESS,
238    "rtems_region_return_segment with back_flag != front_flag"
239  );
240  puts( "TA1 - rtems_region_return_segment - RTEMS_INVALID_ADDRESS" );
241
242  Region_good_area[ offset - 1 ] = good_front_flag;
243
244/* bad FRONT_FLAG error */
245
246  good_back_flag = Region_good_area[ offset - 2 ];
247  Region_good_area[ offset - 2 ] = 1024;
248
249  status = rtems_region_return_segment( Region_id[ 1 ], segment_address_1 );
250  fatal_directive_status(
251    status,
252    RTEMS_INVALID_ADDRESS,
253    "rtems_region_return_segment with back_flag != front_flag"
254  );
255  puts( "TA1 - rtems_region_return_segment - RTEMS_INVALID_ADDRESS" );
256
257  Region_good_area[ offset - 2 ] = good_back_flag;
258
259#else
260  offset = 0;
261  good_front_flag = 0;
262  good_back_flag = 0;
263  puts( "TA1 - rtems_region_return_segment - RTEMS_INVALID_ADDRESS - SKIPPED" );
264  puts( "TA1 - rtems_region_return_segment - RTEMS_INVALID_ADDRESS - SKIPPED" );
265#endif
266
267  puts( "TA1 - rtems_debug_enable - RTEMS_DEBUG_REGION" );
268  rtems_debug_enable( RTEMS_DEBUG_REGION );
269
270  status = rtems_region_extend(
271    100,
272    Region_good_area,
273    128
274  );
275  fatal_directive_status(
276    status,
277    RTEMS_INVALID_ID,
278    "rtems_region_extend with illegal id"
279  );
280  puts( "TA1 - rtems_region_extend - RTEMS_INVALID_ID" );
281
282  status = rtems_region_extend(
283    Region_id[ 1 ],
284    &Region_good_area[ REGION_START_OFFSET + 16 ],
285    128
286  );
287  fatal_directive_status(
288    status,
289    RTEMS_INVALID_ADDRESS,
290    "rtems_region_extend with illegal starting address"
291  );
292  puts( "TA1 - rtems_region_extend - within heap - RTEMS_INVALID_ADDRESS" );
293
294  status = rtems_region_extend(
295    Region_id[ 1 ],
296    Region_bad_area,
297    128
298  );
299  fatal_directive_status(
300    status,
301    RTEMS_NOT_IMPLEMENTED,
302    "rtems_region_extend with unsupported starting address"
303  );
304  puts(
305    "TA1 - rtems_region_extend - non-contiguous lower - RTEMS_NOT_IMPLEMENTED"
306  );
307
308  status = rtems_region_extend(
309    Region_id[ 1 ],
310    &Region_good_area[ REGION_START_OFFSET - REGION_LENGTH ],
311    128
312  );
313  fatal_directive_status(
314    status,
315    RTEMS_NOT_IMPLEMENTED,
316    "rtems_region_extend with unsupported starting address"
317  );
318  puts(
319    "TA1 - rtems_region_extend - contiguous lower - RTEMS_NOT_IMPLEMENTED"
320  );
321
322  status = rtems_region_extend(
323    Region_id[ 1 ],
324    &Region_good_area[ REGION_START_OFFSET + REGION_LENGTH + 16 ],
325    128
326  );
327  fatal_directive_status(
328    status,
329    RTEMS_NOT_IMPLEMENTED,
330    "rtems_region_extend with unsupported starting address"
331  );
332  puts(
333    "TA1 - rtems_region_extend - non-contiguous higher - RTEMS_NOT_IMPLEMENTED"
334  );
335
336}
Note: See TracBrowser for help on using the repository browser.