source: rtems/c/src/tests/sptests/sp13/task1.c @ ac7d5ef0

4.104.114.84.95
Last change on this file since ac7d5ef0 was ac7d5ef0, checked in by Joel Sherrill <joel.sherrill@…>, on 05/11/95 at 17:39:37

Initial revision

  • Property mode set to 100644
File size: 7.6 KB
Line 
1/*  Task_1
2 *
3 *  This routine serves as a test task.  It verifies the message manager.
4 *
5 *  Input parameters:
6 *    argument - task argument
7 *
8 *  Output parameters:  NONE
9 *
10 *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
11 *  On-Line Applications Research Corporation (OAR).
12 *  All rights assigned to U.S. Government, 1994.
13 *
14 *  This material may be reproduced by or for the U.S. Government pursuant
15 *  to the copyright license under the clause at DFARS 252.227-7013.  This
16 *  notice must appear in all copies of this file and its derivatives.
17 *
18 *  $Id$
19 */
20
21#include "system.h"
22
23extern rtems_configuration_table BSP_Configuration;
24
25rtems_task Task_1(
26  rtems_task_argument argument
27)
28{
29  rtems_id          qid;
30  long              buffer[ 4 ];
31  rtems_unsigned32  index;
32  rtems_unsigned32  count;
33  rtems_status_code status;
34
35  status = rtems_message_queue_ident(
36    Queue_name[ 1 ],
37    RTEMS_SEARCH_ALL_NODES,
38    &qid
39  );
40  printf( "TA1 - rtems_message_queue_ident - qid => %08x\n", qid );
41  directive_failed( status, "rtems_message_queue_ident" );
42
43  Fill_buffer( "BUFFER 1 TO Q 1", buffer );
44  puts( "TA1 - rtems_message_queue_send - BUFFER 1 TO Q 1" );
45  status = rtems_message_queue_send( Queue_id[ 1 ], (long (*)[4])buffer );
46  directive_failed( status, "rtems_message_queue_send" );
47
48  Fill_buffer( "BUFFER 2 TO Q 1", buffer );
49  puts( "TA1 - rtems_message_queue_send - BUFFER 2 TO Q 1" );
50  status = rtems_message_queue_send( Queue_id[ 1 ], (long (*)[4])buffer );
51  directive_failed( status, "rtems_message_queue_send" );
52
53  puts( "TA1 - rtems_task_wake_after - sleep 5 seconds" );
54  status = rtems_task_wake_after( 5*TICKS_PER_SECOND );
55  directive_failed( status, "rtems_task_wake_after" );
56
57  Fill_buffer( "BUFFER 3 TO Q 1", buffer );
58  puts( "TA1 - rtems_message_queue_send - BUFFER 3 TO Q 1" );
59  status = rtems_message_queue_send( Queue_id[ 1 ], (long (*)[4])buffer );
60  directive_failed( status, "rtems_message_queue_send" );
61
62  puts( "TA1 - rtems_task_wake_after - sleep 5 seconds" );
63  status = rtems_task_wake_after( 5*TICKS_PER_SECOND );
64  directive_failed( status, "rtems_task_wake_after" );
65
66pause();
67
68  Fill_buffer( "BUFFER 1 TO Q 2", buffer );
69  puts( "TA1 - rtems_message_queue_send - BUFFER 1 TO Q 2" );
70  status = rtems_message_queue_send( Queue_id[ 2 ], (long (*)[4])buffer );
71  directive_failed( status, "rtems_message_queue_send" );
72
73  puts_nocr( "TA1 - rtems_message_queue_receive - receive from queue 1 - " );
74  puts     ( "10 second timeout" );
75  status = rtems_message_queue_receive(
76    Queue_id[ 1 ],
77    (long (*)[4])buffer,
78    RTEMS_DEFAULT_OPTIONS,
79    10 * TICKS_PER_SECOND
80  );
81  directive_failed( status, "rtems_message_queue_receive" );
82  puts_nocr( "TA1 - buffer received: " );
83  Put_buffer( buffer );
84  new_line;
85
86  puts( "TA1 - rtems_task_delete - delete TA2" );
87  status = rtems_task_delete( Task_id[ 2 ] );
88  directive_failed( status, "rtems_task_delete" );
89
90  Fill_buffer( "BUFFER 1 TO Q 3", buffer );
91  puts( "TA1 - rtems_message_queue_send - BUFFER 1 TO Q 3" );
92  status = rtems_message_queue_send( Queue_id[ 3 ], (long (*)[4])buffer );
93  directive_failed( status, "rtems_message_queue_send" );
94
95  puts( "TA1 - rtems_task_wake_after - sleep 5 seconds" );
96  status = rtems_task_wake_after( 5*TICKS_PER_SECOND );
97  directive_failed( status, "rtems_task_wake_after" );
98
99pause();
100
101  Fill_buffer( "BUFFER 2 TO Q 3", buffer );
102  puts( "TA1 - rtems_message_queue_send - BUFFER 2 TO Q 3" );
103  status = rtems_message_queue_send( Queue_id[ 3 ], (long (*)[4])buffer );
104  directive_failed( status, "rtems_message_queue_send" );
105
106  Fill_buffer( "BUFFER 3 TO Q 3", buffer );
107  puts( "TA1 - rtems_message_queue_send - BUFFER 3 TO Q 3" );
108  status = rtems_message_queue_send( Queue_id[ 3 ], (long (*)[4])buffer );
109  directive_failed( status, "rtems_message_queue_send" );
110
111  Fill_buffer( "BUFFER 4 TO Q 3", buffer );
112  puts( "TA1 - rtems_message_queue_send - BUFFER 4 TO Q 3" );
113  status = rtems_message_queue_send( Queue_id[ 3 ], (long (*)[4])buffer );
114  directive_failed( status, "rtems_message_queue_send" );
115
116  Fill_buffer( "BUFFER 5 TO Q 3", buffer );
117  puts( "TA1 - rtems_message_queue_urgent - BUFFER 5 TO Q 3" );
118  status = rtems_message_queue_urgent( Queue_id[ 3 ], (long (*)[4])buffer );
119  directive_failed( status, "rtems_message_queue_urgent" );
120
121  for ( index = 1 ; index <= 4 ; index++ ) {
122    puts(
123      "TA1 - rtems_message_queue_receive - receive from queue 3 - "
124        "RTEMS_WAIT FOREVER"
125    );
126    status = rtems_message_queue_receive(
127      Queue_id[ 3 ],
128      (long (*)[4])buffer,
129      RTEMS_DEFAULT_OPTIONS,
130      RTEMS_NO_TIMEOUT
131    );
132    directive_failed( status, "rtems_message_queue_receive" );
133    puts_nocr( "TA1 - buffer received: " );
134    Put_buffer( buffer );
135    new_line;
136  }
137
138  Fill_buffer( "BUFFER 3 TO Q 2", buffer );
139  puts( "TA1 - rtems_message_queue_urgent - BUFFER 3 TO Q 2" );
140  status = rtems_message_queue_urgent( Queue_id[ 2 ], (long (*)[4])buffer );
141  directive_failed( status, "rtems_message_queue_urgent" );
142
143  puts(
144    "TA1 - rtems_message_queue_receive - receive from queue 2 - "
145      "RTEMS_WAIT FOREVER"
146  );
147  status = rtems_message_queue_receive(
148    Queue_id[ 2 ],
149    (long (*)[4])buffer,
150    RTEMS_DEFAULT_OPTIONS,
151    RTEMS_NO_TIMEOUT
152  );
153  directive_failed( status, "rtems_message_queue_receive" );
154  puts_nocr( "TA1 - buffer received: " );
155  Put_buffer( buffer );
156  new_line;
157
158pause();
159
160  puts( "TA1 - rtems_message_queue_delete - delete queue 1" );
161  status = rtems_message_queue_delete( Queue_id[ 1 ] );
162  directive_failed( status, "rtems_message_queue_delete" );
163
164  Fill_buffer( "BUFFER 3 TO Q 2", buffer );
165  puts( "TA1 - rtems_message_queue_urgent - BUFFER 3 TO Q 2" );
166  status = rtems_message_queue_urgent( Queue_id[ 2 ], (long (*)[4])buffer );
167  directive_failed( status, "rtems_message_queue_urgent" );
168
169  puts( "TA1 - rtems_message_queue_delete - delete queue 2" );
170  status = rtems_message_queue_delete( Queue_id[ 2 ] );
171  directive_failed( status, "rtems_message_queue_delete" );
172
173  puts( "TA1 - rtems_message_queue_flush - empty Q 3" );
174  status = rtems_message_queue_flush( Queue_id[ 3 ], &count );
175  printf( "TA1 - %d messages were flushed from Q 3\n", count );
176
177  Fill_buffer( "BUFFER 1 TO Q 3", buffer );
178  puts( "TA1 - rtems_message_queue_send - BUFFER 1 TO Q 3" );
179  status = rtems_message_queue_send( Queue_id[ 3 ], (long (*)[4])buffer );
180  directive_failed( status, "rtems_message_queue_send" );
181
182  Fill_buffer( "BUFFER 2 TO Q 3", buffer );
183  puts( "TA1 - rtems_message_queue_send - BUFFER 2 TO Q 3" );
184  status = rtems_message_queue_send( Queue_id[ 3 ], (long (*)[4])buffer );
185  directive_failed( status, "rtems_message_queue_send" );
186
187  Fill_buffer( "BUFFER 3 TO Q 3", buffer );
188  puts( "TA1 - rtems_message_queue_send - BUFFER 3 TO Q 3" );
189  status = rtems_message_queue_send( Queue_id[ 3 ], (long (*)[4])buffer );
190  directive_failed( status, "rtems_message_queue_send" );
191
192  puts( "TA1 - rtems_message_queue_flush - Q 3" );
193  status = rtems_message_queue_flush( Queue_id[ 3 ], &count );
194  printf( "TA1 - %d messages were flushed from Q 3\n", count );
195
196  puts( "TA1 - rtems_message_queue_send until all message buffers consumed" );
197  while ( FOREVER ) {
198    status = rtems_message_queue_send( Queue_id[ 3 ], (long (*)[4])buffer );
199    if ( status == RTEMS_UNSATISFIED ) break;
200    directive_failed( status, "rtems_message_queue_send loop" );
201  }
202
203  puts( "TA1 - all message buffers consumed" );
204  puts( "TA1 - rtems_message_queue_flush - Q 3" );
205  status = rtems_message_queue_flush( Queue_id[ 3 ], &count );
206  printf( "TA1 - %d messages were flushed from Q 3\n", count );
207
208  if ( count != BSP_Configuration.maximum_messages )
209    printf( "TA1 - ERROR - %d messages flushed!!!", count );
210
211  puts( "*** END OF TEST 13 ***" );
212  exit( 0 );
213}
Note: See TracBrowser for help on using the repository browser.