File indexing completed on 2025-05-11 08:24:42
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #ifdef HAVE_CONFIG_H
0030 #include "config.h"
0031 #endif
0032
0033 #define CONFIGURE_INIT
0034
0035 #include "system.h"
0036 #include "tmacros.h"
0037 #include <stdio.h>
0038 #include <stdlib.h>
0039
0040 const char rtems_test_name[] = "UNLIMITED TASK";
0041
0042 rtems_id task_id[MAX_TASKS];
0043
0044 rtems_task Init(
0045 rtems_task_argument ignored
0046 )
0047 {
0048 rtems_task_priority old_priority;
0049 rtems_mode old_mode;
0050 uint32_t task;
0051
0052 TEST_BEGIN();
0053
0054
0055
0056 rtems_task_set_priority(
0057 RTEMS_SELF, RTEMS_MAXIMUM_PRIORITY - 1, &old_priority);
0058 rtems_task_mode(RTEMS_PREEMPT, RTEMS_PREEMPT_MASK, &old_mode);
0059
0060
0061
0062
0063
0064 for (task = 0; task < MAX_TASKS; task++)
0065 task_id[task] = 0;
0066
0067 test1();
0068 test2();
0069 test3();
0070
0071 TEST_END();
0072 exit( 0 );
0073 }
0074
0075 rtems_task test_task(
0076 rtems_task_argument my_number
0077 )
0078 {
0079 rtems_event_set out;
0080 unsigned int my_n = (unsigned int) my_number;
0081
0082 printf( "task %u has started.\n", my_n);
0083
0084 rtems_event_receive(1, RTEMS_WAIT | RTEMS_EVENT_ANY, 0, &out);
0085
0086 printf( "task %u ending.\n", my_n);
0087
0088 rtems_task_exit();
0089 }
0090
0091 void destroy_all_tasks(
0092 const char *who
0093 )
0094 {
0095 uint32_t task;
0096
0097
0098
0099
0100
0101 for (task = 0; task < MAX_TASKS; task++) {
0102 if (task_id[task]) {
0103 printf(
0104 " %s : signal task %08" PRIxrtems_id " to delete, ",
0105 who,
0106 task_id[task]
0107 );
0108 fflush(stdout);
0109 rtems_event_send(task_id[task], 1);
0110 task_id[task] = 0;
0111 }
0112 }
0113 }
0114
0115 bool status_code_bad(
0116 rtems_status_code status_code
0117 )
0118 {
0119 if (status_code != RTEMS_SUCCESSFUL)
0120 {
0121 printf("failure, ");
0122
0123 if (status_code == RTEMS_TOO_MANY)
0124 {
0125 printf("too many.\n");
0126 return TRUE;
0127 }
0128 if (status_code == RTEMS_UNSATISFIED)
0129 {
0130 printf("unsatisfied.\n");
0131 return TRUE;
0132 }
0133
0134 printf("error code = %i\n", status_code);
0135 exit( 1 );
0136 }
0137 return FALSE;
0138 }