source: rtems/testsuites/sptests/sp09/screen07.c @ 6a4ccdf

4.115
Last change on this file since 6a4ccdf was 6a4ccdf, checked in by Joel Sherrill <joel.sherrill@…>, on 03/11/11 at 20:26:59

2011-03-11 Joel Sherrill <joel.sherrilL@…>

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