source: rtems/testsuites/smptests/smpscheduler02/init.c @ 03c9f24

5
Last change on this file since 03c9f24 was 03c9f24, checked in by Sebastian Huber <sebastian.huber@…>, on 04/05/19 at 06:03:12

rtems: Add rtems_scheduler_get_processor()

Add rtems_scheduler_get_processor() as a replacement for
rtems_get_current_processor(). The rtems_get_current_processor() is a
bit orphaned. Adopt it by the Scheduler Manager. This is in line with
the glibc sched_getcpu() function.

Deprecate rtems_get_current_processor().

Update #3731.

  • Property mode set to 100644
File size: 14.9 KB
RevLine 
[c5831a3f]1/*
[7851555]2 * Copyright (c) 2014, 2017 embedded brains GmbH.  All rights reserved.
[c5831a3f]3 *
4 *  embedded brains GmbH
5 *  Dornierstr. 4
6 *  82178 Puchheim
7 *  Germany
8 *  <rtems@embedded-brains.de>
9 *
10 * The license and distribution terms for this file may be
11 * found in the file LICENSE in this distribution or at
12 * http://www.rtems.org/license/LICENSE.
13 */
14
15#ifdef HAVE_CONFIG_H
16  #include "config.h"
17#endif
18
[ea02782a]19#include <sched.h>
[02b007e]20#include <limits.h>
[ea02782a]21
[c5831a3f]22#include <rtems.h>
23#include <rtems/libcsupport.h>
24
25#include "tmacros.h"
26
27const char rtems_test_name[] = "SMPSCHEDULER 2";
28
29#define SCHED_A rtems_build_name(' ', ' ', ' ', 'A')
30
31#define SCHED_B rtems_build_name(' ', ' ', ' ', 'B')
32
[e239760]33#define SCHED_C rtems_build_name(' ', ' ', ' ', 'C')
34
[c5831a3f]35static rtems_id main_task_id;
36
[9e7fa07]37static rtems_id cmtx_id;
38
39static rtems_id imtx_id;
[77ff5599]40
[05ca53d]41static volatile bool ready;
42
[c5831a3f]43static void task(rtems_task_argument arg)
44{
45  rtems_status_code sc;
46
47  (void) arg;
48
[03c9f24]49  rtems_test_assert(rtems_scheduler_get_processor() == 1);
[ea02782a]50  rtems_test_assert(sched_get_priority_min(SCHED_RR) == 1);
[4a1bdd30]51  rtems_test_assert(sched_get_priority_max(SCHED_RR) == INT_MAX - 1);
[c5831a3f]52
[9e7fa07]53  sc = rtems_semaphore_obtain(cmtx_id, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
[77ff5599]54  rtems_test_assert(sc == RTEMS_NOT_DEFINED);
55
[c5831a3f]56  sc = rtems_event_transient_send(main_task_id);
57  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
58
[9e7fa07]59  sc = rtems_semaphore_obtain(imtx_id, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
60  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
61
62  sc = rtems_semaphore_release(imtx_id);
63  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
64
65  sc = rtems_event_transient_send(main_task_id);
66  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
67
[c5831a3f]68  while (1) {
69    /* Do nothing */
70  }
71}
72
[05ca53d]73static void sticky_task(rtems_task_argument arg)
74{
75  rtems_status_code sc;
76  rtems_id mtx_id;
77
78  (void) arg;
79
[03c9f24]80  rtems_test_assert(rtems_scheduler_get_processor() == 0);
[05ca53d]81
82  sc = rtems_semaphore_create(
83    rtems_build_name(' ', 'M', 'T', 'X'),
84    1,
85    RTEMS_BINARY_SEMAPHORE | RTEMS_MULTIPROCESSOR_RESOURCE_SHARING,
86    2,
87    &mtx_id
88  );
89  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
90
91  sc = rtems_semaphore_obtain(mtx_id, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
92  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
93
94  ready = true;
95
96  sc = rtems_event_transient_receive(RTEMS_WAIT, RTEMS_NO_TIMEOUT);
97  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
98
99  sc = rtems_semaphore_release(mtx_id);
100  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
101
102  sc = rtems_semaphore_delete(mtx_id);
103  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
104
105  sc = rtems_event_transient_send(main_task_id);
106  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
107
108  while (1) {
109    /* Do nothing */
110  }
111}
112
113static void test_scheduler_add_remove_processors(void)
114{
115  rtems_status_code sc;
116  rtems_id scheduler_a_id;
117  rtems_id scheduler_c_id;
118
119  sc = rtems_scheduler_ident(SCHED_A, &scheduler_a_id);
120  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
121
122  sc = rtems_scheduler_ident(SCHED_C, &scheduler_c_id);
123  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
124
125  sc = rtems_scheduler_add_processor(scheduler_c_id, 62);
126  rtems_test_assert(sc == RTEMS_NOT_CONFIGURED);
127
128  sc = rtems_scheduler_add_processor(scheduler_c_id, 63);
129  rtems_test_assert(sc == RTEMS_INCORRECT_STATE);
130
131  sc = rtems_scheduler_remove_processor(scheduler_c_id, 62);
132  rtems_test_assert(sc == RTEMS_INVALID_NUMBER);
133
134  sc = rtems_scheduler_remove_processor(scheduler_a_id, 0);
135  rtems_test_assert(sc == RTEMS_RESOURCE_IN_USE);
136
137  if (rtems_get_processor_count() > 1) {
[ecabd384]138    rtems_id scheduler_id;
[05ca53d]139    rtems_id scheduler_b_id;
140    rtems_id task_id;
[ecabd384]141    cpu_set_t first_cpu;
[05ca53d]142
143    sc = rtems_scheduler_ident(SCHED_B, &scheduler_b_id);
144    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
145
146    sc = rtems_scheduler_remove_processor(scheduler_b_id, 1);
147    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
148
149    sc = rtems_scheduler_add_processor(scheduler_a_id, 1);
150    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
151
[03c9f24]152    rtems_test_assert(rtems_scheduler_get_processor() == 0);
[05ca53d]153
154    sc = rtems_scheduler_remove_processor(scheduler_a_id, 0);
155    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
156
[03c9f24]157    rtems_test_assert(rtems_scheduler_get_processor() == 1);
[05ca53d]158
[ecabd384]159    CPU_ZERO(&first_cpu);
160    CPU_SET(0, &first_cpu);
161    sc = rtems_scheduler_ident_by_processor_set(
162      sizeof(first_cpu),
163      &first_cpu,
164      &scheduler_id
165    );
166    rtems_test_assert(sc == RTEMS_INCORRECT_STATE);
167
[05ca53d]168    sc = rtems_scheduler_add_processor(scheduler_a_id, 0);
169    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
170
[03c9f24]171    rtems_test_assert(rtems_scheduler_get_processor() == 1);
[05ca53d]172
173    sc = rtems_task_create(
174      rtems_build_name('T', 'A', 'S', 'K'),
175      2,
176      RTEMS_MINIMUM_STACK_SIZE,
177      RTEMS_DEFAULT_MODES,
178      RTEMS_DEFAULT_ATTRIBUTES,
179      &task_id
180    );
181    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
182
183    sc = rtems_task_start(task_id, sticky_task, 0);
184    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
185
186    while (!ready) {
187      /* Wait */
188    }
189
190    sc = rtems_scheduler_remove_processor(scheduler_a_id, 1);
191    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
192
[03c9f24]193    rtems_test_assert(rtems_scheduler_get_processor() == 0);
[05ca53d]194
195    sc = rtems_event_transient_send(task_id);
196    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
197
198    sc = rtems_event_transient_receive(RTEMS_WAIT, RTEMS_NO_TIMEOUT);
199    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
200
201    sc = rtems_task_delete(task_id);
202    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
203
204    sc = rtems_scheduler_add_processor(scheduler_b_id, 1);
205    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
206  }
207}
208
[c5831a3f]209static void test(void)
210{
211  rtems_status_code sc;
212  rtems_id task_id;
213  rtems_id scheduler_id;
214  rtems_id scheduler_a_id;
215  rtems_id scheduler_b_id;
[e239760]216  rtems_id scheduler_c_id;
[77ff5599]217  rtems_task_priority prio;
[c5831a3f]218  cpu_set_t cpuset;
219  cpu_set_t first_cpu;
220  cpu_set_t second_cpu;
221  cpu_set_t all_cpus;
[7851555]222  cpu_set_t online_cpus;
[43d7005]223  uint32_t cpu_count;
[c5831a3f]224
[03c9f24]225  rtems_test_assert(rtems_scheduler_get_processor() == 0);
[7851555]226
[96ce1ec]227  cpu_count = rtems_get_processor_count();
[c5831a3f]228  main_task_id = rtems_task_self();
229
230  CPU_ZERO(&first_cpu);
231  CPU_SET(0, &first_cpu);
232
233  CPU_ZERO(&second_cpu);
234  CPU_SET(1, &second_cpu);
235
[16347a6]236  CPU_FILL(&all_cpus);
[c5831a3f]237
[7851555]238  CPU_ZERO(&online_cpus);
239  CPU_SET(0, &online_cpus);
[43d7005]240
[7851555]241  if (cpu_count > 1) {
242    CPU_SET(1, &online_cpus);
243  }
[c5831a3f]244
245  sc = rtems_scheduler_ident(SCHED_A, &scheduler_a_id);
246  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
247
[43d7005]248  if (cpu_count > 1) {
249    sc = rtems_scheduler_ident(SCHED_B, &scheduler_b_id);
250    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
251    rtems_test_assert(scheduler_a_id != scheduler_b_id);
252  }
[c5831a3f]253
[e239760]254  sc = rtems_scheduler_ident(SCHED_C, &scheduler_c_id);
[2612a0b]255  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
[e239760]256
[77ff5599]257  sc = rtems_semaphore_create(
[9e7fa07]258    rtems_build_name('C', 'M', 'T', 'X'),
[77ff5599]259    1,
260    RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY | RTEMS_PRIORITY_CEILING,
261    1,
[9e7fa07]262    &cmtx_id
263  );
264  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
265
266  sc = rtems_semaphore_create(
267    rtems_build_name('I', 'M', 'T', 'X'),
268    1,
269    RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY | RTEMS_INHERIT_PRIORITY,
270    1,
271    &imtx_id
[77ff5599]272  );
273  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
274
275  prio = 2;
[9e7fa07]276  sc = rtems_semaphore_set_priority(cmtx_id, scheduler_a_id, prio, &prio);
[77ff5599]277  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
278  rtems_test_assert(prio == 1);
279
280  if (cpu_count > 1) {
281    prio = 1;
[9e7fa07]282    sc = rtems_semaphore_set_priority(cmtx_id, scheduler_b_id, prio, &prio);
[77ff5599]283    rtems_test_assert(sc == RTEMS_NOT_DEFINED);
284    rtems_test_assert(prio == 2);
285  }
286
[c5831a3f]287  CPU_ZERO(&cpuset);
288  sc = rtems_scheduler_get_processor_set(
289    scheduler_a_id,
290    sizeof(cpuset),
291    &cpuset
292  );
293  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
294  rtems_test_assert(CPU_EQUAL(&cpuset, &first_cpu));
295
[43d7005]296  if (cpu_count > 1) {
297    CPU_ZERO(&cpuset);
298    sc = rtems_scheduler_get_processor_set(
299      scheduler_b_id,
300      sizeof(cpuset),
301      &cpuset
302    );
303    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
304    rtems_test_assert(CPU_EQUAL(&cpuset, &second_cpu));
305  }
[c5831a3f]306
307  sc = rtems_task_create(
308    rtems_build_name('T', 'A', 'S', 'K'),
309    1,
310    RTEMS_MINIMUM_STACK_SIZE,
311    RTEMS_DEFAULT_MODES,
312    RTEMS_DEFAULT_ATTRIBUTES,
313    &task_id
314  );
315  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
316
317  sc = rtems_task_get_scheduler(task_id, &scheduler_id);
318  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
319  rtems_test_assert(scheduler_id == scheduler_a_id);
320
321  CPU_ZERO(&cpuset);
322  sc = rtems_task_get_affinity(task_id, sizeof(cpuset), &cpuset);
323  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
[7851555]324  rtems_test_assert(CPU_EQUAL(&cpuset, &online_cpus));
[c5831a3f]325
[ea02782a]326  rtems_test_assert(sched_get_priority_min(SCHED_RR) == 1);
[6a631da]327  rtems_test_assert(sched_get_priority_max(SCHED_RR) == 254);
[ea02782a]328
[2612a0b]329  sc = rtems_task_set_scheduler(task_id, scheduler_c_id, 1);
330  rtems_test_assert(sc == RTEMS_UNSATISFIED);
331
332  sc = rtems_task_set_scheduler(task_id, scheduler_c_id + 1, 1);
333  rtems_test_assert(sc == RTEMS_INVALID_ID);
334
[43d7005]335  if (cpu_count > 1) {
[c0bd006]336    sc = rtems_task_set_scheduler(task_id, scheduler_b_id, 1);
[43d7005]337    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
[c5831a3f]338
[43d7005]339    sc = rtems_task_get_scheduler(task_id, &scheduler_id);
340    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
341    rtems_test_assert(scheduler_id == scheduler_b_id);
[c5831a3f]342
[43d7005]343    CPU_ZERO(&cpuset);
344    sc = rtems_task_get_affinity(task_id, sizeof(cpuset), &cpuset);
345    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
[7851555]346    rtems_test_assert(CPU_EQUAL(&cpuset, &online_cpus));
[c5831a3f]347
[43d7005]348    sc = rtems_task_set_affinity(task_id, sizeof(all_cpus), &all_cpus);
349    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
[c5831a3f]350
[43d7005]351    sc = rtems_task_set_affinity(task_id, sizeof(first_cpu), &first_cpu);
352    rtems_test_assert(sc == RTEMS_INVALID_NUMBER);
[c5831a3f]353
[43d7005]354    sc = rtems_task_get_scheduler(task_id, &scheduler_id);
355    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
356    rtems_test_assert(scheduler_id == scheduler_b_id);
[c5831a3f]357
[16347a6]358    sc = rtems_task_set_affinity(task_id, sizeof(online_cpus), &online_cpus);
[43d7005]359    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
[c5831a3f]360
[4a1bdd30]361    sc = rtems_task_set_affinity(task_id, sizeof(second_cpu), &second_cpu);
362    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
363
364    sc = rtems_task_set_scheduler(task_id, scheduler_a_id, 1);
365    rtems_test_assert(sc == RTEMS_UNSATISFIED);
366
[43d7005]367    sc = rtems_task_get_scheduler(task_id, &scheduler_id);
368    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
369    rtems_test_assert(scheduler_id == scheduler_b_id);
[c5831a3f]370
[9e7fa07]371    sc = rtems_semaphore_obtain(imtx_id, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
372    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
373
[db20706]374    sc = rtems_task_set_scheduler(task_id, scheduler_b_id, 1);
[43d7005]375    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
[c5831a3f]376
[db20706]377    sc = rtems_task_start(task_id, task, 0);
[43d7005]378    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
[c5831a3f]379
[43d7005]380    sc = rtems_event_transient_receive(RTEMS_WAIT, RTEMS_NO_TIMEOUT);
381    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
[9e7fa07]382
[a54d10d]383    /* Ensure that the other task waits for the mutex owned by us */
384    sc = rtems_task_wake_after(2);
385    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
386
[9e7fa07]387    sc = rtems_task_set_scheduler(RTEMS_SELF, scheduler_b_id, 1);
388    rtems_test_assert(sc == RTEMS_RESOURCE_IN_USE);
389
390    sc = rtems_semaphore_release(imtx_id);
391    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
392
393    sc = rtems_event_transient_receive(RTEMS_WAIT, RTEMS_NO_TIMEOUT);
394    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
[43d7005]395  }
[c5831a3f]396
397  sc = rtems_task_delete(task_id);
398  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
[77ff5599]399
[9e7fa07]400  sc = rtems_semaphore_delete(cmtx_id);
[77ff5599]401  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
[c5831a3f]402
[9e7fa07]403  sc = rtems_semaphore_delete(imtx_id);
404  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
[05ca53d]405
406  test_scheduler_add_remove_processors();
[c5831a3f]407}
408
409static void Init(rtems_task_argument arg)
410{
411  rtems_resource_snapshot snapshot;
412
413  TEST_BEGIN();
414
415  rtems_resource_snapshot_take(&snapshot);
416
417  test();
418
419  rtems_test_assert(rtems_resource_snapshot_check(&snapshot));
420
421  TEST_END();
422  rtems_test_exit(0);
423}
424
425#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
[c4b8b147]426#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
[c5831a3f]427
[77ff5599]428#define CONFIGURE_MAXIMUM_TASKS 2
[9e7fa07]429#define CONFIGURE_MAXIMUM_SEMAPHORES 2
[05ca53d]430#define CONFIGURE_MAXIMUM_MRSP_SEMAPHORES 1
[77ff5599]431
[e239760]432/* Lets see when the first RTEMS system hits this limit */
[54835ae]433#define CONFIGURE_MAXIMUM_PROCESSORS 64
[c5831a3f]434
[4a1bdd30]435#define CONFIGURE_SCHEDULER_EDF_SMP
[c5831a3f]436#define CONFIGURE_SCHEDULER_PRIORITY_SMP
[e239760]437#define CONFIGURE_SCHEDULER_SIMPLE_SMP
[c5831a3f]438
439#include <rtems/scheduler.h>
440
[6fadb7af]441RTEMS_SCHEDULER_PRIORITY_SMP(a, 256);
[c5831a3f]442
[6fadb7af]443RTEMS_SCHEDULER_EDF_SMP(b, CONFIGURE_MAXIMUM_PROCESSORS);
[c5831a3f]444
[6fadb7af]445RTEMS_SCHEDULER_SIMPLE_SMP(c);
[e239760]446
[6fadb7af]447#define CONFIGURE_SCHEDULER_TABLE_ENTRIES \
448  RTEMS_SCHEDULER_TABLE_PRIORITY_SMP(a, SCHED_A), \
449  RTEMS_SCHEDULER_TABLE_EDF_SMP(b, SCHED_B), \
450  RTEMS_SCHEDULER_TABLE_SIMPLE_SMP(c, SCHED_C)
[c5831a3f]451
[6fadb7af]452#define CONFIGURE_SCHEDULER_ASSIGNMENTS \
[c5831a3f]453  RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY), \
[43d7005]454  RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \
[e239760]455  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
456  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
457  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
458  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
459  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
460  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
461  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
462  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
463  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
464  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
465  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
466  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
467  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
468  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
469  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
470  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
471  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
472  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
473  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
474  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
475  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
476  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
477  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
478  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
479  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
480  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
481  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
482  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
483  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
484  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
485  RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
486  RTEMS_SCHEDULER_ASSIGN(2, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL)
487
[c5831a3f]488#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
489
490#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
491
492#define CONFIGURE_INIT
493
494#include <rtems/confdefs.h>
Note: See TracBrowser for help on using the repository browser.