source: rtems/c/src/exec/sapi/include/confdefs.h @ 96e6a86c

4.104.114.84.95
Last change on this file since 96e6a86c was 96e6a86c, checked in by Joel Sherrill <joel.sherrill@…>, on 03/28/02 at 19:32:16

2001-03-28 Joel Sherrill <joel@…>

  • PR132 requested some tinkering ot lower memory.
  • include/confdefs.h: Lowered footprint of device driver table and statically configure user extensions. Now if no static extensions are configured, then the table is not instantiated.
  • Property mode set to 100644
File size: 30.5 KB
Line 
1/*  confdefs.h
2 *
3 *  This include file contains the configuration table template that will
4 *  be instantiated by an application based on the setting of a number
5 *  of macros.  The macros are documented in the Configuring a System
6 *  chapter of the Classic API User's Guide
7 *
8 *  The model is to estimate the memory required for each configured item
9 *  and sum those estimates.  The estimate can be too high or too low for
10 *  a variety of reasons:
11 *
12 *  Reasons estimate is too high:
13 *    + FP contexts (not all tasks are FP)
14 *
15 *  Reasons estimate is too low:
16 *    + stacks greater than minimum size
17 *    + messages
18 *    + application must account for device driver resources
19 *    + application must account for add-on library resource requirements
20 *
21 *  NOTE:  Eventually this may be able to take into account some of
22 *         the above.  This procedure has evolved from just enough to
23 *         support the RTEMS Test Suites into something that can be
24 *         used remarkably reliably by most applications.
25 *  COPYRIGHT (c) 1989-1999.
26 *  On-Line Applications Research Corporation (OAR).
27 *
28 *  The license and distribution terms for this file may be
29 *  found in the file LICENSE in this distribution or at
30 *  http://www.OARcorp.com/rtems/license.html.
31 *
32 *  $Id$
33 */
34
35#ifndef __CONFIGURATION_TEMPLATE_h
36#define __CONFIGURATION_TEMPLATE_h
37 
38#ifdef __cplusplus
39extern "C" {
40#endif
41
42/*
43 * Include the executive's configuration
44 */
45#include <rtems/score/cpuopts.h>
46
47extern rtems_initialization_tasks_table Initialization_tasks[];
48extern rtems_driver_address_table       Device_drivers[];
49extern rtems_configuration_table        Configuration;
50extern rtems_multiprocessing_table      Multiprocessing_configuration;
51#ifdef RTEMS_POSIX_API
52extern posix_api_configuration_table    Configuration_POSIX_API;
53#endif
54#ifdef RTEMS_ITRON_API
55extern itron_api_configuration_table    Configuration_ITRON_API;
56#endif
57
58/*
59 *  RTEMS C Library and Newlib support
60 */
61
62#ifdef RTEMS_NEWLIB
63#define CONFIGURE_NEWLIB_EXTENSION 1
64#else
65#define CONFIGURE_NEWLIB_EXTENSION 0
66#endif
67
68#define CONFIGURE_MALLOC_REGION 1
69
70/*
71 *  File descriptors managed by libio
72 */
73
74#ifndef CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS
75#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 3
76#endif
77
78#define CONFIGURE_LIBIO_SEMAPHORES \
79  (CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS + 1)
80
81#ifdef CONFIGURE_INIT
82unsigned32 rtems_libio_number_iops = CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS;
83#endif
84
85/*
86 *  Termios resources
87 */
88
89#ifdef CONFIGURE_TERMIOS_DISABLED
90#define CONFIGURE_TERMIOS_SEMAPHORES 0
91#else
92
93#ifndef CONFIGURE_NUMBER_OF_TERMIOS_PORTS
94#define CONFIGURE_NUMBER_OF_TERMIOS_PORTS 1
95#endif
96
97#define CONFIGURE_TERMIOS_SEMAPHORES \
98  ((CONFIGURE_NUMBER_OF_TERMIOS_PORTS * 4) + 1)
99#endif
100
101/*
102 *  Mount Table Configuration
103 */
104
105#include <imfs.h>
106
107#ifdef CONFIGURE_INIT
108
109#ifndef CONFIGURE_HAS_OWN_MOUNT_TABLE
110rtems_filesystem_mount_table_t configuration_mount_table = {
111#ifdef CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
112  &IMFS_ops,
113#else  /* using miniIMFS as base filesystem */
114  &miniIMFS_ops,
115#endif
116  RTEMS_FILESYSTEM_READ_WRITE,
117  NULL,
118  NULL
119};
120
121rtems_filesystem_mount_table_t
122    *rtems_filesystem_mount_table = &configuration_mount_table;
123int rtems_filesystem_mount_table_size = 1;
124#endif
125
126#endif
127
128
129/*
130 *  Stack Checker Requirements
131 *
132 *  NOTE: This does not automatically enable reporting at program exit.
133 */
134
135#ifdef STACK_CHECKER_ON
136#define CONFIGURE_STACK_CHECKER_EXTENSION 1
137#else
138#define CONFIGURE_STACK_CHECKER_EXTENSION 0
139#endif
140
141/*
142 *  Interrupt Stack Space
143 *
144 *  NOTE: There is currently no way for the application to override
145 *        the interrupt stack size set by the BSP.
146 */
147
148#if (CPU_ALLOCATE_INTERRUPT_STACK == 0)
149#undef CONFIGURE_INTERRUPT_STACK_MEMORY
150#define CONFIGURE_INTERRUPT_STACK_MEMORY 0
151#else
152  #ifndef CONFIGURE_INTERRUPT_STACK_MEMORY
153  #define CONFIGURE_INTERRUPT_STACK_MEMORY RTEMS_MINIMUM_STACK_SIZE
154  #endif
155#endif
156
157/*
158 *  Default User Initialization Task Table.  This table guarantees that
159 *  one user initialization table is defined.
160 */
161
162#ifdef CONFIGURE_RTEMS_INIT_TASKS_TABLE
163
164#ifdef CONFIGURE_HAS_OWN_INIT_TASK_TABLE
165
166/*
167 *  The user is defining their own table information and setting the
168 *  appropriate variables.
169 */
170
171#else
172
173#ifndef CONFIGURE_INIT_TASK_NAME
174#define CONFIGURE_INIT_TASK_NAME          rtems_build_name( 'U', 'I', '1', ' ' )
175#endif
176
177#ifndef CONFIGURE_INIT_TASK_STACK_SIZE
178#define CONFIGURE_INIT_TASK_STACK_SIZE    RTEMS_MINIMUM_STACK_SIZE
179#endif
180
181#ifndef CONFIGURE_INIT_TASK_PRIORITY
182#define CONFIGURE_INIT_TASK_PRIORITY      1
183#endif
184
185#ifndef CONFIGURE_INIT_TASK_ATTRIBUTES
186#define CONFIGURE_INIT_TASK_ATTRIBUTES    RTEMS_DEFAULT_ATTRIBUTES
187#endif
188
189#ifndef CONFIGURE_INIT_TASK_ENTRY_POINT
190#define CONFIGURE_INIT_TASK_ENTRY_POINT   Init
191#endif
192
193#ifndef CONFIGURE_INIT_TASK_INITIAL_MODES
194#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_NO_PREEMPT
195#endif
196
197#ifndef CONFIGURE_INIT_TASK_ARGUMENTS
198#define CONFIGURE_INIT_TASK_ARGUMENTS     0
199#endif
200
201#ifdef CONFIGURE_INIT
202rtems_initialization_tasks_table Initialization_tasks[] = {
203  { CONFIGURE_INIT_TASK_NAME,
204    CONFIGURE_INIT_TASK_STACK_SIZE,
205    CONFIGURE_INIT_TASK_PRIORITY,
206    CONFIGURE_INIT_TASK_ATTRIBUTES,
207    CONFIGURE_INIT_TASK_ENTRY_POINT,
208    CONFIGURE_INIT_TASK_INITIAL_MODES,
209    CONFIGURE_INIT_TASK_ARGUMENTS
210  }
211};
212#endif
213
214#define CONFIGURE_INIT_TASK_TABLE Initialization_tasks
215
216#define CONFIGURE_INIT_TASK_TABLE_SIZE \
217  sizeof(CONFIGURE_INIT_TASK_TABLE) / sizeof(rtems_initialization_tasks_table)
218
219#endif    /* CONFIGURE_HAS_OWN_INIT_TASK_TABLE */
220
221#else     /* CONFIGURE_RTEMS_INIT_TASKS_TABLE */
222
223#define CONFIGURE_INIT_TASK_TABLE      NULL
224#define CONFIGURE_INIT_TASK_TABLE_SIZE 0
225#define CONFIGURE_INIT_TASK_STACK_SIZE 0
226
227#endif
228
229/*
230 *  Map obsolete names to current ones
231 *
232 *  NOTE: These should be obsoleted in a future release.
233 */
234
235#ifdef CONFIGURE_TEST_NEEDS_TIMER_DRIVER
236#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
237#endif
238#ifdef CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER
239#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
240#endif
241#ifdef CONFIGURE_TEST_NEEDS_CLOCK_DRIVER
242#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
243#endif
244#ifdef CONFIGURE_TEST_NEEDS_RTC_DRIVER
245#define CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
246#endif
247#ifdef CONFIGURE_TEST_NEEDS_STUB_DRIVER
248#define CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
249#endif
250
251
252/*
253 *  Default Device Driver Table.  Each driver needed by the test is explicitly
254 *  choosen by that test.  There is always a null driver entry.
255 */
256
257#define NULL_DRIVER_TABLE_ENTRY \
258 { NULL, NULL, NULL, NULL, NULL, NULL }
259
260#ifdef CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
261#include <console.h>
262#endif
263
264#ifdef CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
265#include <clockdrv.h>
266#endif
267
268#ifdef CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
269#include <timerdrv.h>
270#endif
271
272#ifdef CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
273#include <rtc.h>
274#endif
275
276#ifdef CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
277#include <rtems/devnull.h>
278#endif
279
280#ifndef CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE
281
282#ifdef CONFIGURE_INIT
283rtems_driver_address_table Device_drivers[] = {
284#ifdef CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
285  CONSOLE_DRIVER_TABLE_ENTRY,
286#endif
287#ifdef CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
288  CLOCK_DRIVER_TABLE_ENTRY,
289#endif
290#ifdef CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
291  RTC_DRIVER_TABLE_ENTRY,
292#endif
293#ifdef CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
294  DEVNULL_DRIVER_TABLE_ENTRY,
295#endif
296#ifdef CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
297  NULL_DRIVER_TABLE_ENTRY
298#elif !defined(CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER) && \
299    !defined(CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER) && \
300    !defined(CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER) && \
301    !defined(CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER)
302  NULL_DRIVER_TABLE_ENTRY
303#endif
304};
305#endif
306
307#endif  /* CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE */
308
309/*
310 *  Default the number of drivers per node.  This value may be
311 *  overridden by the user.
312 */
313
314#define CONFIGURE_NUMBER_OF_DRIVERS \
315  ((sizeof(Device_drivers) / sizeof(rtems_driver_address_table)))
316
317#ifndef CONFIGURE_MAXIMUM_DRIVERS
318#define CONFIGURE_MAXIMUM_DRIVERS CONFIGURE_NUMBER_OF_DRIVERS
319#endif
320
321/*
322 *  Default the number of devices per device driver.  This value may be
323 *  overridden by the user.
324 */
325
326#ifndef CONFIGURE_MAXIMUM_DEVICES
327#define CONFIGURE_MAXIMUM_DEVICES   20
328#endif
329
330/*
331 *  Default Multiprocessing Configuration Table.  The defaults are
332 *  appropriate for most of the RTEMS Multiprocessor Test Suite.  Each
333 *  value may be overridden within each test to customize the environment.
334 */
335
336#ifdef CONFIGURE_MP_APPLICATION
337#ifndef CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE
338
339#ifndef CONFIGURE_MP_NODE_NUMBER
340#define CONFIGURE_MP_NODE_NUMBER                NODE_NUMBER
341#endif
342
343#ifndef CONFIGURE_MP_MAXIMUM_NODES
344#define CONFIGURE_MP_MAXIMUM_NODES              2
345#endif
346
347#ifndef CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
348#define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS     32
349#endif
350
351#ifndef CONFIGURE_MP_MAXIMUM_PROXIES
352#define CONFIGURE_MP_MAXIMUM_PROXIES            32
353#endif
354
355#ifndef CONFIGURE_MP_MPCI_TABLE_POINTER
356#include <mpci.h>
357#define CONFIGURE_MP_MPCI_TABLE_POINTER         &MPCI_table
358#endif
359
360#ifdef CONFIGURE_INIT
361rtems_multiprocessing_table Multiprocessing_configuration = {
362  CONFIGURE_MP_NODE_NUMBER,              /* local node number */
363  CONFIGURE_MP_MAXIMUM_NODES,            /* maximum # nodes in system */
364  CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS,   /* maximum # global objects */
365  CONFIGURE_MP_MAXIMUM_PROXIES,          /* maximum # proxies */
366  CONFIGURE_MP_MPCI_TABLE_POINTER        /* pointer to MPCI config table */
367};
368#endif
369
370#define CONFIGURE_MULTIPROCESSING_TABLE    &Multiprocessing_configuration
371
372#endif /* CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE */
373
374#else
375
376#define CONFIGURE_MULTIPROCESSING_TABLE    NULL
377
378#endif /* CONFIGURE_MP_APPLICATION */
379 
380/*
381 *  Default Configuration Table. 
382 */
383
384#ifndef CONFIGURE_HAS_OWN_CONFIGURATION_TABLE
385 
386#ifndef CONFIGURE_EXECUTIVE_RAM_WORK_AREA
387#define CONFIGURE_EXECUTIVE_RAM_WORK_AREA     NULL
388#endif
389
390#ifndef CONFIGURE_MAXIMUM_TASKS
391#define CONFIGURE_MAXIMUM_TASKS               0
392#endif
393
394#ifndef CONFIGURE_MAXIMUM_TIMERS
395#define CONFIGURE_MAXIMUM_TIMERS              0
396#endif
397
398#ifndef CONFIGURE_MAXIMUM_SEMAPHORES
399#define CONFIGURE_MAXIMUM_SEMAPHORES          0
400#endif
401
402#ifndef CONFIGURE_MAXIMUM_MESSAGE_QUEUES
403#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES      0
404#endif
405
406#ifndef CONFIGURE_MAXIMUM_PARTITIONS
407#define CONFIGURE_MAXIMUM_PARTITIONS          0
408#endif
409
410#ifndef CONFIGURE_MAXIMUM_REGIONS
411#define CONFIGURE_MAXIMUM_REGIONS             0
412#endif
413
414#ifndef CONFIGURE_MAXIMUM_PORTS
415#define CONFIGURE_MAXIMUM_PORTS               0
416#endif
417
418#ifndef CONFIGURE_MAXIMUM_PERIODS
419#define CONFIGURE_MAXIMUM_PERIODS             0
420#endif
421
422#ifndef CONFIGURE_MAXIMUM_USER_EXTENSIONS
423#define CONFIGURE_MAXIMUM_USER_EXTENSIONS     0
424#endif
425
426#ifndef CONFIGURE_MICROSECONDS_PER_TICK
427#define CONFIGURE_MICROSECONDS_PER_TICK RTEMS_MILLISECONDS_TO_MICROSECONDS(10)
428#endif
429
430#ifndef CONFIGURE_TICKS_PER_TIMESLICE
431#define CONFIGURE_TICKS_PER_TIMESLICE        50
432#endif
433
434/*
435 *  Initial Extension Set
436 */
437
438#ifdef CONFIGURE_INIT
439#ifdef STACK_CHECKER_ON
440#include <rtems/stackchk.h>
441#endif
442
443#if defined(CONFIGURE_INITIAL_EXTENSIONS) || \
444    defined(STACK_CHECKER_ON)
445rtems_extensions_table Configuration_Initial_Extensions[] = {
446#ifdef CONFIGURE_INITIAL_EXTENSIONS
447    CONFIGURE_INITIAL_EXTENSIONS,
448#endif
449#ifdef STACK_CHECKER_ON
450    STACK_CHECKER_EXTENSION,
451#endif
452};
453
454#define CONFIGURE_INITIAL_EXTENSION_TABLE Configuration_Initial_Extensions
455#define CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS \
456  ((sizeof(Configuration_Initial_Extensions) / \
457    sizeof(rtems_extensions_table)))
458#else
459#define CONFIGURE_INITIAL_EXTENSION_TABLE NULL
460#define CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS 0
461#endif
462
463
464#endif
465
466/*
467 *  POSIX API Configuration Parameters
468 */
469
470#ifdef RTEMS_POSIX_API
471
472#include <sys/types.h>
473#include <signal.h>
474#include <mqueue.h>
475#include <rtems/posix/cond.h>
476#include <rtems/posix/mqueue.h>
477#include <rtems/posix/mutex.h>
478#include <rtems/posix/key.h>
479#include <rtems/posix/psignal.h>
480#include <rtems/posix/semaphore.h>
481#include <rtems/posix/threadsup.h>
482
483#ifndef CONFIGURE_MAXIMUM_POSIX_THREADS
484#define CONFIGURE_MAXIMUM_POSIX_THREADS      0
485#endif
486
487#ifndef CONFIGURE_MAXIMUM_POSIX_MUTEXES
488#define CONFIGURE_MAXIMUM_POSIX_MUTEXES      0
489#endif
490
491#ifndef CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES
492#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES  0
493#endif
494
495#ifndef CONFIGURE_MAXIMUM_POSIX_KEYS
496#define CONFIGURE_MAXIMUM_POSIX_KEYS         0
497#endif
498
499#ifndef CONFIGURE_MAXIMUM_POSIX_TIMERS
500#define CONFIGURE_MAXIMUM_POSIX_TIMERS 0
501#endif
502
503#ifndef CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS
504#define CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS 0
505#endif
506
507#ifndef CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES
508#define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES 0
509#endif
510
511#ifndef CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
512#define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES 0
513#endif
514
515#ifdef CONFIGURE_POSIX_INIT_THREAD_TABLE
516
517#ifdef CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE
518
519/*
520 *  The user is defining their own table information and setting the
521 *  appropriate variables for the POSIX Initialization Thread Table.
522 */
523 
524#else
525
526#ifndef CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT
527#define CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT   POSIX_Init
528#endif
529
530#ifndef CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
531#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE    (RTEMS_MINIMUM_STACK_SIZE * 2)
532#endif
533
534#ifdef CONFIGURE_INIT
535posix_initialization_threads_table POSIX_Initialization_threads[] = {
536  { CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT, \
537      CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE }
538};
539#endif
540
541#define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME POSIX_Initialization_threads
542 
543#define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE \
544  sizeof(CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME) / \
545      sizeof(posix_initialization_threads_table)
546
547#endif    /* CONFIGURE_POSIX_HAS_OWN_INIT_TASK_TABLE */
548
549#else     /* CONFIGURE_POSIX_INIT_THREAD_TABLE */
550
551#define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME NULL
552#define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE 0
553
554#endif
555
556#define CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API \
557  ( \
558    sizeof (POSIX_API_Control) + \
559   (sizeof (void *) * (CONFIGURE_GNAT_KEYS + CONFIGURE_MAXIMUM_POSIX_KEYS)) \
560  )
561
562#define CONFIGURE_MEMORY_FOR_POSIX_MUTEXES(_mutexes) \
563  ((_mutexes) * \
564   ( sizeof(POSIX_Mutex_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
565
566#define CONFIGURE_MEMORY_FOR_POSIX_CONDITION_VARIABLES(_condition_variables) \
567  ((_condition_variables) * \
568   ( sizeof(POSIX_Condition_variables_Control) + \
569        CONFIGURE_OBJECT_TABLE_STUFF ) )
570
571#define CONFIGURE_MEMORY_FOR_POSIX_KEYS(_keys) \
572  ((_keys) * \
573   ( sizeof(POSIX_Keys_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
574
575#define CONFIGURE_MEMORY_FOR_POSIX_TIMERS(_timers) \
576  ((_timers) * \
577   ( 0 ) )
578
579#define CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS(_queued_signals) \
580  ((_queued_signals) * \
581   ( sizeof(POSIX_signals_Siginfo_node) + CONFIGURE_OBJECT_TABLE_STUFF ) )
582
583#define CONFIGURE_MEMORY_FOR_POSIX_MESSAGE_QUEUES(_message_queues) \
584  ((_message_queues) * \
585   ( sizeof( POSIX_Message_queue_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
586#define CONFIGURE_MEMORY_FOR_POSIX_SEMAPHORES(_semaphores) \
587  ((_semaphores) * \
588   ( sizeof( POSIX_Semaphore_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
589 
590
591#define CONFIGURE_MEMORY_FOR_POSIX \
592  ( \
593    CONFIGURE_MEMORY_FOR_POSIX_MUTEXES( CONFIGURE_MAXIMUM_POSIX_MUTEXES ) + \
594    CONFIGURE_MEMORY_FOR_POSIX_CONDITION_VARIABLES( \
595        CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES ) + \
596    CONFIGURE_MEMORY_FOR_POSIX_KEYS( CONFIGURE_MAXIMUM_POSIX_KEYS ) + \
597    CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS( \
598        CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS ) + \
599    CONFIGURE_MEMORY_FOR_POSIX_MESSAGE_QUEUES( \
600        CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES ) + \
601    CONFIGURE_MEMORY_FOR_POSIX_SEMAPHORES( \
602        CONFIGURE_MAXIMUM_POSIX_SEMAPHORES ) + \
603    (CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE) \
604   )
605
606
607#else
608
609#define CONFIGURE_MAXIMUM_POSIX_THREADS         0
610#define CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API 0
611#define CONFIGURE_MEMORY_FOR_POSIX              0
612
613
614#endif    /* RTEMS_POSIX_API */
615
616#ifndef CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
617#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE    0
618#endif
619
620/*
621 *  ITRON API Configuration Parameters
622 */
623
624#ifdef RTEMS_ITRON_API
625
626#include <itron.h>
627#include <rtems/itron/config.h>
628#include <rtems/itron/eventflags.h>
629#include <rtems/itron/fmempool.h>
630#include <rtems/itron/mbox.h>
631#include <rtems/itron/msgbuffer.h>
632#include <rtems/itron/port.h>
633#include <rtems/itron/semaphore.h>
634#include <rtems/itron/task.h>
635#include <rtems/itron/vmempool.h>
636
637#ifndef CONFIGURE_MAXIMUM_ITRON_TASKS
638#define CONFIGURE_MAXIMUM_ITRON_TASKS      0
639#endif
640
641#ifndef CONFIGURE_MAXIMUM_ITRON_SEMAPHORES
642#define CONFIGURE_MAXIMUM_ITRON_SEMAPHORES   0
643#endif
644
645#ifndef CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS
646#define CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS   0
647#endif
648
649#ifndef CONFIGURE_MAXIMUM_ITRON_MAILBOXES
650#define CONFIGURE_MAXIMUM_ITRON_MAILBOXES   0
651#endif
652
653#ifndef CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS
654#define CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS   0
655#endif
656
657#ifndef CONFIGURE_MAXIMUM_ITRON_PORTS
658#define CONFIGURE_MAXIMUM_ITRON_PORTS   0
659#endif
660
661#ifndef CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS
662#define CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS   0
663#endif
664
665#ifndef CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS
666#define CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS   0
667#endif
668
669#ifdef CONFIGURE_ITRON_INIT_TASK_TABLE
670
671#ifdef CONFIGURE_ITRON_HAS_OWN_INIT_TASK_TABLE
672
673/*
674 *  The user is defining their own table information and setting the
675 *  appropriate variables for the ITRON Initialization Task Table.
676 */
677
678#else
679
680#ifndef CONFIGURE_ITRON_INIT_TASK_ENTRY_POINT
681#define CONFIGURE_ITRON_INIT_TASK_ENTRY_POINT   ITRON_Init
682#endif
683
684#ifndef CONFIGURE_ITRON_INIT_TASK_ATTRIBUTES
685#define CONFIGURE_ITRON_INIT_TASK_ATTRIBUTES    TA_HLNG
686#endif
687
688#ifndef CONFIGURE_ITRON_INIT_TASK_PRIORITY
689#define CONFIGURE_ITRON_INIT_TASK_PRIORITY      1
690#endif
691
692#ifndef CONFIGURE_ITRON_INIT_TASK_STACK_SIZE
693#define CONFIGURE_ITRON_INIT_TASK_STACK_SIZE    RTEMS_MINIMUM_STACK_SIZE
694#endif
695
696#ifdef CONFIGURE_INIT
697itron_initialization_tasks_table ITRON_Initialization_tasks[] = {
698  { 1,                                    /* ID */
699    { (VP) 0,                                /* exinfo */
700      CONFIGURE_ITRON_INIT_TASK_ATTRIBUTES,  /* task attributes */
701      CONFIGURE_ITRON_INIT_TASK_ENTRY_POINT, /* task start address */
702      CONFIGURE_ITRON_INIT_TASK_PRIORITY,    /* initial task priority */
703      CONFIGURE_ITRON_INIT_TASK_STACK_SIZE   /* stack size */
704    }
705  }
706};
707#endif
708
709#define CONFIGURE_ITRON_INIT_TASK_TABLE_NAME ITRON_Initialization_tasks
710
711#define CONFIGURE_ITRON_INIT_TASK_TABLE_SIZE \
712  sizeof(CONFIGURE_ITRON_INIT_TASK_TABLE_NAME) / \
713      sizeof(itron_initialization_tasks_table)
714
715#endif    /* CONFIGURE_ITRON_HAS_OWN_INIT_TASK_TABLE */
716
717#else     /* CONFIGURE_ITRON_INIT_TASK_TABLE */
718
719#define CONFIGURE_ITRON_INIT_TASK_TABLE_NAME NULL
720#define CONFIGURE_ITRON_INIT_TASK_TABLE_SIZE 0
721
722#endif
723
724#define CONFIGURE_MEMORY_PER_TASK_FOR_ITRON_API \
725  ( \
726    sizeof (ITRON_API_Control) \
727  )
728
729#define CONFIGURE_MEMORY_FOR_ITRON_SEMAPHORES(_semaphores) \
730  ((_semaphores) * \
731   ( sizeof(ITRON_Semaphore_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
732
733#define CONFIGURE_MEMORY_FOR_ITRON_EVENTFLAGS(_eventflags) \
734  ((_eventflags) * \
735   ( sizeof(ITRON_Eventflags_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
736
737#define CONFIGURE_MEMORY_FOR_ITRON_MAILBOXES(_mailboxes) \
738  ((_mailboxes) * \
739   ( sizeof(ITRON_Mailbox_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
740
741#define CONFIGURE_MEMORY_FOR_ITRON_MESSAGE_BUFFERS(_message_buffers) \
742  ((_message_buffers) * \
743   ( sizeof(ITRON_Message_buffer_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
744
745#define CONFIGURE_MEMORY_FOR_ITRON_PORTS(_ports) \
746  ((_ports) * \
747   ( sizeof(ITRON_Port_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
748
749#define CONFIGURE_MEMORY_FOR_ITRON_MEMORY_POOLS(_memory_pools) \
750  ((_memory_pools) * \
751   (sizeof(ITRON_Variable_memory_pool_Control) + CONFIGURE_OBJECT_TABLE_STUFF))
752
753#define CONFIGURE_MEMORY_FOR_ITRON_FIXED_MEMORY_POOLS(_fixed_memory_pools) \
754  ((_fixed_memory_pools) * \
755   ( sizeof(ITRON_Fixed_memory_pool_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
756
757#ifndef CONFIGURE_ITRON_INIT_TASK_STACK_SIZE
758#define CONFIGURE_ITRON_INIT_TASK_STACK_SIZE (RTEMS_MINIMUM_STACK_SIZE * 2)
759#endif
760
761
762#define CONFIGURE_MEMORY_FOR_ITRON \
763  ( \
764    CONFIGURE_MEMORY_FOR_ITRON_SEMAPHORES( \
765        CONFIGURE_MAXIMUM_ITRON_SEMAPHORES ) + \
766    CONFIGURE_MEMORY_FOR_ITRON_EVENTFLAGS( \
767        CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS ) + \
768    CONFIGURE_MEMORY_FOR_ITRON_MAILBOXES( \
769        CONFIGURE_MAXIMUM_ITRON_MAILBOXES ) + \
770    CONFIGURE_MEMORY_FOR_ITRON_MESSAGE_BUFFERS( \
771        CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS ) + \
772    CONFIGURE_MEMORY_FOR_ITRON_PORTS( \
773        CONFIGURE_MAXIMUM_ITRON_PORTS ) + \
774    CONFIGURE_MEMORY_FOR_ITRON_MEMORY_POOLS( \
775        CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS ) + \
776    CONFIGURE_MEMORY_FOR_ITRON_FIXED_MEMORY_POOLS( \
777        CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS ) + \
778    CONFIGURE_ITRON_INIT_TASK_STACK_SIZE \
779   )
780
781
782#else
783
784#define CONFIGURE_MAXIMUM_ITRON_TASKS               0
785#define CONFIGURE_MAXIMUM_ITRON_SEMAPHORES          0
786#define CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS          0
787#define CONFIGURE_MAXIMUM_ITRON_MAILBOXES           0
788#define CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS     0
789#define CONFIGURE_MAXIMUM_ITRON_PORTS               0
790#define CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS        0
791#define CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS  0
792#define CONFIGURE_MEMORY_PER_TASK_FOR_ITRON_API     0
793#define CONFIGURE_MEMORY_FOR_ITRON                  0
794
795#endif    /* RTEMS_ITRON_API */
796
797
798/*
799 *  Calculate the RAM size based on the maximum number of objects configured.
800 */
801
802#ifndef CONFIGURE_EXECUTIVE_RAM_SIZE
803
804#define CONFIGURE_OBJECT_TABLE_STUFF \
805  ( sizeof(Objects_Control *) + sizeof(rtems_name *) + sizeof(rtems_name) )
806
807#define CONFIGURE_MEMORY_FOR_TASKS(_tasks) \
808  (((_tasks) + 1 ) * \
809   ((sizeof(Thread_Control) + CONTEXT_FP_SIZE + \
810      STACK_MINIMUM_SIZE + sizeof( RTEMS_API_Control ) + \
811      CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API + \
812      CONFIGURE_MEMORY_PER_TASK_FOR_ITRON_API + \
813      CONFIGURE_OBJECT_TABLE_STUFF)) \
814  )
815
816#define CONFIGURE_MEMORY_FOR_TIMERS(_timers) \
817  ((_timers) * ( sizeof(Timer_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
818
819#define CONFIGURE_MEMORY_FOR_SEMAPHORES(_semaphores) \
820  ((_semaphores) * \
821   ( sizeof(Semaphore_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
822
823#define CONFIGURE_MEMORY_FOR_MESSAGE_QUEUES(_queues) \
824  ( (_queues) * \
825    ( sizeof(Message_queue_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
826
827#define CONFIGURE_MEMORY_FOR_PARTITIONS(_partitions) \
828  ( (_partitions) * \
829    ( sizeof(Partition_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
830
831#define CONFIGURE_MEMORY_FOR_REGIONS(_regions) \
832  ( (_regions) * \
833    ( sizeof(Region_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
834
835#define CONFIGURE_MEMORY_FOR_PORTS(_ports) \
836  ( (_ports) * \
837    ( sizeof(Dual_ported_memory_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
838
839#define CONFIGURE_MEMORY_FOR_PERIODS(_periods) \
840  ( (_periods) * \
841    ( sizeof(Rate_monotonic_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
842
843#define CONFIGURE_MEMORY_FOR_USER_EXTENSIONS(_extensions) \
844  ( (_extensions) * \
845    ( sizeof(Extension_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
846
847#define CONFIGURE_MEMORY_FOR_DEVICES(_devices) \
848  (((_devices) + 1) * ( sizeof(rtems_driver_name_t) ) )
849
850#ifdef CONFIGURE_MP_APPLICATION
851
852#ifndef CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE
853
854#define CONFIGURE_MEMORY_FOR_PROXIES(_proxies) \
855  ( ((_proxies) + 1) * ( sizeof(Thread_Proxy_control) )  )
856
857#define CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS(_global_objects) \
858  ((_global_objects)  * ( sizeof(Objects_MP_Control) )  )
859
860#define CONFIGURE_MEMORY_FOR_MP \
861  ( CONFIGURE_MEMORY_FOR_PROXIES(CONFIGURE_MP_MAXIMUM_PROXIES) + \
862    CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS(CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS) + \
863    CONFIGURE_MEMORY_FOR_TASKS(1) \
864  )
865
866#endif  /* CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE */
867
868#else
869
870#define CONFIGURE_MEMORY_FOR_MP  0
871
872#endif
873
874#ifndef CONFIGURE_MEMORY_OVERHEAD
875#define CONFIGURE_MEMORY_OVERHEAD 0
876#endif
877
878#ifndef CONFIGURE_EXTRA_TASK_STACKS
879#define CONFIGURE_EXTRA_TASK_STACKS 0
880#endif
881
882#define CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD \
883  ( CONFIGURE_MEMORY_FOR_TASKS(1) +    /* IDLE */ \
884    (256 * 12) +                       /* Ready chains */ \
885    256        +                       /* name/ptr table overhead */ \
886    CONFIGURE_INTERRUPT_STACK_MEMORY   /* interrupt stack */ \
887  )
888
889/*
890 *  Now account for any extra memory that initialization tasks or threads
891 *  may have requested.
892 */
893
894#ifdef RTEMS_POSIX_API
895#define CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART \
896    (CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE - RTEMS_MINIMUM_STACK_SIZE)
897#else
898#define CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART 0
899#endif
900#ifdef RTEMS_ITRON_API
901#define CONFIGURE_INITIALIZATION_THREADS_STACKS_ITRON_PART \
902    (CONFIGURE_ITRON_INIT_TASK_STACK_SIZE - RTEMS_MINIMUM_STACK_SIZE)
903#else
904#define CONFIGURE_INITIALIZATION_THREADS_STACKS_ITRON_PART 0
905#endif
906
907#define CONFIGURE_INITIALIZATION_THREADS_STACKS \
908   ((CONFIGURE_INIT_TASK_STACK_SIZE - RTEMS_MINIMUM_STACK_SIZE) + \
909    CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART + \
910    CONFIGURE_INITIALIZATION_THREADS_STACKS_ITRON_PART)
911
912#define CONFIGURE_EXECUTIVE_RAM_SIZE \
913(( CONFIGURE_MEMORY_FOR_POSIX + \
914   CONFIGURE_MEMORY_FOR_ITRON + \
915   CONFIGURE_MEMORY_FOR_TASKS(CONFIGURE_MAXIMUM_TASKS + \
916      CONFIGURE_MAXIMUM_POSIX_THREADS + CONFIGURE_MAXIMUM_ADA_TASKS + \
917      CONFIGURE_MAXIMUM_ITRON_TASKS ) + \
918   CONFIGURE_INITIALIZATION_THREADS_STACKS + \
919   CONFIGURE_MEMORY_FOR_TIMERS(CONFIGURE_MAXIMUM_TIMERS) + \
920   CONFIGURE_MEMORY_FOR_SEMAPHORES(CONFIGURE_MAXIMUM_SEMAPHORES + \
921     CONFIGURE_LIBIO_SEMAPHORES + CONFIGURE_TERMIOS_SEMAPHORES) + \
922   CONFIGURE_MEMORY_FOR_MESSAGE_QUEUES(CONFIGURE_MAXIMUM_MESSAGE_QUEUES) + \
923   CONFIGURE_MEMORY_FOR_PARTITIONS(CONFIGURE_MAXIMUM_PARTITIONS) + \
924   CONFIGURE_MEMORY_FOR_REGIONS( \
925      CONFIGURE_MAXIMUM_REGIONS + CONFIGURE_MALLOC_REGION ) + \
926   CONFIGURE_MEMORY_FOR_PORTS(CONFIGURE_MAXIMUM_PORTS) + \
927   CONFIGURE_MEMORY_FOR_PERIODS(CONFIGURE_MAXIMUM_PERIODS) + \
928   CONFIGURE_MEMORY_FOR_USER_EXTENSIONS( \
929      CONFIGURE_MAXIMUM_USER_EXTENSIONS + CONFIGURE_NEWLIB_EXTENSION + \
930      CONFIGURE_STACK_CHECKER_EXTENSION ) + \
931   CONFIGURE_MEMORY_FOR_DEVICES(CONFIGURE_MAXIMUM_DEVICES) + \
932   CONFIGURE_MEMORY_FOR_MP + \
933   CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD + \
934   (((CONFIGURE_MEMORY_OVERHEAD)+1) * 1024) + \
935   (CONFIGURE_EXTRA_TASK_STACKS) + (CONFIGURE_ADA_TASKS_STACK) \
936) & 0xfffffc00)
937#endif
938
939#ifdef CONFIGURE_GNAT_RTEMS
940#define CONFIGURE_GNAT_MUTEXES 10
941#define CONFIGURE_GNAT_KEYS    1
942
943/* 20 are required to run all tests in the ACVC */
944#ifndef CONFIGURE_MAXIMUM_ADA_TASKS
945#define CONFIGURE_MAXIMUM_ADA_TASKS  20
946#endif
947
948/* This is the number of non-Ada tasks which invoked Ada code. */
949#ifndef CONFIGURE_MAXIMUM_FAKE_ADA_TASKS
950#define CONFIGURE_MAXIMUM_FAKE_ADA_TASKS 0
951#endif
952
953/* Ada tasks are allocated twice the minimum stack space */
954#define CONFIGURE_ADA_TASKS_STACK \
955  (CONFIGURE_MAXIMUM_ADA_TASKS * (RTEMS_MINIMUM_STACK_SIZE + (6 * 1024)))
956
957#else
958#define CONFIGURE_GNAT_MUTEXES           0
959#define CONFIGURE_GNAT_KEYS              0
960#define CONFIGURE_MAXIMUM_ADA_TASKS      0
961#define CONFIGURE_MAXIMUM_FAKE_ADA_TASKS 0
962#define CONFIGURE_ADA_TASKS_STACK        0
963#endif
964
965
966#ifdef CONFIGURE_INIT
967
968rtems_api_configuration_table Configuration_RTEMS_API = {
969  CONFIGURE_MAXIMUM_TASKS,
970  CONFIGURE_MAXIMUM_TIMERS,
971  CONFIGURE_MAXIMUM_SEMAPHORES + CONFIGURE_LIBIO_SEMAPHORES +
972    CONFIGURE_TERMIOS_SEMAPHORES,
973  CONFIGURE_MAXIMUM_MESSAGE_QUEUES,
974  CONFIGURE_MAXIMUM_PARTITIONS,
975  CONFIGURE_MAXIMUM_REGIONS + CONFIGURE_MALLOC_REGION,
976  CONFIGURE_MAXIMUM_PORTS,
977  CONFIGURE_MAXIMUM_PERIODS,
978  CONFIGURE_INIT_TASK_TABLE_SIZE,
979  CONFIGURE_INIT_TASK_TABLE
980};
981
982#ifdef RTEMS_POSIX_API
983posix_api_configuration_table Configuration_POSIX_API = {
984  CONFIGURE_MAXIMUM_POSIX_THREADS + CONFIGURE_MAXIMUM_ADA_TASKS,
985  CONFIGURE_MAXIMUM_POSIX_MUTEXES + CONFIGURE_GNAT_MUTEXES +
986    CONFIGURE_MAXIMUM_ADA_TASKS + CONFIGURE_MAXIMUM_FAKE_ADA_TASKS,
987  CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES +
988    CONFIGURE_MAXIMUM_ADA_TASKS + CONFIGURE_MAXIMUM_FAKE_ADA_TASKS,
989  CONFIGURE_MAXIMUM_POSIX_KEYS + CONFIGURE_GNAT_KEYS,
990  CONFIGURE_MAXIMUM_POSIX_TIMERS,
991  CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS,
992  CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES,
993  CONFIGURE_MAXIMUM_POSIX_SEMAPHORES,
994  CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE,
995  CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME
996};
997#endif
998
999#ifdef RTEMS_ITRON_API
1000itron_api_configuration_table Configuration_ITRON_API = {
1001  CONFIGURE_MAXIMUM_ITRON_TASKS,
1002  CONFIGURE_MAXIMUM_ITRON_SEMAPHORES,
1003  CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS,
1004  CONFIGURE_MAXIMUM_ITRON_MAILBOXES,
1005  CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS,
1006  CONFIGURE_MAXIMUM_ITRON_PORTS,
1007  CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS,
1008  CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS,
1009  CONFIGURE_ITRON_INIT_TASK_TABLE_SIZE,
1010  CONFIGURE_ITRON_INIT_TASK_TABLE_NAME
1011};
1012#endif
1013
1014rtems_configuration_table Configuration = {
1015  CONFIGURE_EXECUTIVE_RAM_WORK_AREA,
1016  CONFIGURE_EXECUTIVE_RAM_SIZE,
1017  CONFIGURE_MAXIMUM_USER_EXTENSIONS + CONFIGURE_NEWLIB_EXTENSION +
1018      CONFIGURE_STACK_CHECKER_EXTENSION,
1019  CONFIGURE_MICROSECONDS_PER_TICK,
1020  CONFIGURE_TICKS_PER_TIMESLICE,
1021  CONFIGURE_MAXIMUM_DEVICES,
1022  CONFIGURE_MAXIMUM_DRIVERS,
1023  CONFIGURE_NUMBER_OF_DRIVERS,               /* number of device drivers */
1024  Device_drivers,                            /* pointer to driver table */
1025  CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS,    /* number of initial extensions */
1026  CONFIGURE_INITIAL_EXTENSION_TABLE,         /* pointer to initial extensions */
1027  CONFIGURE_MULTIPROCESSING_TABLE,           /* pointer to MP config table */
1028  &Configuration_RTEMS_API,                  /* pointer to RTEMS API config */
1029#ifdef RTEMS_POSIX_API
1030  &Configuration_POSIX_API,                  /* pointer to POSIX API config */
1031#else
1032  NULL,                                      /* pointer to POSIX API config */
1033#endif
1034#ifdef RTEMS_ITRON_API
1035  &Configuration_ITRON_API                   /* pointer to ITRON API config */
1036#else
1037  NULL                                       /* pointer to ITRON API config */
1038#endif
1039};
1040#endif
1041
1042#endif /* CONFIGURE_HAS_OWN_CONFIGURATION_TABLE */
1043
1044#ifdef __cplusplus
1045}
1046#endif
1047 
1048/*
1049 *  Some warnings and error checking
1050 */
1051
1052/*
1053 *  Make sure a task/thread of some sort is configured
1054 */
1055
1056#if (CONFIGURE_MAXIMUM_TASKS == 0) && \
1057    (CONFIGURE_MAXIMUM_POSIX_THREADS == 0) && \
1058    (CONFIGURE_MAXIMUM_ADA_TASKS == 0) &&  \
1059    (CONFIGURE_MAXIMUM_ITRON_TASKS == 0)
1060#error "CONFIGURATION ERROR: No tasks or threads configured!!"
1061#endif
1062
1063/*
1064 *  Make sure at least one of the initialization task/thread
1065 *  tables was defined.
1066 */
1067
1068#if !defined(CONFIGURE_RTEMS_INIT_TASKS_TABLE) && \
1069    !defined(CONFIGURE_POSIX_INIT_THREAD_TABLE) && \
1070    !defined(CONFIGURE_ITRON_INIT_TASK_TABLE)
1071#error "CONFIGURATION ERROR: No initialization tasks or threads configured!!"
1072#endif
1073
1074#endif
1075/* end of include file */
Note: See TracBrowser for help on using the repository browser.