File indexing completed on 2025-05-11 08:24:43
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 #ifdef HAVE_CONFIG_H
0029 #include "config.h"
0030 #endif
0031
0032 #include <sched.h>
0033 #include <limits.h>
0034
0035 #include <rtems.h>
0036 #include <rtems/libcsupport.h>
0037
0038 #include "tmacros.h"
0039
0040 const char rtems_test_name[] = "SMPSCHEDULER 2";
0041
0042 #define SCHED_A rtems_build_name(' ', ' ', ' ', 'A')
0043
0044 #define SCHED_B rtems_build_name(' ', ' ', ' ', 'B')
0045
0046 #define SCHED_C rtems_build_name(' ', ' ', ' ', 'C')
0047
0048 static rtems_id main_task_id;
0049
0050 static rtems_id cmtx_id;
0051
0052 static rtems_id imtx_id;
0053
0054 static volatile bool ready;
0055
0056 static void task(rtems_task_argument arg)
0057 {
0058 rtems_status_code sc;
0059
0060 (void) arg;
0061
0062 rtems_test_assert(rtems_scheduler_get_processor() == 1);
0063 rtems_test_assert(sched_get_priority_min(SCHED_RR) == 1);
0064 rtems_test_assert(sched_get_priority_max(SCHED_RR) == INT_MAX - 1);
0065
0066 sc = rtems_semaphore_obtain(cmtx_id, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
0067 rtems_test_assert(sc == RTEMS_NOT_DEFINED);
0068
0069 sc = rtems_event_transient_send(main_task_id);
0070 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0071
0072 sc = rtems_semaphore_obtain(imtx_id, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
0073 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0074
0075 sc = rtems_semaphore_release(imtx_id);
0076 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0077
0078 sc = rtems_event_transient_send(main_task_id);
0079 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0080
0081 while (1) {
0082
0083 }
0084 }
0085
0086 static void sticky_task(rtems_task_argument arg)
0087 {
0088 rtems_status_code sc;
0089 rtems_id mtx_id;
0090
0091 (void) arg;
0092
0093 rtems_test_assert(rtems_scheduler_get_processor() == 0);
0094
0095 sc = rtems_semaphore_create(
0096 rtems_build_name(' ', 'M', 'T', 'X'),
0097 1,
0098 RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY |
0099 RTEMS_MULTIPROCESSOR_RESOURCE_SHARING,
0100 2,
0101 &mtx_id
0102 );
0103 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0104
0105 sc = rtems_semaphore_obtain(mtx_id, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
0106 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0107
0108 ready = true;
0109
0110 sc = rtems_event_transient_receive(RTEMS_WAIT, RTEMS_NO_TIMEOUT);
0111 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0112
0113 sc = rtems_semaphore_release(mtx_id);
0114 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0115
0116 sc = rtems_semaphore_delete(mtx_id);
0117 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0118
0119 sc = rtems_event_transient_send(main_task_id);
0120 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0121
0122 while (1) {
0123
0124 }
0125 }
0126
0127 static void test_scheduler_add_remove_processors(void)
0128 {
0129 rtems_status_code sc;
0130 rtems_id scheduler_a_id;
0131 rtems_id scheduler_c_id;
0132
0133 sc = rtems_scheduler_ident(SCHED_A, &scheduler_a_id);
0134 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0135
0136 sc = rtems_scheduler_ident(SCHED_C, &scheduler_c_id);
0137 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0138
0139 sc = rtems_scheduler_add_processor(scheduler_c_id, 62);
0140 rtems_test_assert(sc == RTEMS_NOT_CONFIGURED);
0141
0142 sc = rtems_scheduler_add_processor(scheduler_c_id, 63);
0143 rtems_test_assert(sc == RTEMS_INCORRECT_STATE);
0144
0145 sc = rtems_scheduler_remove_processor(scheduler_c_id, 62);
0146 rtems_test_assert(sc == RTEMS_INVALID_NUMBER);
0147
0148 sc = rtems_scheduler_remove_processor(scheduler_a_id, 0);
0149 rtems_test_assert(sc == RTEMS_RESOURCE_IN_USE);
0150
0151 if (rtems_scheduler_get_processor_maximum() > 1) {
0152 rtems_id scheduler_id;
0153 rtems_id scheduler_b_id;
0154 rtems_id task_id;
0155 cpu_set_t first_cpu;
0156
0157 sc = rtems_scheduler_ident(SCHED_B, &scheduler_b_id);
0158 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0159
0160 sc = rtems_scheduler_remove_processor(scheduler_b_id, 1);
0161 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0162
0163 sc = rtems_scheduler_add_processor(scheduler_a_id, 1);
0164 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0165
0166 rtems_test_assert(rtems_scheduler_get_processor() == 0);
0167
0168 sc = rtems_scheduler_remove_processor(scheduler_a_id, 0);
0169 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0170
0171 rtems_test_assert(rtems_scheduler_get_processor() == 1);
0172
0173 CPU_ZERO(&first_cpu);
0174 CPU_SET(0, &first_cpu);
0175 sc = rtems_scheduler_ident_by_processor_set(
0176 sizeof(first_cpu),
0177 &first_cpu,
0178 &scheduler_id
0179 );
0180 rtems_test_assert(sc == RTEMS_INCORRECT_STATE);
0181
0182 sc = rtems_scheduler_add_processor(scheduler_a_id, 0);
0183 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0184
0185 rtems_test_assert(rtems_scheduler_get_processor() == 1);
0186
0187 sc = rtems_task_create(
0188 rtems_build_name('T', 'A', 'S', 'K'),
0189 2,
0190 RTEMS_MINIMUM_STACK_SIZE,
0191 RTEMS_DEFAULT_MODES,
0192 RTEMS_DEFAULT_ATTRIBUTES,
0193 &task_id
0194 );
0195 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0196
0197 sc = rtems_task_start(task_id, sticky_task, 0);
0198 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0199
0200 while (!ready) {
0201
0202 }
0203
0204 sc = rtems_scheduler_remove_processor(scheduler_a_id, 1);
0205 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0206
0207 rtems_test_assert(rtems_scheduler_get_processor() == 0);
0208
0209 sc = rtems_event_transient_send(task_id);
0210 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0211
0212 sc = rtems_event_transient_receive(RTEMS_WAIT, RTEMS_NO_TIMEOUT);
0213 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0214
0215 sc = rtems_task_delete(task_id);
0216 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0217
0218 sc = rtems_scheduler_add_processor(scheduler_b_id, 1);
0219 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0220 }
0221 }
0222
0223 static void test(void)
0224 {
0225 rtems_status_code sc;
0226 rtems_id task_id;
0227 rtems_id scheduler_id;
0228 rtems_id scheduler_a_id;
0229 rtems_id scheduler_b_id;
0230 rtems_id scheduler_c_id;
0231 rtems_task_priority prio;
0232 cpu_set_t cpuset;
0233 cpu_set_t first_cpu;
0234 cpu_set_t second_cpu;
0235 cpu_set_t all_cpus;
0236 cpu_set_t online_cpus;
0237 uint32_t cpu_count;
0238
0239 rtems_test_assert(rtems_scheduler_get_processor() == 0);
0240
0241 cpu_count = rtems_scheduler_get_processor_maximum();
0242 main_task_id = rtems_task_self();
0243
0244 CPU_ZERO(&first_cpu);
0245 CPU_SET(0, &first_cpu);
0246
0247 CPU_ZERO(&second_cpu);
0248 CPU_SET(1, &second_cpu);
0249
0250 CPU_FILL(&all_cpus);
0251
0252 CPU_ZERO(&online_cpus);
0253 CPU_SET(0, &online_cpus);
0254
0255 if (cpu_count > 1) {
0256 CPU_SET(1, &online_cpus);
0257 }
0258
0259 sc = rtems_scheduler_ident(SCHED_A, &scheduler_a_id);
0260 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0261
0262 if (cpu_count > 1) {
0263 sc = rtems_scheduler_ident(SCHED_B, &scheduler_b_id);
0264 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0265 rtems_test_assert(scheduler_a_id != scheduler_b_id);
0266 }
0267
0268 sc = rtems_scheduler_ident(SCHED_C, &scheduler_c_id);
0269 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0270
0271 sc = rtems_semaphore_create(
0272 rtems_build_name('C', 'M', 'T', 'X'),
0273 1,
0274 RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY | RTEMS_PRIORITY_CEILING,
0275 1,
0276 &cmtx_id
0277 );
0278 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0279
0280 sc = rtems_semaphore_create(
0281 rtems_build_name('I', 'M', 'T', 'X'),
0282 1,
0283 RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY | RTEMS_INHERIT_PRIORITY,
0284 1,
0285 &imtx_id
0286 );
0287 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0288
0289 prio = 2;
0290 sc = rtems_semaphore_set_priority(cmtx_id, scheduler_a_id, prio, &prio);
0291 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0292 rtems_test_assert(prio == 1);
0293
0294 if (cpu_count > 1) {
0295 prio = 1;
0296 sc = rtems_semaphore_set_priority(cmtx_id, scheduler_b_id, prio, &prio);
0297 rtems_test_assert(sc == RTEMS_NOT_DEFINED);
0298 rtems_test_assert(prio == 1);
0299 }
0300
0301 CPU_ZERO(&cpuset);
0302 sc = rtems_scheduler_get_processor_set(
0303 scheduler_a_id,
0304 sizeof(cpuset),
0305 &cpuset
0306 );
0307 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0308 rtems_test_assert(CPU_EQUAL(&cpuset, &first_cpu));
0309
0310 if (cpu_count > 1) {
0311 CPU_ZERO(&cpuset);
0312 sc = rtems_scheduler_get_processor_set(
0313 scheduler_b_id,
0314 sizeof(cpuset),
0315 &cpuset
0316 );
0317 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0318 rtems_test_assert(CPU_EQUAL(&cpuset, &second_cpu));
0319 }
0320
0321 sc = rtems_task_create(
0322 rtems_build_name('T', 'A', 'S', 'K'),
0323 1,
0324 RTEMS_MINIMUM_STACK_SIZE,
0325 RTEMS_DEFAULT_MODES,
0326 RTEMS_DEFAULT_ATTRIBUTES,
0327 &task_id
0328 );
0329 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0330
0331 sc = rtems_task_get_scheduler(task_id, &scheduler_id);
0332 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0333 rtems_test_assert(scheduler_id == scheduler_a_id);
0334
0335 CPU_ZERO(&cpuset);
0336 sc = rtems_task_get_affinity(task_id, sizeof(cpuset), &cpuset);
0337 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0338 rtems_test_assert(CPU_EQUAL(&cpuset, &online_cpus));
0339
0340 rtems_test_assert(sched_get_priority_min(SCHED_RR) == 1);
0341 rtems_test_assert(sched_get_priority_max(SCHED_RR) == 254);
0342
0343 sc = rtems_task_set_scheduler(task_id, scheduler_c_id, 1);
0344 rtems_test_assert(sc == RTEMS_UNSATISFIED);
0345
0346 sc = rtems_task_set_scheduler(task_id, scheduler_c_id + 1, 1);
0347 rtems_test_assert(sc == RTEMS_INVALID_ID);
0348
0349 if (cpu_count > 1) {
0350 sc = rtems_task_set_scheduler(task_id, scheduler_b_id, 1);
0351 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0352
0353 sc = rtems_task_get_scheduler(task_id, &scheduler_id);
0354 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0355 rtems_test_assert(scheduler_id == scheduler_b_id);
0356
0357 CPU_ZERO(&cpuset);
0358 sc = rtems_task_get_affinity(task_id, sizeof(cpuset), &cpuset);
0359 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0360 rtems_test_assert(CPU_EQUAL(&cpuset, &online_cpus));
0361
0362 sc = rtems_task_set_affinity(task_id, sizeof(all_cpus), &all_cpus);
0363 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0364
0365 sc = rtems_task_set_affinity(task_id, sizeof(first_cpu), &first_cpu);
0366 rtems_test_assert(sc == RTEMS_INVALID_NUMBER);
0367
0368 sc = rtems_task_get_scheduler(task_id, &scheduler_id);
0369 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0370 rtems_test_assert(scheduler_id == scheduler_b_id);
0371
0372 sc = rtems_task_set_affinity(task_id, sizeof(online_cpus), &online_cpus);
0373 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0374
0375 sc = rtems_task_set_affinity(task_id, sizeof(second_cpu), &second_cpu);
0376 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0377
0378 sc = rtems_task_set_scheduler(task_id, scheduler_a_id, 1);
0379 rtems_test_assert(sc == RTEMS_UNSATISFIED);
0380
0381 sc = rtems_task_get_scheduler(task_id, &scheduler_id);
0382 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0383 rtems_test_assert(scheduler_id == scheduler_b_id);
0384
0385 sc = rtems_semaphore_obtain(imtx_id, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
0386 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0387
0388 sc = rtems_task_set_scheduler(task_id, scheduler_b_id, 1);
0389 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0390
0391 sc = rtems_task_start(task_id, task, 0);
0392 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0393
0394 sc = rtems_event_transient_receive(RTEMS_WAIT, RTEMS_NO_TIMEOUT);
0395 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0396
0397
0398 sc = rtems_task_wake_after(2);
0399 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0400
0401 sc = rtems_task_set_scheduler(RTEMS_SELF, scheduler_b_id, 1);
0402 rtems_test_assert(sc == RTEMS_RESOURCE_IN_USE);
0403
0404 sc = rtems_semaphore_release(imtx_id);
0405 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0406
0407 sc = rtems_event_transient_receive(RTEMS_WAIT, RTEMS_NO_TIMEOUT);
0408 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0409 }
0410
0411 sc = rtems_task_delete(task_id);
0412 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0413
0414 sc = rtems_semaphore_delete(cmtx_id);
0415 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0416
0417 sc = rtems_semaphore_delete(imtx_id);
0418 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0419
0420 test_scheduler_add_remove_processors();
0421 }
0422
0423 static void Init(rtems_task_argument arg)
0424 {
0425 rtems_resource_snapshot snapshot;
0426
0427 TEST_BEGIN();
0428
0429 rtems_resource_snapshot_take(&snapshot);
0430
0431 test();
0432
0433 rtems_test_assert(rtems_resource_snapshot_check(&snapshot));
0434
0435 TEST_END();
0436 rtems_test_exit(0);
0437 }
0438
0439 #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
0440 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0441
0442 #define CONFIGURE_MAXIMUM_TASKS 2
0443 #define CONFIGURE_MAXIMUM_SEMAPHORES 2
0444
0445
0446 #define CONFIGURE_MAXIMUM_PROCESSORS 64
0447
0448 #define CONFIGURE_SCHEDULER_EDF_SMP
0449 #define CONFIGURE_SCHEDULER_PRIORITY_SMP
0450 #define CONFIGURE_SCHEDULER_SIMPLE_SMP
0451
0452 #include <rtems/scheduler.h>
0453
0454 RTEMS_SCHEDULER_PRIORITY_SMP(a, 256);
0455
0456 RTEMS_SCHEDULER_EDF_SMP(b);
0457
0458 RTEMS_SCHEDULER_SIMPLE_SMP(c);
0459
0460 #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \
0461 RTEMS_SCHEDULER_TABLE_PRIORITY_SMP(a, SCHED_A), \
0462 RTEMS_SCHEDULER_TABLE_EDF_SMP(b, SCHED_B), \
0463 RTEMS_SCHEDULER_TABLE_SIMPLE_SMP(c, SCHED_C)
0464
0465 #define CONFIGURE_SCHEDULER_ASSIGNMENTS \
0466 RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY), \
0467 RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \
0468 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0469 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0470 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0471 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0472 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0473 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0474 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0475 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0476 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0477 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0478 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0479 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0480 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0481 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0482 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0483 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0484 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0485 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0486 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0487 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0488 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0489 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0490 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0491 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0492 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0493 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0494 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0495 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0496 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0497 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0498 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
0499 RTEMS_SCHEDULER_ASSIGN(2, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL)
0500
0501 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
0502
0503 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
0504
0505 #define CONFIGURE_INIT
0506
0507 #include <rtems/confdefs.h>