source: rtems/testsuites/sptests/sp09/screen07.c @ 8d8c1f1

4.104.115
Last change on this file since 8d8c1f1 was 8d8c1f1, checked in by Joel Sherrill <joel.sherrill@…>, on 09/28/09 at 19:39:06

2009-09-28 Joel Sherrill <joel.sherrill@…>

  • sp09/screen02.c, sp09/screen04.c, sp09/screen07.c, sp09/screen09.c, sp09/screen10.c, sp09/screen11.c, sp09/screen12.c, sp09/sp09.scn: Add some error cases uncovered by uC5282 coverage runs.
  • Property mode set to 100644
File size: 9.6 KB
Line 
1/*  Screen7
2 *
3 *  This routine generates error screen 7 for test 9.
4 *
5 *  Input parameters:  NONE
6 *
7 *  Output parameters:  NONE
8 *
9 *  COPYRIGHT (c) 1989-2009.
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.rtems.com/license/LICENSE.
15 *
16 *  $Id$
17 */
18
19#include "system.h"
20
21#define MESSAGE_SIZE (sizeof(long) * 4)
22
23void Screen7()
24{
25  long              buffer[ 4 ];
26  uint32_t          count;
27  size_t            size;
28  rtems_status_code status;
29
30  status = rtems_message_queue_broadcast( 100, buffer, MESSAGE_SIZE, &count );
31  fatal_directive_status(
32    status,
33    RTEMS_INVALID_ID,
34    "rtems_message_queue_broadcast with illegal id"
35  );
36  puts( "TA1 - rtems_message_queue_broadcast - RTEMS_INVALID_ID" );
37
38  /* null ID parameter */
39  status = rtems_message_queue_create(
40    Queue_name[ 1 ],
41    3,
42    MESSAGE_SIZE,
43    RTEMS_DEFAULT_ATTRIBUTES,
44    NULL
45  );
46  fatal_directive_status(
47    status,
48    RTEMS_INVALID_ADDRESS,
49    "rtems_message_queue_create with null param"
50  );
51  puts( "TA1 - rtems_message_queue_create - NULL Id - RTEMS_INVALID_ADDRESS" );
52
53  /* count == 0 */
54  status = rtems_message_queue_create(
55    Queue_name[ 1 ],
56    0,
57    MESSAGE_SIZE,
58    RTEMS_DEFAULT_ATTRIBUTES,
59    &Junk_id
60  );
61  fatal_directive_status(
62    status,
63    RTEMS_INVALID_NUMBER,
64    "rtems_message_queue_create with 0 count"
65  );
66  puts( "TA1 - rtems_message_queue_create - count = 0 - RTEMS_INVALID_NUMBER" );
67
68  /* max size == 0 */
69  status = rtems_message_queue_create(
70    Queue_name[ 1 ],
71    3,
72    0,
73    RTEMS_DEFAULT_ATTRIBUTES,
74    &Junk_id
75  );
76  fatal_directive_status(
77    status,
78    RTEMS_INVALID_SIZE,
79    "rtems_message_queue_create with 0 msg size"
80  );
81  puts( "TA1 - rtems_message_queue_create - size = 0 - RTEMS_INVALID_SIZE" );
82
83  /* bad name parameter */
84  status = rtems_message_queue_create(
85    0,
86    3,
87    MESSAGE_SIZE,
88    RTEMS_DEFAULT_ATTRIBUTES,
89    &Junk_id
90  );
91  fatal_directive_status(
92    status,
93    RTEMS_INVALID_NAME,
94    "rtems_message_queue_create with illegal name"
95  );
96  puts( "TA1 - rtems_message_queue_create - Q 1 - RTEMS_INVALID_NAME" );
97
98  /*
99   *  The check for an object being global is only made if
100   *  multiprocessing is enabled.
101   */
102
103#if defined(RTEMS_MULTIPROCESSING)
104  status = rtems_message_queue_create(
105    Queue_name[ 1 ],
106    1,
107    MESSAGE_SIZE,
108    RTEMS_GLOBAL,
109    &Junk_id
110  );
111  fatal_directive_status(
112    status,
113    RTEMS_MP_NOT_CONFIGURED,
114    "rtems_message_queue_create of mp not configured"
115  );
116#endif
117  puts( "TA1 - rtems_message_queue_create - Q 1 - RTEMS_MP_NOT_CONFIGURED" );
118
119  /* not enough memory for messages */
120  status = rtems_message_queue_create(
121    Queue_name[ 1 ],
122    INT_MAX,
123    MESSAGE_SIZE,
124    RTEMS_DEFAULT_ATTRIBUTES,
125    &Queue_id[ 1 ]
126  );
127  fatal_directive_status(
128    status,
129    RTEMS_UNSATISFIED,
130    "rtems_message_queue_create unsatisfied"
131  );
132  puts( "TA1 - rtems_message_queue_create - Q 2 - RTEMS_UNSATISFIED" );
133
134  status = rtems_message_queue_create(
135    Queue_name[ 1 ],
136    2,
137    MESSAGE_SIZE,
138    RTEMS_DEFAULT_ATTRIBUTES,
139    &Queue_id[ 1 ]
140  );
141  directive_failed( status, "rtems_message_queue_create successful" );
142  puts( "TA1 - rtems_message_queue_create - Q 1 - 2 DEEP - RTEMS_SUCCESSFUL" );
143
144  status = rtems_message_queue_create(
145    Queue_name[ 2 ],
146    1,
147    MESSAGE_SIZE,
148    RTEMS_DEFAULT_ATTRIBUTES,
149    &Junk_id
150  );
151  fatal_directive_status(
152    status,
153    RTEMS_TOO_MANY,
154    "rtems_message_queue_create of too many"
155  );
156  puts( "TA1 - rtems_message_queue_create - Q 2 - RTEMS_TOO_MANY" );
157
158  status = rtems_message_queue_delete( 100 );
159  fatal_directive_status(
160    status,
161    RTEMS_INVALID_ID,
162    "rtems_message_queue_create with illegal id"
163  );
164  puts( "TA1 - rtems_message_queue_delete - unknown RTEMS_INVALID_ID" );
165
166  status = rtems_message_queue_delete( rtems_build_id( 1, 1, 1, 256 ) );
167  fatal_directive_status(
168    status,
169    RTEMS_INVALID_ID,
170    "rtems_message_queue_delete with local illegal id"
171  );
172  puts( "TA1 - rtems_message_queue_delete - local RTEMS_INVALID_ID" );
173
174  status = rtems_message_queue_ident( 100, RTEMS_SEARCH_ALL_NODES, &Junk_id );
175  fatal_directive_status(
176    status,
177    RTEMS_INVALID_NAME,
178    "rtems_message_queue_ident with illegal name"
179  );
180  puts( "TA1 - rtems_message_queue_ident - RTEMS_INVALID_NAME" );
181
182  /* number pending - bad Id */
183  status = rtems_message_queue_get_number_pending( Queue_id[ 1 ], NULL );
184  fatal_directive_status(
185    status,
186    RTEMS_INVALID_ADDRESS,
187    "rtems_message_queue_get_number_pending with NULL param"
188  );
189  puts("TA1 - rtems_message_queue_get_number_pending - RTEMS_INVALID_ADDRESS");
190
191  /* number pending - bad Id */
192  status = rtems_message_queue_get_number_pending( 100, &count );
193  fatal_directive_status(
194    status,
195    RTEMS_INVALID_ID,
196    "rtems_message_queue_get_number_pending with illegal id"
197  );
198  puts( "TA1 - rtems_message_queue_get_number_pending - RTEMS_INVALID_ID" );
199
200  /* flush null param */
201  status = rtems_message_queue_flush( Queue_id[ 1 ], NULL );
202  fatal_directive_status(
203    status,
204    RTEMS_INVALID_ADDRESS,
205    "rtems_message_queue_flush with NULL param"
206  );
207  puts( "TA1 - rtems_message_queue_flush - RTEMS_INVALID_ADDRESS" );
208
209  /* flush invalid id */
210  status = rtems_message_queue_flush( 100, &count );
211  fatal_directive_status(
212    status,
213    RTEMS_INVALID_ID,
214    "rtems_message_queue_flush with illegal id"
215  );
216  puts( "TA1 - rtems_message_queue_flush - RTEMS_INVALID_ID" );
217
218  status = rtems_message_queue_receive(
219    100,
220    (long (*)[4]) buffer,
221    &size,
222    RTEMS_DEFAULT_OPTIONS,
223    0
224  );
225  fatal_directive_status(
226    status,
227    RTEMS_INVALID_ID,
228    "rtems_message_queue_receive with illegal id"
229  );
230  puts( "TA1 - rtems_message_queue_receive - RTEMS_INVALID_ID" );
231
232  status = rtems_message_queue_receive(
233    Queue_id[ 1 ],
234    NULL,
235    &size,
236    RTEMS_NO_WAIT,
237    RTEMS_NO_TIMEOUT
238  );
239  fatal_directive_status(
240    status,
241    RTEMS_INVALID_ADDRESS,
242    "rtems_message_queue_receive NULL buffer"
243  );
244  puts( "TA1 - rtems_message_queue_receive - Q 1 - RTEMS_INVALID_ADDRESS NULL buffer" );
245
246  status = rtems_message_queue_receive(
247    Queue_id[ 1 ],
248    (long (*)[4]) buffer,
249    NULL,
250    RTEMS_NO_WAIT,
251    RTEMS_NO_TIMEOUT
252  );
253  fatal_directive_status(
254    status,
255    RTEMS_INVALID_ADDRESS,
256    "rtems_message_queue_receive NULL size"
257  );
258  puts( "TA1 - rtems_message_queue_receive - Q 1 - RTEMS_INVALID_ADDRESS NULL size" );
259
260  status = rtems_message_queue_receive(
261    Queue_id[ 1 ],
262    (long (*)[4]) buffer,
263    &size,
264    RTEMS_NO_WAIT,
265    RTEMS_NO_TIMEOUT
266  );
267  fatal_directive_status(
268    status,
269    RTEMS_UNSATISFIED,
270    "rtems_message_queue_receive unsatisfied"
271  );
272  puts( "TA1 - rtems_message_queue_receive - Q 1 - RTEMS_UNSATISFIED" );
273
274  puts( "TA1 - rtems_message_queue_receive - Q 1 - timeout in 3 seconds" );
275  status = rtems_message_queue_receive(
276    Queue_id[ 1 ],
277    (long (*)[4]) buffer,
278    &size,
279    RTEMS_DEFAULT_OPTIONS,
280    3 * rtems_clock_get_ticks_per_second()
281  );
282  fatal_directive_status(
283    status,
284    RTEMS_TIMEOUT,
285    "rtems_message_queue_receive 3 second timeout"
286  );
287
288  puts(
289    "TA1 - rtems_message_queue_receive - Q 1 - woke up with RTEMS_TIMEOUT"
290  );
291
292  /* send NULL message*/
293  status = rtems_message_queue_send( Queue_id[ 1 ], NULL, MESSAGE_SIZE );
294  fatal_directive_status(
295    status,
296    RTEMS_INVALID_ADDRESS,
297    "rtems_message_queue_send with NULL buffer"
298  );
299  puts(
300    "TA1 - rtems_message_queue_send - NULL buffer - RTEMS_INVALID_ADDRESS"
301  );
302
303  /* send bad id */
304  status = rtems_message_queue_send( 100, buffer, MESSAGE_SIZE );
305  fatal_directive_status(
306    status,
307    RTEMS_INVALID_ID,
308    "rtems_message_queue_send with illegal id"
309  );
310  puts( "TA1 - rtems_message_queue_send - RTEMS_INVALID_ID" );
311
312  status = rtems_message_queue_send( Queue_id[ 1 ], buffer, MESSAGE_SIZE );
313  directive_failed( status, "rtems_message_queue_send" );
314  puts( "TA1 - rtems_message_queue_send - BUFFER 1 TO Q 1 - RTEMS_SUCCESSFUL" );
315
316  status = rtems_message_queue_send( Queue_id[ 1 ], buffer, MESSAGE_SIZE );
317  directive_failed( status, "rtems_message_queue_send" );
318  puts( "TA1 - rtems_message_queue_send - BUFFER 2 TO Q 1 - RTEMS_SUCCESSFUL" );
319
320  status = rtems_message_queue_send( Queue_id[ 1 ], buffer, MESSAGE_SIZE );
321  fatal_directive_status(
322    status,
323    RTEMS_TOO_MANY,
324    "rtems_message_queue_send too many to a limited queue"
325  );
326  puts( "TA1 - rtems_message_queue_send - BUFFER 3 TO Q 1 - RTEMS_TOO_MANY" );
327
328  /* urgent NULL message*/
329  status = rtems_message_queue_urgent( Queue_id[ 1 ], NULL, MESSAGE_SIZE );
330  fatal_directive_status(
331    status,
332    RTEMS_INVALID_ADDRESS,
333    "rtems_message_queue_urgent with NULL buffer"
334  );
335  puts(
336    "TA1 - rtems_message_queue_urgent - NULL buffer - RTEMS_INVALID_ADDRESS"
337  );
338
339  /* urgent bad Id */
340  status = rtems_message_queue_urgent( 100, buffer, MESSAGE_SIZE );
341  fatal_directive_status(
342    status,
343    RTEMS_INVALID_ID,
344    "rtems_message_queue_urgent with illegal id"
345  );
346  puts( "TA1 - rtems_message_queue_urgent - RTEMS_INVALID_ID" );
347
348  status = rtems_message_queue_broadcast( Queue_id[ 1 ], NULL, MESSAGE_SIZE, &count );
349  fatal_directive_status(
350    status,
351    RTEMS_INVALID_ADDRESS,
352    "rtems_message_queue_broadcast with NULL count"
353  );
354  puts( "TA1 - rtems_message_queue_broadcast - NULL buffer - RTEMS_INVALID_ADDRESS" );
355
356  status = rtems_message_queue_broadcast( Queue_id[ 1 ], buffer, MESSAGE_SIZE, NULL );
357  fatal_directive_status(
358    status,
359    RTEMS_INVALID_ADDRESS,
360    "rtems_message_queue_broadcast with NULL count"
361  );
362  puts( "TA1 - rtems_message_queue_broadcast - NULL count - RTEMS_INVALID_ADDRESS" );
363
364}
Note: See TracBrowser for help on using the repository browser.