source: rtems/testsuites/sptests/spsysinit01/init.c @ bdf6cc2

5
Last change on this file since bdf6cc2 was bdf6cc2, checked in by Sebastian Huber <sebastian.huber@…>, on 04/20/16 at 12:00:44

sptests/spsysinit01: Fix warning

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