source: rtems/testsuites/sptests/spsysinit01/init.c @ 8ca372e

Last change on this file since 8ca372e was 8ca372e, checked in by Sebastian Huber <sebastian.huber@…>, on Jan 26, 2016 at 9:11:48 AM

Use linker set for MPCI initialization

Update #2408.

  • Property mode set to 100644
File size: 14.2 KB
Line 
1/*
2 * Copyright (c) 2015 embedded brains GmbH.  All rights reserved.
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.com/license/LICENSE.
13 */
14
15#ifdef HAVE_CONFIG_H
16  #include "config.h"
17#endif
18
19#include <sys/types.h>
20#include <sys/stat.h>
21
22#include <assert.h>
23#include <pthread.h>
24#include <string.h>
25#include <stdlib.h>
26#include <unistd.h>
27
28#include <rtems.h>
29#include <rtems/libio_.h>
30#include <rtems/sysinit.h>
31#include <rtems/test.h>
32
33#include <rtems/extensionimpl.h>
34#ifdef RTEMS_POSIX_API
35#include <rtems/posix/barrierimpl.h>
36#include <rtems/posix/condimpl.h>
37#include <rtems/posix/mqueueimpl.h>
38#include <rtems/posix/muteximpl.h>
39#include <rtems/posix/psignalimpl.h>
40#include <rtems/posix/pthreadimpl.h>
41#include <rtems/posix/rwlockimpl.h>
42#include <rtems/posix/semaphoreimpl.h>
43#include <rtems/posix/spinlockimpl.h>
44#include <rtems/posix/timerimpl.h>
45#endif /* RTEMS_POSIX_API */
46#include <rtems/posix/keyimpl.h>
47#include <rtems/rtems/barrierimpl.h>
48#include <rtems/rtems/dpmemimpl.h>
49#include <rtems/rtems/messageimpl.h>
50#include <rtems/rtems/partimpl.h>
51#include <rtems/rtems/ratemonimpl.h>
52#include <rtems/rtems/regionimpl.h>
53#include <rtems/rtems/semimpl.h>
54#include <rtems/rtems/tasksimpl.h>
55#include <rtems/rtems/timerimpl.h>
56#include <rtems/score/apimutex.h>
57#include <rtems/score/chainimpl.h>
58#include <rtems/score/sysstate.h>
59#include <rtems/score/userextimpl.h>
60#include <rtems/score/wkspace.h>
61
62const char rtems_test_name[] = "SPSYSINIT 1";
63
64typedef enum {
65  BSP_WORK_AREAS_PRE,
66  BSP_WORK_AREAS_POST,
67  BSP_START_PRE,
68  BSP_START_POST,
69  INITIAL_EXTENSIONS_PRE,
70  INITIAL_EXTENSIONS_POST,
71  DATA_STRUCTURES_PRE,
72  DATA_STRUCTURES_POST,
73  CPU_SET_PRE,
74  CPU_SET_POST,
75  USER_EXTENSIONS_PRE,
76  USER_EXTENSIONS_POST,
77  CLASSIC_TASKS_PRE,
78  CLASSIC_TASKS_POST,
79  CLASSIC_TIMER_PRE,
80  CLASSIC_TIMER_POST,
81  CLASSIC_SIGNAL_PRE,
82  CLASSIC_SIGNAL_POST,
83  CLASSIC_EVENT_PRE,
84  CLASSIC_EVENT_POST,
85  CLASSIC_MESSAGE_QUEUE_PRE,
86  CLASSIC_MESSAGE_QUEUE_POST,
87  CLASSIC_SEMAPHORE_PRE,
88  CLASSIC_SEMAPHORE_POST,
89  CLASSIC_PARTITION_PRE,
90  CLASSIC_PARTITION_POST,
91  CLASSIC_REGION_PRE,
92  CLASSIC_REGION_POST,
93  CLASSIC_DUAL_PORTED_MEMORY_PRE,
94  CLASSIC_DUAL_PORTED_MEMORY_POST,
95  CLASSIC_RATE_MONOTONIC_PRE,
96  CLASSIC_RATE_MONOTONIC_POST,
97  CLASSIC_BARRIER_PRE,
98  CLASSIC_BARRIER_POST,
99#ifdef RTEMS_POSIX_API
100  POSIX_SIGNALS_PRE,
101  POSIX_SIGNALS_POST,
102  POSIX_THREADS_PRE,
103  POSIX_THREADS_POST,
104  POSIX_CONDITION_VARIABLE_PRE,
105  POSIX_CONDITION_VARIABLE_POST,
106  POSIX_MUTEX_PRE,
107  POSIX_MUTEX_POST,
108  POSIX_MESSAGE_QUEUE_PRE,
109  POSIX_MESSAGE_QUEUE_POST,
110  POSIX_SEMAPHORE_PRE,
111  POSIX_SEMAPHORE_POST,
112  POSIX_TIMER_PRE,
113  POSIX_TIMER_POST,
114  POSIX_BARRIER_PRE,
115  POSIX_BARRIER_POST,
116  POSIX_RWLOCK_PRE,
117  POSIX_RWLOCK_POST,
118  POSIX_SPINLOCK_PRE,
119  POSIX_SPINLOCK_POST,
120  POSIX_CLEANUP_PRE,
121  POSIX_CLEANUP_POST,
122#endif /* RTEMS_POSIX_API */
123  POSIX_KEYS_PRE,
124  POSIX_KEYS_POST,
125  IDLE_THREADS_PRE,
126  IDLE_THREADS_POST,
127  LIBIO_PRE,
128  LIBIO_POST,
129  ROOT_FILESYSTEM_PRE,
130  ROOT_FILESYSTEM_POST,
131  BSP_PRE_DRIVERS_PRE,
132  BSP_PRE_DRIVERS_POST,
133  DEVICE_DRIVERS_PRE,
134  DEVICE_DRIVERS_POST,
135  STD_FILE_DESCRIPTORS_PRE,
136  STD_FILE_DESCRIPTORS_POST,
137  INIT_TASK,
138  DONE
139} init_step;
140
141#define FIRST(x) \
142  static void x##_first(void); \
143  RTEMS_SYSINIT_ITEM( \
144    x##_first, \
145    x, \
146    RTEMS_SYSINIT_ORDER_FIRST \
147  ); \
148  static void x##_first(void)
149
150#define LAST(x) \
151  static void x##_last(void); \
152  RTEMS_SYSINIT_ITEM( \
153    x##_last, \
154    x, \
155    RTEMS_SYSINIT_ORDER_LAST \
156  ); \
157  static void x##_last(void)
158
159static init_step step;
160
161static void next_step(init_step expected)
162{
163  assert(step == expected);
164  step = expected + 1;
165}
166
167FIRST(RTEMS_SYSINIT_BSP_WORK_AREAS)
168{
169  rtems_test_begink();
170  assert(_Workspace_Area.area_begin == 0);
171  next_step(BSP_WORK_AREAS_PRE);
172}
173
174LAST(RTEMS_SYSINIT_BSP_WORK_AREAS)
175{
176  assert(_Workspace_Area.area_begin != 0);
177  next_step(BSP_WORK_AREAS_POST);
178}
179
180FIRST(RTEMS_SYSINIT_BSP_START)
181{
182  /*
183   * Since the work performed here is BSP-specific, there is no way to test pre
184   * and post conditions.
185   */
186  next_step(BSP_START_PRE);
187}
188
189LAST(RTEMS_SYSINIT_BSP_START)
190{
191  next_step(BSP_START_POST);
192}
193
194FIRST(RTEMS_SYSINIT_INITIAL_EXTENSIONS)
195{
196  assert(_Chain_Is_empty(&_User_extensions_Switches_list));
197  next_step(INITIAL_EXTENSIONS_PRE);
198}
199
200LAST(RTEMS_SYSINIT_INITIAL_EXTENSIONS)
201{
202  assert(!_Chain_Is_empty(&_User_extensions_Switches_list));
203  next_step(INITIAL_EXTENSIONS_POST);
204}
205
206FIRST(RTEMS_SYSINIT_DATA_STRUCTURES)
207{
208  assert(_RTEMS_Allocator_Mutex == NULL);
209  next_step(DATA_STRUCTURES_PRE);
210}
211
212LAST(RTEMS_SYSINIT_DATA_STRUCTURES)
213{
214  assert(_RTEMS_Allocator_Mutex != NULL);
215  next_step(DATA_STRUCTURES_POST);
216}
217
218FIRST(RTEMS_SYSINIT_CPU_SET)
219{
220  /* There is nothing to do in case RTEMS_SMP is not defined */
221  next_step(CPU_SET_PRE);
222}
223
224LAST(RTEMS_SYSINIT_CPU_SET)
225{
226  next_step(CPU_SET_POST);
227}
228
229FIRST(RTEMS_SYSINIT_USER_EXTENSIONS)
230{
231  assert(_Extension_Information.maximum == 0);
232  next_step(USER_EXTENSIONS_PRE);
233}
234
235LAST(RTEMS_SYSINIT_USER_EXTENSIONS)
236{
237  assert(_Extension_Information.maximum != 0);
238  next_step(USER_EXTENSIONS_POST);
239}
240
241FIRST(RTEMS_SYSINIT_CLASSIC_TASKS)
242{
243  assert(_RTEMS_tasks_Information.Objects.maximum == 0);
244  next_step(CLASSIC_TASKS_PRE);
245}
246
247LAST(RTEMS_SYSINIT_CLASSIC_TASKS)
248{
249  assert(_RTEMS_tasks_Information.Objects.maximum != 0);
250  next_step(CLASSIC_TASKS_POST);
251}
252
253FIRST(RTEMS_SYSINIT_CLASSIC_TIMER)
254{
255  assert(_Timer_Information.maximum == 0);
256  next_step(CLASSIC_TIMER_PRE);
257}
258
259LAST(RTEMS_SYSINIT_CLASSIC_TIMER)
260{
261  assert(_Timer_Information.maximum != 0);
262  next_step(CLASSIC_TIMER_POST);
263}
264
265FIRST(RTEMS_SYSINIT_CLASSIC_SIGNAL)
266{
267  /* There is nothing to do in case RTEMS_MULTIPROCESSING is not defined */
268  next_step(CLASSIC_SIGNAL_PRE);
269}
270
271LAST(RTEMS_SYSINIT_CLASSIC_SIGNAL)
272{
273  next_step(CLASSIC_SIGNAL_POST);
274}
275
276FIRST(RTEMS_SYSINIT_CLASSIC_EVENT)
277{
278  /* There is nothing to do in case RTEMS_MULTIPROCESSING is not defined */
279  next_step(CLASSIC_EVENT_PRE);
280}
281
282LAST(RTEMS_SYSINIT_CLASSIC_EVENT)
283{
284  next_step(CLASSIC_EVENT_POST);
285}
286
287FIRST(RTEMS_SYSINIT_CLASSIC_MESSAGE_QUEUE)
288{
289  assert(_Message_queue_Information.maximum == 0);
290  next_step(CLASSIC_MESSAGE_QUEUE_PRE);
291}
292
293LAST(RTEMS_SYSINIT_CLASSIC_MESSAGE_QUEUE)
294{
295  assert(_Message_queue_Information.maximum != 0);
296  next_step(CLASSIC_MESSAGE_QUEUE_POST);
297}
298
299FIRST(RTEMS_SYSINIT_CLASSIC_SEMAPHORE)
300{
301  assert(_Semaphore_Information.maximum == 0);
302  next_step(CLASSIC_SEMAPHORE_PRE);
303}
304
305LAST(RTEMS_SYSINIT_CLASSIC_SEMAPHORE)
306{
307  assert(_Semaphore_Information.maximum != 0);
308  next_step(CLASSIC_SEMAPHORE_POST);
309}
310
311FIRST(RTEMS_SYSINIT_CLASSIC_PARTITION)
312{
313  assert(_Partition_Information.maximum == 0);
314  next_step(CLASSIC_PARTITION_PRE);
315}
316
317LAST(RTEMS_SYSINIT_CLASSIC_PARTITION)
318{
319  assert(_Partition_Information.maximum != 0);
320  next_step(CLASSIC_PARTITION_POST);
321}
322
323FIRST(RTEMS_SYSINIT_CLASSIC_REGION)
324{
325  assert(_Region_Information.maximum == 0);
326  next_step(CLASSIC_REGION_PRE);
327}
328
329LAST(RTEMS_SYSINIT_CLASSIC_REGION)
330{
331  assert(_Region_Information.maximum != 0);
332  next_step(CLASSIC_REGION_POST);
333}
334
335FIRST(RTEMS_SYSINIT_CLASSIC_DUAL_PORTED_MEMORY)
336{
337  assert(_Dual_ported_memory_Information.maximum == 0);
338  next_step(CLASSIC_DUAL_PORTED_MEMORY_PRE);
339}
340
341LAST(RTEMS_SYSINIT_CLASSIC_DUAL_PORTED_MEMORY)
342{
343  assert(_Dual_ported_memory_Information.maximum != 0);
344  next_step(CLASSIC_DUAL_PORTED_MEMORY_POST);
345}
346
347FIRST(RTEMS_SYSINIT_CLASSIC_RATE_MONOTONIC)
348{
349  assert(_Rate_monotonic_Information.maximum == 0);
350  next_step(CLASSIC_RATE_MONOTONIC_PRE);
351}
352
353LAST(RTEMS_SYSINIT_CLASSIC_RATE_MONOTONIC)
354{
355  assert(_Rate_monotonic_Information.maximum != 0);
356  next_step(CLASSIC_RATE_MONOTONIC_POST);
357}
358
359FIRST(RTEMS_SYSINIT_CLASSIC_BARRIER)
360{
361  assert(_Barrier_Information.maximum == 0);
362  next_step(CLASSIC_BARRIER_PRE);
363}
364
365LAST(RTEMS_SYSINIT_CLASSIC_BARRIER)
366{
367  assert(_Barrier_Information.maximum != 0);
368  next_step(CLASSIC_BARRIER_POST);
369}
370
371#ifdef RTEMS_POSIX_API
372
373FIRST(RTEMS_SYSINIT_POSIX_SIGNALS)
374{
375  assert(
376    memcmp(
377      &_POSIX_signals_Vectors,
378      _POSIX_signals_Default_vectors,
379      sizeof(_POSIX_signals_Vectors)
380    ) != 0
381  );
382  next_step(POSIX_SIGNALS_PRE);
383}
384
385LAST(RTEMS_SYSINIT_POSIX_SIGNALS)
386{
387  assert(
388    memcmp(
389      &_POSIX_signals_Vectors,
390      _POSIX_signals_Default_vectors,
391      sizeof(_POSIX_signals_Vectors)
392    ) == 0
393  );
394  next_step(POSIX_SIGNALS_POST);
395}
396
397FIRST(RTEMS_SYSINIT_POSIX_THREADS)
398{
399  assert(_POSIX_Threads_Information.Objects.maximum == 0);
400  next_step(POSIX_THREADS_PRE);
401}
402
403LAST(RTEMS_SYSINIT_POSIX_THREADS)
404{
405  assert(_POSIX_Threads_Information.Objects.maximum != 0);
406  next_step(POSIX_THREADS_POST);
407}
408
409FIRST(RTEMS_SYSINIT_POSIX_CONDITION_VARIABLE)
410{
411  assert(_POSIX_Condition_variables_Information.maximum == 0);
412  next_step(POSIX_CONDITION_VARIABLE_PRE);
413}
414
415LAST(RTEMS_SYSINIT_POSIX_CONDITION_VARIABLE)
416{
417  assert(_POSIX_Condition_variables_Information.maximum != 0);
418  next_step(POSIX_CONDITION_VARIABLE_POST);
419}
420
421FIRST(RTEMS_SYSINIT_POSIX_MUTEX)
422{
423  assert(_POSIX_Mutex_Information.maximum == 0);
424  next_step(POSIX_MUTEX_PRE);
425}
426
427LAST(RTEMS_SYSINIT_POSIX_MUTEX)
428{
429  assert(_POSIX_Mutex_Information.maximum != 0);
430  next_step(POSIX_MUTEX_POST);
431}
432
433FIRST(RTEMS_SYSINIT_POSIX_MESSAGE_QUEUE)
434{
435  assert(_POSIX_Message_queue_Information.maximum == 0);
436  next_step(POSIX_MESSAGE_QUEUE_PRE);
437}
438
439LAST(RTEMS_SYSINIT_POSIX_MESSAGE_QUEUE)
440{
441  assert(_POSIX_Message_queue_Information.maximum != 0);
442  next_step(POSIX_MESSAGE_QUEUE_POST);
443}
444
445FIRST(RTEMS_SYSINIT_POSIX_SEMAPHORE)
446{
447  assert(_POSIX_Semaphore_Information.maximum == 0);
448  next_step(POSIX_SEMAPHORE_PRE);
449}
450
451LAST(RTEMS_SYSINIT_POSIX_SEMAPHORE)
452{
453  assert(_POSIX_Semaphore_Information.maximum != 0);
454  next_step(POSIX_SEMAPHORE_POST);
455}
456
457FIRST(RTEMS_SYSINIT_POSIX_TIMER)
458{
459  assert(_POSIX_Timer_Information.maximum == 0);
460  next_step(POSIX_TIMER_PRE);
461}
462
463LAST(RTEMS_SYSINIT_POSIX_TIMER)
464{
465  assert(_POSIX_Timer_Information.maximum != 0);
466  next_step(POSIX_TIMER_POST);
467}
468
469FIRST(RTEMS_SYSINIT_POSIX_BARRIER)
470{
471  assert(_POSIX_Barrier_Information.maximum == 0);
472  next_step(POSIX_BARRIER_PRE);
473}
474
475LAST(RTEMS_SYSINIT_POSIX_BARRIER)
476{
477  assert(_POSIX_Barrier_Information.maximum != 0);
478  next_step(POSIX_BARRIER_POST);
479}
480
481FIRST(RTEMS_SYSINIT_POSIX_RWLOCK)
482{
483  assert(_POSIX_RWLock_Information.maximum == 0);
484  next_step(POSIX_RWLOCK_PRE);
485}
486
487LAST(RTEMS_SYSINIT_POSIX_RWLOCK)
488{
489  assert(_POSIX_RWLock_Information.maximum != 0);
490  next_step(POSIX_RWLOCK_POST);
491}
492
493FIRST(RTEMS_SYSINIT_POSIX_SPINLOCK)
494{
495  assert(_POSIX_Spinlock_Information.maximum == 0);
496  next_step(POSIX_SPINLOCK_PRE);
497}
498
499LAST(RTEMS_SYSINIT_POSIX_SPINLOCK)
500{
501  assert(_POSIX_Spinlock_Information.maximum != 0);
502  next_step(POSIX_SPINLOCK_POST);
503}
504
505static size_t user_extensions_pre_posix_cleanup;
506
507FIRST(RTEMS_SYSINIT_POSIX_CLEANUP)
508{
509  user_extensions_pre_posix_cleanup =
510    _Chain_Node_count_unprotected(&_User_extensions_List);
511  next_step(POSIX_CLEANUP_PRE);
512}
513
514LAST(RTEMS_SYSINIT_POSIX_CLEANUP)
515{
516  assert(
517    user_extensions_pre_posix_cleanup + 1 ==
518      _Chain_Node_count_unprotected(&_User_extensions_List)
519  );
520  next_step(POSIX_CLEANUP_POST);
521}
522
523#endif /* RTEMS_POSIX_API */
524
525FIRST(RTEMS_SYSINIT_POSIX_KEYS)
526{
527  assert(_POSIX_Keys_Information.maximum == 0);
528  next_step(POSIX_KEYS_PRE);
529}
530
531LAST(RTEMS_SYSINIT_POSIX_KEYS)
532{
533  assert(_POSIX_Keys_Information.maximum != 0);
534  next_step(POSIX_KEYS_POST);
535}
536
537FIRST(RTEMS_SYSINIT_IDLE_THREADS)
538{
539  assert(_System_state_Is_before_initialization(_System_state_Get()));
540  next_step(IDLE_THREADS_PRE);
541}
542
543LAST(RTEMS_SYSINIT_IDLE_THREADS)
544{
545  assert(_System_state_Is_before_multitasking(_System_state_Get()));
546  next_step(IDLE_THREADS_POST);
547}
548
549FIRST(RTEMS_SYSINIT_LIBIO)
550{
551  assert(rtems_libio_semaphore == 0);
552  next_step(LIBIO_PRE);
553}
554
555LAST(RTEMS_SYSINIT_LIBIO)
556{
557  assert(rtems_libio_semaphore != 0);
558  next_step(LIBIO_POST);
559}
560
561FIRST(RTEMS_SYSINIT_ROOT_FILESYSTEM)
562{
563  struct stat st;
564  int rv;
565
566  rv = stat("/", &st);
567  assert(rv == -1);
568  next_step(ROOT_FILESYSTEM_PRE);
569}
570
571LAST(RTEMS_SYSINIT_ROOT_FILESYSTEM)
572{
573  struct stat st;
574  int rv;
575
576  rv = stat("/", &st);
577  assert(rv == 0);
578  next_step(ROOT_FILESYSTEM_POST);
579}
580
581FIRST(RTEMS_SYSINIT_BSP_PRE_DRIVERS)
582{
583  /*
584   * Since the work performed here is BSP-specific, there is no way to test pre
585   * and post conditions.
586   */
587  next_step(BSP_PRE_DRIVERS_PRE);
588}
589
590LAST(RTEMS_SYSINIT_BSP_PRE_DRIVERS)
591{
592  next_step(BSP_PRE_DRIVERS_POST);
593}
594
595FIRST(RTEMS_SYSINIT_DEVICE_DRIVERS)
596{
597  assert(!_IO_All_drivers_initialized);
598  next_step(DEVICE_DRIVERS_PRE);
599}
600
601LAST(RTEMS_SYSINIT_DEVICE_DRIVERS)
602{
603  assert(_IO_All_drivers_initialized);
604  next_step(DEVICE_DRIVERS_POST);
605}
606
607FIRST(RTEMS_SYSINIT_STD_FILE_DESCRIPTORS)
608{
609  struct stat st;
610  int rv;
611
612  rv = fstat(0, &st);
613  assert(rv == -1);
614  next_step(STD_FILE_DESCRIPTORS_PRE);
615}
616
617LAST(RTEMS_SYSINIT_STD_FILE_DESCRIPTORS)
618{
619  struct stat st;
620  int rv;
621
622  rv = fstat(0, &st);
623  assert(rv == 0);
624  next_step(STD_FILE_DESCRIPTORS_POST);
625}
626
627static void Init(rtems_task_argument arg)
628{
629#ifdef RTEMS_POSIX_API
630  pthread_cleanup_push(NULL, NULL);
631  pthread_cleanup_pop(0);
632#endif /* RTEMS_POSIX_API */
633  next_step(INIT_TASK);
634  rtems_test_endk();
635  exit(0);
636}
637
638#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
639#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
640
641#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1
642
643#define CONFIGURE_MAXIMUM_BARRIERS 1
644
645#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 1
646
647#define CONFIGURE_MAXIMUM_PARTITIONS 1
648
649#define CONFIGURE_MAXIMUM_PERIODS 1
650
651#define CONFIGURE_MAXIMUM_PORTS 1
652
653#define CONFIGURE_MAXIMUM_REGIONS 1
654
655#define CONFIGURE_MAXIMUM_SEMAPHORES 1
656
657#define CONFIGURE_MAXIMUM_TASKS 1
658
659#define CONFIGURE_MAXIMUM_TIMERS 1
660
661#ifdef RTEMS_POSIX_API
662
663#define CONFIGURE_MAXIMUM_POSIX_BARRIERS 1
664
665#define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES 1
666
667#define CONFIGURE_MAXIMUM_POSIX_MUTEXES 1
668
669#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 1
670
671#define CONFIGURE_MAXIMUM_POSIX_RWLOCKS 1
672
673#define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES 1
674
675#define CONFIGURE_MAXIMUM_POSIX_SPINLOCKS 1
676
677#define CONFIGURE_MAXIMUM_POSIX_TIMERS 1
678
679#define CONFIGURE_MAXIMUM_POSIX_THREADS 1
680
681#endif /* RTEMS_POSIX_API */
682
683#define CONFIGURE_MAXIMUM_POSIX_KEYS 1
684
685#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
686
687#define CONFIGURE_STACK_CHECKER_ENABLED
688
689#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
690
691#define CONFIGURE_INIT
692
693#include <rtems/confdefs.h>
Note: See TracBrowser for help on using the repository browser.