source: rtems/testsuites/libtests/rtems++/Task1.cc @ b5a555a7

4.104.114.84.95
Last change on this file since b5a555a7 was b5a555a7, checked in by Joel Sherrill <joel.sherrill@…>, on 02/06/07 at 19:14:32

2007-02-06 Joel Sherrill <joel@…>

  • rtems++/Task1.cc, rtems++/Task3.cc: Address size_t/uint32_t typing issues in message queue tests.
  • Property mode set to 100644
File size: 21.5 KB
Line 
1/*  Task1
2 *
3 *  This task is the main line for the test. It creates other
4 *  tasks which can create
5 *
6 *  Input parameters:
7 *    argument - task argument
8 *
9 *  Output parameters:  NONE
10 *
11 *  COPYRIGHT (c) 1997
12 *  Objective Design Systems Ltd Pty (ODS)
13 *  All rights reserved (R) Objective Design Systems Ltd Pty
14 *
15 *  COPYRIGHT (c) 1989-2007.
16 *  On-Line Applications Research Corporation (OAR).
17 *
18 *  The license and distribution terms for this file may be
19 *  found in the file LICENSE in this distribution or at
20 *  http://www.rtems.com/license/LICENSE.
21 *
22 *  $Id$
23 */
24
25#include <stdlib.h>
26#include <string.h>
27#include "System.h"
28
29void Task1::body(rtems_task_argument argument)
30{
31  rtems_test_pause_and_screen_number(1);
32 
33  printf(" * START Task Class test *\n");
34 
35  printf("%s - test argument - ", name_string());
36  if (argument != 0xDEADDEAD)
37    printf("argument is not 0xDEADDEAD\n");
38  else
39    printf("argument matched\n");
40 
41  screen1();
42  rtems_test_pause_and_screen_number(2);
43
44  screen2();
45  rtems_test_pause_and_screen_number(3);
46 
47  screen3();
48  rtems_test_pause_and_screen_number(4);
49 
50  screen4();
51  rtems_test_pause_and_screen_number(5);
52 
53  screen5();
54  rtems_test_pause_and_screen_number(6);
55 
56  screen6();
57
58  // do not call exit(0) from this thread as this object is static
59  // the static destructor call delete the task which is calling exit
60  // so exit never completes
61 
62  EndTask end_task("ENDT", (rtems_task_priority) 1, RTEMS_MINIMUM_STACK_SIZE * 6);
63  end_task.start(0);
64
65  rtemsEvent block_me;
66  rtems_event_set out;
67 
68  block_me.receive(RTEMS_SIGNAL_0, out);
69
70  printf("**** TASK 1 did not block ????\n");
71}
72
73void Task1::screen1(void)
74{
75  // create two local task objects to connect to this task
76  rtemsTask local_task_1 = *this;
77  rtemsTask local_task_2;
78
79  local_task_2 = *this;
80 
81  // check the copy constructor works
82  printf("%s - copy constructor - ", name_string());
83  if (local_task_1.id_is() == id_is())
84    printf("local and this id's match\n");
85  else
86    printf("local and this id's do not match\n");
87
88  printf("%s - copy constructor - ", name_string());
89  if (local_task_1.name_is() == name_is())
90    printf("local and this name's match\n");
91  else
92    printf("local and this name's do not match\n");
93
94  // check the copy operator works
95  printf("%s - copy operator - ", name_string());
96  if (local_task_2.id_is() == id_is())
97    printf("local and this id's match\n");
98  else
99    printf("local and this id's do not match\n");
100  printf("%s - copy operator - ", name_string());
101  if (local_task_2.name_is() == name_is())
102    printf("local and this name's match\n");
103  else
104    printf("local and this name's do not match\n");
105 
106  // check that the owner of the id cannot delete this task
107  printf("%s - not owner destroy's task - ", local_task_1.name_string());
108  local_task_1.destroy();
109  printf("%s\n", local_task_1.last_status_string());
110 
111  // connect to a valid task
112  printf("%s - connect to a local valid task name - ", local_task_2.name_string());
113  local_task_2.connect("TA1 ", RTEMS_SEARCH_ALL_NODES);
114  printf("%s\n", local_task_2.last_status_string());
115 
116  // connect to an invalid task
117  printf("%s - connect to an invalid task name - ", local_task_2.name_string());
118  local_task_2.connect("BADT", RTEMS_SEARCH_ALL_NODES);
119  printf("%s\n", local_task_2.last_status_string());
120 
121  // connect to a task an invalid node
122  printf("%s - connect to a task on an invalid node - ", local_task_2.name_string());
123  local_task_2.connect("BADT", 10);
124  printf("%s\n", local_task_2.last_status_string());
125 
126  // restart this task
127  printf("%s - restart from a non-owner - ", name_string());
128  local_task_1.restart(0);
129  printf("%s\n", local_task_1.last_status_string());
130}
131
132void Task1::screen2(void)
133{
134  // wake after using this object
135 
136  printf("%s - wake after 0 secs - ", name_string());
137  wake_after(0);
138  printf("%s\n", last_status_string());
139 
140  printf("%s - wake after 500 msecs - ", name_string());
141  wake_after(500000);
142  printf("%s\n", last_status_string());
143 
144  printf("%s - wake after 5 secs - ", name_string());
145  wake_after(5000000);
146  printf("%s\n", last_status_string());
147
148  printf("%s - wake when - to do\n", name_string());
149
150  rtemsTask task_1 = *this;
151 
152  // wake after using a connected object
153 
154  printf("%s - connected object wake after 0 secs - ", task_1.name_string());
155  task_1.wake_after(0);
156  printf("%s\n", task_1.last_status_string());
157 
158  printf("%s - connected object wake after 500 msecs - ", task_1.name_string());
159  task_1.wake_after(500000);
160  printf("%s\n", task_1.last_status_string());
161 
162  printf("%s - connected object wake after 5 secs - ", task_1.name_string());
163  task_1.wake_after(5000000);
164  printf("%s\n", task_1.last_status_string());
165
166  printf("%s - connected object wake when - to do\n", task_1.name_string());
167
168  rtemsTask task_2;
169 
170  // wake after using a self object
171 
172  printf("%s - self object wake after 0 secs - ", task_2.name_string());
173  task_2.wake_after(0);
174  printf("%s\n", task_2.last_status_string());
175 
176  printf("%s - self object wake after 500 msecs - ", task_2.name_string());
177  task_2.wake_after(500000);
178  printf("%s\n", task_2.last_status_string());
179 
180  printf("%s - self object wake after 5 secs - ", task_2.name_string());
181  task_2.wake_after(5000000);
182  printf("%s\n", task_2.last_status_string());
183
184  printf("%s - self object wake when - to do\n", task_2.name_string());
185
186  rtems_task_priority current_priority;
187  rtems_task_priority priority;
188
189  // priorities with this object
190 
191  printf("%s - get priority - ", name_string());
192  get_priority(current_priority);
193  printf("%s, priority is %i\n", last_status_string(), current_priority);
194
195  printf("%s - set priority to 512 - ", name_string());
196  set_priority(512);
197  printf("%s\n", last_status_string());
198
199  printf("%s - set priority to 25 - ", name_string());
200  set_priority(25);
201  printf("%s\n", last_status_string());
202
203  printf("%s - set priority to original - ", name_string());
204  set_priority(current_priority, priority);
205  printf("%s, priority was %i\n", last_status_string(), priority);
206
207  // priorities with connected object
208   
209  printf("%s - connected object get priority - ", task_1.name_string());
210  task_1.get_priority(current_priority);
211  printf("%s, priority is %i\n", task_1.last_status_string(), current_priority);
212
213  printf("%s - connected object set priority to 512 - ", task_1.name_string());
214  task_1.set_priority(512);
215  printf("%s\n", task_1.last_status_string());
216
217  printf("%s - connected object set priority to 25 - ", task_1.name_string());
218  task_1.set_priority(25);
219  printf("%s\n", task_1.last_status_string());
220
221  printf("%s - connected object set priority to original - ", task_1.name_string());
222  task_1.set_priority(current_priority, priority);
223  printf("%s, priority was %i\n", task_1.last_status_string(), priority); 
224
225  // priorities with self object
226   
227  printf("%s - self object get priority - ", task_2.name_string());
228  task_2.get_priority(current_priority);
229  printf("%s, priority is %i\n", task_2.last_status_string(), current_priority);
230
231  printf("%s - self object set priority to 512 - ", task_2.name_string());
232  task_2.set_priority(512);
233  printf("%s\n", task_2.last_status_string());
234
235  printf("%s - self object set priority to 25 - ", task_2.name_string());
236  task_2.set_priority(25);
237  printf("%s\n", task_2.last_status_string());
238
239  printf("%s - self object set priority to original - ", task_2.name_string());
240  task_2.set_priority(current_priority, priority);
241  printf("%s, priority was %i\n", task_2.last_status_string(), priority);
242
243  uint32_t   current_note;
244  uint32_t   note;
245 
246  // notepad registers for this object
247
248  printf("%s - get note - ", name_string());
249  get_note(0, current_note);
250  printf("%s, note is %i\n", last_status_string(), current_note);
251
252  printf("%s - get with bad notepad number - ", name_string());
253  get_note(100, current_note);
254  printf("%s, note is %i\n", last_status_string(), current_note);
255
256  printf("%s - set note to 0xDEADBEEF - ", name_string());
257  set_note(0, 0xDEADBEEF);
258  printf("%s\n", last_status_string());
259
260  printf("%s - get note - ", name_string());
261  get_note(0, note);
262  printf("%s, note is 0x%08X\n", last_status_string(), note);
263
264  printf("%s - set note to original value - ", name_string());
265  set_note(0, current_note);
266  printf("%s\n", last_status_string());
267
268  // notepad registers for connected object
269
270  printf("%s - connected object get note - ", task_1.name_string());
271  task_1.get_note(0, current_note);
272  printf("%s, notepad is %i\n", task_1.last_status_string(), current_note);
273
274  printf("%s - connected object get with bad notepad number - ", task_1.name_string());
275  task_1.get_note(100, current_note);
276  printf("%s, note is %i\n", task_1.last_status_string(), current_note);
277
278  printf("%s - connected object set note to 0xDEADBEEF - ", task_1.name_string());
279  task_1.set_note(0, 0xDEADBEEF);
280  printf("%s\n", task_1.last_status_string());
281
282  printf("%s - connected object get note - ", task_1.name_string());
283  task_1.get_note(0, note);
284  printf("%s, note is 0x%08X\n", task_1.last_status_string(), note);
285
286  printf("%s - connected object set note to original value - ", task_1.name_string());
287  task_1.set_note(0, current_note);
288  printf("%s\n", task_1.last_status_string());
289
290  // notepad registers for self object
291
292  printf("%s - self object get note - ", task_2.name_string());
293  task_2.get_note(0, current_note);
294  printf("%s, note is %i\n", task_2.last_status_string(), current_note);
295
296  printf("%s - self object get with bad notepad number - ", task_2.name_string());
297  task_2.get_note(100, current_note);
298  printf("%s, note is %i\n", task_2.last_status_string(), current_note);
299
300  printf("%s - self object set note to 0xDEADBEEF - ", task_2.name_string());
301  task_2.set_note(0, 0xDEADBEEF);
302  printf("%s\n", task_2.last_status_string());
303
304  printf("%s - self object get note - ", task_2.name_string());
305  task_2.get_note(0, note);
306  printf("%s, notepad is 0x%08X\n", task_2.last_status_string(), note);
307
308  printf("%s - self object set note to original value - ", task_2.name_string());
309  task_2.set_note(0, current_note);
310  printf("%s\n", task_2.last_status_string());
311
312  printf(" * END Task Class test *\n");
313}
314
315#define RTEMS_ALL_MODES (RTEMS_PREEMPT_MASK | \
316                         RTEMS_TIMESLICE_MASK | \
317                         RTEMS_ASR_MASK | \
318                         RTEMS_INTERRUPT_MASK)
319
320void Task1::screen3(void)
321{
322  printf(" * START TaskMode Class test *\n");
323
324  rtemsTask self;
325  rtemsTaskMode task_mode;
326  rtems_mode current_mode;
327  rtems_mode mode;
328
329  printf("%s - get mode - ", self.name_string());
330  task_mode.get_mode(current_mode);
331  printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), current_mode);
332  print_mode(current_mode, RTEMS_ALL_MODES);
333  printf("\n");
334
335  // PREEMPTION mode control
336 
337  printf("%s - get preemption state - ", self.name_string());
338  task_mode.get_preemption_state(mode);
339  printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
340  print_mode(mode, RTEMS_PREEMPT_MASK);
341  printf("\n");
342 
343  printf("%s - set preemption state to RTEMS_PREEMPT - ", self.name_string());
344  task_mode.set_preemption_state(RTEMS_PREEMPT);
345  task_mode.get_mode(mode);
346  printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
347  print_mode(mode, RTEMS_ALL_MODES);
348  printf("\n");
349 
350  printf("%s - set preemption state to RTEMS_NO_PREEMPT - ", self.name_string());
351  task_mode.set_preemption_state(RTEMS_NO_PREEMPT);
352  task_mode.get_mode(mode);
353  printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
354  print_mode(mode, RTEMS_ALL_MODES);
355  printf("\n");
356
357  // TIMESLICE mode control
358 
359  printf("%s - get timeslice state - ", self.name_string());
360  task_mode.get_timeslice_state(mode);
361  printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
362  print_mode(mode, RTEMS_TIMESLICE_MASK);
363  printf("\n");
364 
365  printf("%s - set timeslice state to RTEMS_TIMESLICE - ", self.name_string());
366  task_mode.set_timeslice_state(RTEMS_TIMESLICE);
367  task_mode.get_mode(mode);
368  printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
369  print_mode(mode, RTEMS_ALL_MODES);
370  printf("\n");
371 
372  printf("%s - set timeslice state to RTEMS_NO_TIMESLICE - ", self.name_string());
373  task_mode.set_timeslice_state(RTEMS_NO_TIMESLICE);
374  task_mode.get_mode(mode);
375  printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
376  print_mode(mode, RTEMS_ALL_MODES);
377  printf("\n");
378
379  // ASR mode control
380 
381  printf("%s - get asr state - ", self.name_string());
382  task_mode.get_asr_state(mode);
383  printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
384  print_mode(mode, RTEMS_ASR_MASK);
385  printf("\n");
386 
387  printf("%s - set asr state to RTEMS_ASR - ", self.name_string());
388  task_mode.set_asr_state(RTEMS_ASR);
389  task_mode.get_mode(mode);
390  printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
391  print_mode(mode, RTEMS_ALL_MODES);
392  printf("\n");
393 
394  printf("%s - set asr state to RTEMS_NO_ASR - ", self.name_string());
395  task_mode.set_asr_state(RTEMS_NO_ASR);
396  task_mode.get_mode(mode);
397  printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
398  print_mode(mode, RTEMS_ALL_MODES);
399  printf("\n");
400
401  // interrupt level control
402 
403  rtems_interrupt_level current_level;
404  rtems_interrupt_level level;
405
406  printf("%s - get current interrupt level - ", self.name_string());
407  task_mode.get_interrupt_level(current_level);
408  printf("%s, level is %i\n", task_mode.last_status_string(), current_level);
409
410  printf("%s - set interrupt level to 102 - ", self.name_string());
411  task_mode.set_interrupt_level(102);
412  printf("%s\n", task_mode.last_status_string());
413 
414  printf("%s - set interrupt level to original level - ", self.name_string());
415  task_mode.set_interrupt_level(current_level, level);
416  printf("%s, level was %i\n", task_mode.last_status_string(), level);
417
418  printf("%s - set mode to original mode - ", self.name_string());
419  task_mode.set_mode(current_mode,
420                     RTEMS_PREEMPT_MASK | RTEMS_TIMESLICE_MASK |
421                     RTEMS_ASR_MASK | RTEMS_INTERRUPT_MASK);
422  task_mode.get_mode(mode);
423  printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
424  print_mode(mode, RTEMS_ALL_MODES);
425  printf("\n");
426 
427  printf(" * END TaskMode Class test *\n"); 
428}
429
430void Task1::screen4(void)
431{
432  printf(" * START Event Class test *\n");
433
434  printf("%s - create task 2 - ", name_string());
435  Task2 task_2("TA2", (rtems_task_priority) 9, RTEMS_MINIMUM_STACK_SIZE * 6);
436  printf("%s\n", task_2.last_status_string());
437
438  printf("%s - start task 2 - ", name_string());
439  task_2.start(0);
440  printf("%s\n", task_2.last_status_string());
441 
442  printf("%s - construct event connecting to task 2 - ", name_string());
443  rtemsEvent event_2("TA2 ");
444  printf("%s\n", event_2.last_status_string());
445
446  // wait for task 2 to complete its timeout tests
447  wake_after(7000000);
448
449  printf("%s - send event signal 0 using the task id - ", name_string());
450  event_2.send(task_2.id_is(), RTEMS_SIGNAL_0);
451  printf("%s\n", event_2.last_status_string());
452 
453  wake_after(1000000);
454
455  printf("%s - send event signal 0 using the task object reference - ", name_string());
456  event_2.send(task_2, RTEMS_SIGNAL_0);
457  printf("%s\n", event_2.last_status_string());
458 
459  wake_after(1000000);
460
461  printf("%s - send event signal 31 using connected id - ", name_string());
462  event_2.send(RTEMS_SIGNAL_31);
463  printf("%s\n", event_2.last_status_string());
464 
465  wake_after(1000000);
466
467  rtemsEvent event_2_2;
468
469  event_2_2.connect("TA2");
470 
471  printf("%s - send event signal 0 and 31 - ", name_string());
472  event_2_2.send(task_2, RTEMS_SIGNAL_0 | RTEMS_SIGNAL_31);
473  printf("%s\n", event_2_2.last_status_string());
474 
475  printf("%s - waiting 5 secs for TA2 to finish\n", name_string());
476  wake_after(500000);
477 
478  printf(" * END Event Class test *\n"); 
479}
480
481void Task1::screen5(void)
482{
483  printf(" * START Interrupt Class test *\n");
484
485  printf(" do not know a portable BSP type interrupt test\n");
486
487  printf(" * END Interrupt Class test *\n"); 
488}
489
490void Task1::screen6(void)
491{
492  printf(" * START MessageQueue Class test *\n");
493
494  printf("%s - construct message queue 1 with no memory error - ", name_string());
495  rtemsMessageQueue mq_1("MQ1", 1000000, 1000);
496  printf("%s\n", mq_1.last_status_string());
497
498  printf("%s - construct/create message queue 2 - ", name_string());
499  rtemsMessageQueue mq_2("MQ2", 4, 50);
500  printf("%s\n", mq_2.last_status_string());
501
502  const char *u1 = "normal send";
503  const char *u2 = "urgent send";
504  char in[100];
505  size_t  size;
506  uint32_t count;
507 
508  printf("%s - send u1 to mq_2 - ", name_string());
509  mq_2.send(u1, strlen(u1) + 1);
510  printf("%s\n", mq_2.last_status_string());
511 
512  printf("%s - urgent send u2 to mq_2 - ", name_string());
513  mq_2.urgent(u2, strlen(u2) + 1);
514  printf("%s\n", mq_2.last_status_string());
515 
516  printf("%s - create task 3_1 - ", name_string());
517  Task3 task_3_1("TA31", 9, RTEMS_MINIMUM_STACK_SIZE * 6);
518  printf("%s\n", task_3_1.last_status_string());
519
520  printf("%s - start task 3_1 - ", name_string());
521  task_3_1.start(0);
522  printf("%s\n", task_3_1.last_status_string());
523 
524  printf("%s - create task 3_2 - ", name_string());
525  Task3 task_3_2("TA32", 9, RTEMS_MINIMUM_STACK_SIZE * 6);
526  printf("%s\n", task_3_2.last_status_string());
527
528  printf("%s - start task 3_2 - ", name_string());
529  task_3_2.start(0);
530  printf("%s\n", task_3_1.last_status_string());
531 
532  wake_after(1000000);
533 
534  printf("%s - receive u2 on mq_2 ...\n", name_string()); fflush(stdout);
535  mq_2.receive(in, size, 5000000);
536  printf("%s - %s\n", name_string(), mq_2.last_status_string());
537
538  if (size == (strlen(u2) + 5))
539  {
540    if ((strncmp(in, task_3_1.name_string(), 4) == 0) &&
541        (strcmp(in + 4, u2) == 0))
542    {
543      printf("%s - message u2 received correctly\n", name_string());
544    }
545    else
546    {
547      printf("%s - message u2 received incorrectly, message='%s', size=%i\n",
548             name_string(), in, size);
549    }
550  }
551  else
552    printf("%s - message u2 size incorrect, size=%i\n", name_string(), size);
553
554  printf("%s - receive u1 on mq_2 ...\n", name_string()); fflush(stdout);
555  mq_2.receive(in, size, 5000000);
556  printf("%s - %s\n", name_string(), mq_2.last_status_string());
557
558  if (size == (strlen(u1) + 5))
559  {
560    if ((strncmp(in, task_3_2.name_string(), 4) == 0) &&
561        (strcmp(in + 4, u1) == 0))
562    {
563      printf("%s - message u1 received correctly\n", name_string());
564    }
565    else
566    {
567      printf("%s - message u1 received incorrectly, message='%s', size=%i\n",
568             name_string(), in, size);
569    }
570  }
571  else
572    printf("%s - message u1 size incorrect, size=%i\n", name_string(), size);
573
574  wake_after(3000000);
575 
576  const char *b1 = "broadcast message";
577 
578  printf("%s - broadcast send b1 ...\n", name_string());
579  mq_2.broadcast(b1, strlen(b1) + 1, count);
580  printf("%s - mq_2 broadcast send - %s, count=%i\n",
581         name_string(), mq_2.last_status_string(), count);
582
583  wake_after(1000000);
584 
585  printf("%s - receive message b1 on mq_2 from %s...\n",
586         name_string(), task_3_1.name_string()); fflush(stdout);
587  mq_2.receive(in, size, 5000000);
588  printf("%s - %s\n", name_string(), mq_2.last_status_string());
589
590  if (size == (strlen(b1) + 5))
591  {
592    if ((strncmp(in, task_3_1.name_string(), 4) == 0) &&
593        (strcmp(in + 4, b1) == 0))
594    {
595      printf("%s - message b1 received correctly\n", name_string());
596    }
597    else
598    {
599      printf("%s - message b1 received incorrectly, message='%s'\n",
600             name_string(), in);
601    }
602  }
603  else
604    printf("%s - message b1 size incorrect, size=%i\n", name_string(), size);
605
606  printf("%s - receive message b1 on mq_2 from %s...\n",
607         name_string(), task_3_1.name_string()); fflush(stdout);
608  mq_2.receive(in, size, 5000000);
609  printf("%s - %s\n", name_string(), mq_2.last_status_string());
610
611  if (size == (strlen(b1) + 5))
612  {
613    if ((strncmp(in, task_3_2.name_string(), 4) == 0) &&
614        (strcmp(in + 4, b1) == 0))
615    {
616      printf("%s - message b1 received correctly\n", name_string());
617    }
618    else
619    {
620      printf("%s - message b1 received incorrectly, message='%s', size=%i\n",
621             name_string(), in, size);
622    }
623  }
624  else
625    printf("%s - message b1 size incorrect, size=%i\n", name_string(), size);
626
627  // wait for task 3_1, and 3_2 to complete their timeout tests, will
628  // start these after getting the broadcast message
629  wake_after(7000000); 
630
631  const char *f1 = "flush message";
632 
633  printf("%s - send f1 to mq_2 - ", name_string());
634  mq_2.send(f1, strlen(f1) + 1);
635  printf("%s\n", mq_2.last_status_string());
636 
637  printf("%s - send f1 to mq_2 - ", name_string());
638  mq_2.send(f1, strlen(f1) + 1);
639  printf("%s\n", mq_2.last_status_string());
640 
641  printf("%s - send f1 to mq_2 - ", name_string());
642  mq_2.send(f1, strlen(f1) + 1);
643  printf("%s\n", mq_2.last_status_string());
644
645  printf("%s - flush mq_2 - ", name_string());
646  mq_2.flush(count);
647  printf("%s, flushed=%i\n", mq_2.last_status_string(), count);
648 
649  printf(" * END MessageQueue Class test *\n"); 
650}
651
652void Task1::print_mode(rtems_mode mode, rtems_mode mask)
653{
654  rtemsTaskMode task_mode;
655  if (mask & RTEMS_PREEMPT_MASK)
656    printf("RTEMS_%sPREEMPT ",
657           task_mode.preemption_set(mode) ? "" : "NO_");
658  if (mask & RTEMS_TIMESLICE_MASK)
659    printf("RTEMS_%sTIMESLICE ",
660           task_mode.preemption_set(mode) ? "" : "NO_");
661  if (mask & RTEMS_ASR_MASK)
662    printf("RTEMS_%sASR ",
663           task_mode.asr_set(mode) ? "" : "NO_");
664  if (mask & RTEMS_INTERRUPT_MASK)
665    printf("INTMASK=%i",
666           mode & RTEMS_INTERRUPT_MASK);
667}
668
669EndTask::EndTask(const char* name,
670                 const rtems_task_priority initial_priority,
671                 const uint32_t   stack_size)
672  : rtemsTask(name, initial_priority, stack_size, RTEMS_NO_PREEMPT)
673{
674}
675 
676void EndTask::body(rtems_task_argument)
677{
678 printf("*** END OF RTEMS++ TEST ***\n");
679 exit(0);
680}
681
Note: See TracBrowser for help on using the repository browser.