source: rtems/cpukit/sapi/include/confdefs.h @ b2b143f4

4.104.114.84.95
Last change on this file since b2b143f4 was b2b143f4, checked in by Joel Sherrill <joel.sherrill@…>, on 03/05/04 at 17:58:51

2004-03-05 Joel Sherrill <joel@…>

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