source: rtems/c/src/exec/sapi/include/confdefs.h @ 86ed4f0

4.104.114.84.95
Last change on this file since 86ed4f0 was 86ed4f0, checked in by Joel Sherrill <joel.sherrill@…>, on 11/03/99 at 12:48:41

Added CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM as a configuration
parameter.

  • Property mode set to 100644
File size: 20.4 KB
Line 
1/*  confdefs.h
2 *
3 *  This include file contains the configuration table template that will
4 *  be used by the single processor tests to define its default configuration
5 *  parameters.
6 *
7 *  COPYRIGHT (c) 1989-1998.
8 *  On-Line Applications Research Corporation (OAR).
9 *  Copyright assigned to U.S. Government, 1994.
10 *
11 *  The license and distribution terms for this file may be
12 *  found in the file LICENSE in this distribution or at
13 *  http://www.OARcorp.com/rtems/license.html.
14 *
15 *  $Id$
16 */
17
18#ifndef __CONFIGURATION_TEMPLATE_h
19#define __CONFIGURATION_TEMPLATE_h
20 
21#ifdef __cplusplus
22extern "C" {
23#endif
24 
25extern rtems_initialization_tasks_table Initialization_tasks[];
26extern rtems_driver_address_table       Device_drivers[];
27extern rtems_configuration_table        Configuration;
28extern rtems_multiprocessing_table      Multiprocessing_configuration;
29#ifdef RTEMS_POSIX_API
30extern posix_api_configuration_table    Configuration_POSIX_API;
31#endif
32
33/*
34 *  RTEMS C Library and Newlib support
35 *
36 *  NOTE:  This ends up defining these even when newlib is not used.
37 */
38
39#define CONFIGURE_NEWLIB_EXTENSION 1
40#define CONFIGURE_MALLOC_REGION 1
41
42#ifndef CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS
43#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 20
44#endif
45
46#define CONFIGURE_LIBIO_SEMAPHORES \
47  (CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS + 1)
48
49#ifdef CONFIGURE_INIT
50unsigned32 rtems_libio_number_iops = CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS;
51#endif
52
53/*
54 *  Mount Table Configuration
55 */
56
57#include <imfs.h>
58
59#ifdef CONFIGURE_INIT
60
61#ifndef CONFIGURE_HAS_OWN_MOUNT_TABLE
62rtems_filesystem_mount_table_t configuration_mount_table = {
63#ifdef CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
64  &miniIMFS_ops,
65#else  /* using IMFS as base filesystem */
66  &IMFS_ops,
67#endif
68  RTEMS_FILESYSTEM_READ_WRITE,
69  NULL,
70  NULL
71};
72
73rtems_filesystem_mount_table_t
74    *rtems_filesystem_mount_table = &configuration_mount_table;
75int rtems_filesystem_mount_table_size = 1;
76#endif
77
78#endif
79
80
81/*
82 *  Stack Checker Requirements
83 */
84
85#ifdef STACK_CHECKER_ON
86#define CONFIGURE_STACK_CHECKER_EXTENSION 1
87#else
88#define CONFIGURE_STACK_CHECKER_EXTENSION 0
89#endif
90
91/*
92 *  Interrupt Stack Space
93 */
94
95#if (CPU_ALLOCATE_INTERRUPT_STACK == 0)
96#define CONFIGURE_INTERRUPT_STACK_MEMORY 0
97#else
98  #ifndef CONFIGURE_INTERRUPT_STACK_MEMORY
99  #define CONFIGURE_INTERRUPT_STACK_MEMORY RTEMS_MINIMUM_STACK_SIZE
100  #else
101  #define CONFIGURE_INTERRUPT_STACK_MEMORY 0
102  #endif
103#endif
104
105/*
106 *  Default User Initialization Task Table.  This table guarantees that
107 *  one user initialization table is defined.
108 */
109
110#ifdef CONFIGURE_RTEMS_INIT_TASKS_TABLE
111
112#ifdef CONFIGURE_HAS_OWN_INIT_TASK_TABLE
113
114/*
115 *  The user is defining their own table information and setting the
116 *  appropriate variables.
117 */
118
119#else
120
121#ifndef CONFIGURE_INIT_TASK_NAME
122#define CONFIGURE_INIT_TASK_NAME          rtems_build_name( 'U', 'I', '1', ' ' )
123#endif
124
125#ifndef CONFIGURE_INIT_TASK_STACK_SIZE
126#define CONFIGURE_INIT_TASK_STACK_SIZE    RTEMS_MINIMUM_STACK_SIZE
127#endif
128
129#ifndef CONFIGURE_INIT_TASK_PRIORITY
130#define CONFIGURE_INIT_TASK_PRIORITY      1
131#endif
132
133#ifndef CONFIGURE_INIT_TASK_ATTRIBUTES
134#define CONFIGURE_INIT_TASK_ATTRIBUTES    RTEMS_DEFAULT_ATTRIBUTES
135#endif
136
137#ifndef CONFIGURE_INIT_TASK_ENTRY_POINT
138#define CONFIGURE_INIT_TASK_ENTRY_POINT   Init
139#endif
140
141#ifndef CONFIGURE_INIT_TASK_INITIAL_MODES
142#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_NO_PREEMPT
143#endif
144
145#ifndef CONFIGURE_INIT_TASK_ARGUMENTS
146#define CONFIGURE_INIT_TASK_ARGUMENTS     0
147#endif
148
149#ifdef CONFIGURE_INIT
150rtems_initialization_tasks_table Initialization_tasks[] = {
151  { CONFIGURE_INIT_TASK_NAME,
152    CONFIGURE_INIT_TASK_STACK_SIZE,
153    CONFIGURE_INIT_TASK_PRIORITY,
154    CONFIGURE_INIT_TASK_ATTRIBUTES,
155    CONFIGURE_INIT_TASK_ENTRY_POINT,
156    CONFIGURE_INIT_TASK_INITIAL_MODES,
157    CONFIGURE_INIT_TASK_ARGUMENTS
158  }
159};
160#endif
161
162#define CONFIGURE_INIT_TASK_TABLE Initialization_tasks
163
164#define CONFIGURE_INIT_TASK_TABLE_SIZE \
165  sizeof(CONFIGURE_INIT_TASK_TABLE) / sizeof(rtems_initialization_tasks_table)
166
167#endif    /* CONFIGURE_HAS_OWN_INIT_TASK_TABLE */
168
169#else     /* CONFIGURE_RTEMS_INIT_TASKS_TABLE */
170
171#define CONFIGURE_INIT_TASK_TABLE      NULL
172#define CONFIGURE_INIT_TASK_TABLE_SIZE 0
173
174#endif
175
176/*
177 *  Default Device Driver Table.  Each driver needed by the test is explicitly
178 *  choosen by that test.  There is always a null driver entry.
179 */
180
181#define NULL_DRIVER_TABLE_ENTRY \
182 { NULL, NULL, NULL, NULL, NULL, NULL }
183
184#ifdef CONFIGURE_TEST_NEEDS_TIMER_DRIVER
185#include <timerdrv.h>
186#endif
187
188#ifdef CONFIGURE_TEST_NEEDS_STUB_DRIVER
189#include <stubdrv.h>
190#endif
191
192#ifndef CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE
193
194#ifdef CONFIGURE_INIT
195rtems_driver_address_table Device_drivers[] = {
196#ifdef CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER
197  CONSOLE_DRIVER_TABLE_ENTRY,
198#endif
199#ifdef CONFIGURE_TEST_NEEDS_CLOCK_DRIVER
200  CLOCK_DRIVER_TABLE_ENTRY,
201#endif
202#ifdef CONFIGURE_TEST_NEEDS_STUB_DRIVER
203  STUB_DRIVER_TABLE_ENTRY,
204#endif
205  NULL_DRIVER_TABLE_ENTRY
206};
207#endif
208
209#endif  /* CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE */
210
211/*
212 *  Default the number of devices per device driver.  This value may be
213 *  overridden by the user.
214 */
215
216#ifndef CONFIGURE_HAS_OWN_NUMBER_OF_DEVICES
217
218#ifndef CONFIGURE_MAXIMUM_DEVICES
219#define CONFIGURE_MAXIMUM_DEVICES   20
220#endif
221
222#endif /* CONFIGURE_HAS_OWN_NUMBER_OF_DEVICES */
223
224/*
225 *  Default Configuration Table.  This table contains the most values set in
226 *  the RTEMS Test Suite.  Each value may be overridden within each test to
227 *  customize the environment.
228 */
229
230#ifdef CONFIGURE_MPTEST
231#ifndef CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE
232
233#ifndef CONFIGURE_MP_NODE_NUMBER
234#define CONFIGURE_MP_NODE_NUMBER                NODE_NUMBER
235#endif
236
237#ifndef CONFIGURE_MP_MAXIMUM_NODES
238#define CONFIGURE_MP_MAXIMUM_NODES              2
239#endif
240
241#ifndef CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
242#define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS     32
243#endif
244
245#ifndef CONFIGURE_MP_MAXIMUM_PROXIES
246#define CONFIGURE_MP_MAXIMUM_PROXIES            32
247#endif
248
249#ifndef CONFIGURE_MP_MPCI_TABLE_POINTER
250#include <mpci.h>
251#define CONFIGURE_MP_MPCI_TABLE_POINTER         &MPCI_table
252#endif
253
254#ifdef CONFIGURE_INIT
255rtems_multiprocessing_table Multiprocessing_configuration = {
256  CONFIGURE_MP_NODE_NUMBER,              /* local node number */
257  CONFIGURE_MP_MAXIMUM_NODES,            /* maximum # nodes in system */
258  CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS,   /* maximum # global objects */
259  CONFIGURE_MP_MAXIMUM_PROXIES,          /* maximum # proxies */
260  CONFIGURE_MP_MPCI_TABLE_POINTER        /* pointer to MPCI config table */
261};
262#endif
263
264#define CONFIGURE_MULTIPROCESSING_TABLE    &Multiprocessing_configuration
265
266#endif /* CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE */
267
268#else
269
270#define CONFIGURE_MULTIPROCESSING_TABLE    NULL
271
272#endif /* CONFIGURE_MPTEST */
273 
274/*
275 *  Default Configuration Table.  This table contains the most values set in
276 *  the RTEMS Test Suite.  Each value may be overridden within each test to
277 *  customize the environment.
278 */
279
280#ifndef CONFIGURE_HAS_OWN_CONFIGURATION_TABLE
281 
282#ifndef CONFIGURE_EXECUTIVE_RAM_WORK_AREA
283#define CONFIGURE_EXECUTIVE_RAM_WORK_AREA     NULL
284#endif
285
286#ifndef CONFIGURE_MAXIMUM_TASKS
287#define CONFIGURE_MAXIMUM_TASKS               10
288#endif
289
290#ifndef CONFIGURE_MAXIMUM_TIMERS
291#define CONFIGURE_MAXIMUM_TIMERS              0
292#endif
293
294#ifndef CONFIGURE_MAXIMUM_SEMAPHORES
295#define CONFIGURE_MAXIMUM_SEMAPHORES          0
296#endif
297
298#ifndef CONFIGURE_MAXIMUM_MESSAGE_QUEUES
299#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES      0
300#endif
301
302#ifndef CONFIGURE_MAXIMUM_PARTITIONS
303#define CONFIGURE_MAXIMUM_PARTITIONS          0
304#endif
305
306#ifndef CONFIGURE_MAXIMUM_REGIONS
307#define CONFIGURE_MAXIMUM_REGIONS             0
308#endif
309
310#ifndef CONFIGURE_MAXIMUM_PORTS
311#define CONFIGURE_MAXIMUM_PORTS               0
312#endif
313
314#ifndef CONFIGURE_MAXIMUM_PERIODS
315#define CONFIGURE_MAXIMUM_PERIODS             0
316#endif
317
318#ifndef CONFIGURE_MAXIMUM_USER_EXTENSIONS
319#define CONFIGURE_MAXIMUM_USER_EXTENSIONS     0
320#endif
321
322#ifndef CONFIGURE_MICROSECONDS_PER_TICK
323#define CONFIGURE_MICROSECONDS_PER_TICK RTEMS_MILLISECONDS_TO_MICROSECONDS(10)
324#endif
325
326#ifndef CONFIGURE_TICKS_PER_TIMESLICE
327#define CONFIGURE_TICKS_PER_TIMESLICE        50
328#endif
329
330/*
331 *  Initial Extension Set
332 */
333
334#ifdef CONFIGURE_INIT
335#ifdef STACK_CHECKER_ON
336#include <rtems/stackchk.h>
337#endif
338
339rtems_extensions_table Configuration_Initial_Extensions[] = {
340#ifdef CONFIGURE_INITIAL_EXTENSIONS
341    CONFIGURE_INITIAL_EXTENSIONS,
342#endif
343#ifdef STACK_CHECKER_ON
344    STACK_CHECKER_EXTENSION,
345#endif
346    { NULL, NULL, NULL, NULL, NULL, NULL, NULL }
347};
348
349#define CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS \
350  ((sizeof(Configuration_Initial_Extensions) / \
351    sizeof(rtems_extensions_table)) - 1)
352
353#endif
354
355/*
356 *  POSIX API Configuration Parameters
357 */
358
359#ifdef RTEMS_POSIX_API
360
361#include <sys/types.h>
362#include <sys/siginfo.h>
363#include <mqueue.h>
364#include <rtems/posix/cond.h>
365#include <rtems/posix/mqueue.h>
366#include <rtems/posix/mutex.h>
367#include <rtems/posix/key.h>
368#include <rtems/posix/psignal.h>
369#include <rtems/posix/semaphore.h>
370#include <rtems/posix/threadsup.h>
371
372#ifndef CONFIGURE_MAXIMUM_POSIX_THREADS
373#define CONFIGURE_MAXIMUM_POSIX_THREADS      10
374#endif
375
376#ifndef CONFIGURE_MAXIMUM_POSIX_MUTEXES
377#define CONFIGURE_MAXIMUM_POSIX_MUTEXES      0
378#endif
379
380#ifndef CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES
381#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES  0
382#endif
383
384#ifndef CONFIGURE_MAXIMUM_POSIX_KEYS
385#define CONFIGURE_MAXIMUM_POSIX_KEYS         0
386#endif
387
388#ifndef CONFIGURE_MAXIMUM_POSIX_TIMERS
389#define CONFIGURE_MAXIMUM_POSIX_TIMERS 0
390#endif
391
392#ifndef CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS
393#define CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS 0
394#endif
395
396#ifndef CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES
397#define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES 0
398#endif
399
400#ifndef CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
401#define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES 0
402#endif
403
404#ifdef CONFIGURE_POSIX_INIT_THREAD_TABLE
405
406#ifdef CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE
407
408/*
409 *  The user is defining their own table information and setting the
410 *  appropriate variables.
411 */
412 
413#else
414
415#ifndef CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT
416#define CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT   POSIX_Init
417#endif
418
419#ifndef CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
420#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE    (RTEMS_MINIMUM_STACK_SIZE * 2)
421#endif
422
423#ifdef CONFIGURE_INIT
424posix_initialization_threads_table POSIX_Initialization_threads[] = {
425  { CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT, \
426      CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE }
427};
428#endif
429
430#define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME POSIX_Initialization_threads
431 
432#define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE \
433  sizeof(CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME) / \
434      sizeof(posix_initialization_threads_table)
435
436#endif    /* CONFIGURE_POSIX_HAS_OWN_INIT_TASK_TABLE */
437
438#else     /* CONFIGURE_POSIX_INIT_THREAD_TABLE */
439
440#define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME NULL
441#define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE 0
442
443#endif
444
445#define CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API \
446  ( \
447    sizeof (POSIX_API_Control) + \
448   (sizeof (void *) * (CONFIGURE_GNAT_KEYS + CONFIGURE_MAXIMUM_POSIX_KEYS)) \
449  )
450
451#define CONFIGURE_MEMORY_FOR_POSIX_MUTEXES(_mutexes) \
452  ((_mutexes) * \
453   ( sizeof(POSIX_Mutex_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
454
455#define CONFIGURE_MEMORY_FOR_POSIX_CONDITION_VARIABLES(_condition_variables) \
456  ((_condition_variables) * \
457   ( sizeof(POSIX_Condition_variables_Control) + \
458        CONFIGURE_OBJECT_TABLE_STUFF ) )
459
460#define CONFIGURE_MEMORY_FOR_POSIX_KEYS(_keys) \
461  ((_keys) * \
462   ( sizeof(POSIX_Keys_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
463
464#define CONFIGURE_MEMORY_FOR_POSIX_TIMERS(_timers) \
465  ((_timers) * \
466   ( 0 ) )
467
468#define CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS(_queued_signals) \
469  ((_queued_signals) * \
470   ( sizeof(POSIX_signals_Siginfo_node) + CONFIGURE_OBJECT_TABLE_STUFF ) )
471
472#define CONFIGURE_MEMORY_FOR_POSIX_MESSAGE_QUEUES(_message_queues) \
473  ((_message_queues) * \
474   ( sizeof( POSIX_Message_queue_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
475#define CONFIGURE_MEMORY_FOR_POSIX_SEMAPHORES(_semaphores) \
476  ((_semaphores) * \
477   ( sizeof( POSIX_Semaphore_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
478 
479
480#define CONFIGURE_MEMORY_FOR_POSIX \
481  ( \
482    CONFIGURE_MEMORY_FOR_POSIX_MUTEXES( CONFIGURE_MAXIMUM_POSIX_MUTEXES ) + \
483    CONFIGURE_MEMORY_FOR_POSIX_CONDITION_VARIABLES( \
484        CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES ) + \
485    CONFIGURE_MEMORY_FOR_POSIX_KEYS( CONFIGURE_MAXIMUM_POSIX_KEYS ) + \
486    CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS( \
487        CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS ) + \
488    CONFIGURE_MEMORY_FOR_POSIX_MESSAGE_QUEUES( \
489        CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES ) + \
490    CONFIGURE_MEMORY_FOR_POSIX_SEMAPHORES( \
491        CONFIGURE_MAXIMUM_POSIX_SEMAPHORES ) + \
492    (CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE) \
493   )
494
495
496#else
497
498#define CONFIGURE_MAXIMUM_POSIX_THREADS         0
499#define CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API 0
500#define CONFIGURE_MEMORY_FOR_POSIX              0
501
502
503#endif    /* RTEMS_POSIX_API */
504
505#ifndef CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
506#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE    0
507#endif
508
509/*
510 *  Calculate the RAM size based on the maximum number of objects configured.
511 *  The model is to estimate the memory required for each configured item,
512 *  sum the memory requirements and insure that there is at least 32K greater
513 *  than that for things not directly addressed such as:
514 *
515 *    + stacks greater than minimum size
516 *    + FP contexts
517 *    + API areas (should be optional)
518 *    + messages
519 *    + object name and local pointer table overhead
520 *    + per node memory requirements
521 *    + executive fixed requirements (including at least internal threads
522 *       and the Ready chains)
523 *
524 *  NOTE:  Eventually this should take into account some of the above.
525 *         Basically, this is a "back of the envelope" estimate for
526 *         memory requirements.  It could be more accurate.
527 */
528
529#ifndef CONFIGURE_EXECUTIVE_RAM_SIZE
530
531#define CONFIGURE_OBJECT_TABLE_STUFF \
532  ( sizeof(Objects_Control *) + sizeof(rtems_name *) + sizeof(rtems_name) )
533
534#define CONFIGURE_MEMORY_FOR_TASKS(_tasks) \
535  (((_tasks) + 1 ) * \
536   ((sizeof(Thread_Control) + CONTEXT_FP_SIZE + \
537      STACK_MINIMUM_SIZE + sizeof( RTEMS_API_Control ) + \
538      CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API + \
539      CONFIGURE_OBJECT_TABLE_STUFF)) \
540  )
541
542#define CONFIGURE_MEMORY_FOR_TIMERS(_timers) \
543  ((_timers) * ( sizeof(Timer_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
544
545#define CONFIGURE_MEMORY_FOR_SEMAPHORES(_semaphores) \
546  ((_semaphores) * \
547   ( sizeof(Semaphore_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
548
549#define CONFIGURE_MEMORY_FOR_MESSAGE_QUEUES(_queues) \
550  ( (_queues) * \
551    ( sizeof(Message_queue_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
552
553#define CONFIGURE_MEMORY_FOR_PARTITIONS(_partitions) \
554  ( (_partitions) * \
555    ( sizeof(Partition_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
556
557#define CONFIGURE_MEMORY_FOR_REGIONS(_regions) \
558  ( (_regions) * \
559    ( sizeof(Region_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
560
561#define CONFIGURE_MEMORY_FOR_PORTS(_ports) \
562  ( (_ports) * \
563    ( sizeof(Dual_ported_memory_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
564
565#define CONFIGURE_MEMORY_FOR_PERIODS(_periods) \
566  ( (_periods) * \
567    ( sizeof(Rate_monotonic_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
568
569#define CONFIGURE_MEMORY_FOR_USER_EXTENSIONS(_extensions) \
570  ( (_extensions) * \
571    ( sizeof(Extension_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
572
573#define CONFIGURE_MEMORY_FOR_DEVICES(_devices) \
574  (((_devices) + 1) * ( sizeof(rtems_driver_name_t) ) )
575
576#ifdef CONFIGURE_MPTEST
577
578#ifndef CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE
579
580#define CONFIGURE_MEMORY_FOR_PROXIES(_proxies) \
581  ( ((_proxies) + 1) * ( sizeof(Thread_Proxy_control) )  )
582
583#define CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS(_global_objects) \
584  ((_global_objects)  * ( sizeof(Objects_MP_Control) )  )
585
586#define CONFIGURE_MEMORY_FOR_MP \
587  ( CONFIGURE_MEMORY_FOR_PROXIES(CONFIGURE_MP_MAXIMUM_PROXIES) + \
588    CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS(CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS) + \
589    CONFIGURE_MEMORY_FOR_TASKS(1) \
590  )
591
592#endif  /* CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE */
593
594#else
595
596#define CONFIGURE_MEMORY_FOR_MP  0
597
598#endif
599
600#ifndef CONFIGURE_MEMORY_OVERHEAD
601#define CONFIGURE_MEMORY_OVERHEAD 0
602#endif
603
604#ifndef CONFIGURE_EXTRA_TASK_STACKS
605#define CONFIGURE_EXTRA_TASK_STACKS 0
606#endif
607
608#define CONFIGURE_MEMORY_FOR_SYSTEM_OVEREHAD \
609  ( CONFIGURE_MEMORY_FOR_TASKS(1) +    /* IDLE */ \
610    (256 * 12) +                       /* Ready chains */ \
611    256        +                       /* name/ptr table overhead */ \
612    CONFIGURE_INTERRUPT_STACK_MEMORY   /* interrupt stack */ \
613  )
614
615#define CONFIGURE_EXECUTIVE_RAM_SIZE \
616(( CONFIGURE_MEMORY_FOR_POSIX + \
617   CONFIGURE_MEMORY_FOR_TASKS(CONFIGURE_MAXIMUM_TASKS + \
618      CONFIGURE_MAXIMUM_POSIX_THREADS + CONFIGURE_MAXIMUM_ADA_TASKS ) + \
619   CONFIGURE_MEMORY_FOR_TIMERS(CONFIGURE_MAXIMUM_TIMERS) + \
620   CONFIGURE_MEMORY_FOR_SEMAPHORES(CONFIGURE_MAXIMUM_SEMAPHORES + \
621     CONFIGURE_LIBIO_SEMAPHORES) + \
622   CONFIGURE_MEMORY_FOR_MESSAGE_QUEUES(CONFIGURE_MAXIMUM_MESSAGE_QUEUES) + \
623   CONFIGURE_MEMORY_FOR_PARTITIONS(CONFIGURE_MAXIMUM_PARTITIONS) + \
624   CONFIGURE_MEMORY_FOR_REGIONS( \
625      CONFIGURE_MAXIMUM_REGIONS + CONFIGURE_MALLOC_REGION ) + \
626   CONFIGURE_MEMORY_FOR_PORTS(CONFIGURE_MAXIMUM_PORTS) + \
627   CONFIGURE_MEMORY_FOR_PERIODS(CONFIGURE_MAXIMUM_PERIODS) + \
628   CONFIGURE_MEMORY_FOR_USER_EXTENSIONS( \
629      CONFIGURE_MAXIMUM_USER_EXTENSIONS + CONFIGURE_NEWLIB_EXTENSION + \
630      CONFIGURE_STACK_CHECKER_EXTENSION ) + \
631   CONFIGURE_MEMORY_FOR_DEVICES(CONFIGURE_MAXIMUM_DEVICES) + \
632   CONFIGURE_MEMORY_FOR_MP + \
633   CONFIGURE_MEMORY_FOR_SYSTEM_OVEREHAD + \
634   (((CONFIGURE_MEMORY_OVERHEAD)+1) * 1024) + \
635   (CONFIGURE_EXTRA_TASK_STACKS) + (CONFIGURE_ADA_TASKS_STACK) \
636) & 0xfffffc00)
637#endif
638
639#ifdef CONFIGURE_GNAT_RTEMS
640#define CONFIGURE_GNAT_MUTEXES 10
641#define CONFIGURE_GNAT_KEYS    1
642
643/* 20 are required to run all tests in the ACVC */
644#ifndef CONFIGURE_MAXIMUM_ADA_TASKS
645#define CONFIGURE_MAXIMUM_ADA_TASKS  20
646#endif
647
648/* This is the number of non-Ada tasks which invoked Ada code. */
649#ifndef CONFIGURE_MAXIMUM_FAKE_ADA_TASKS
650#define CONFIGURE_MAXIMUM_FAKE_ADA_TASKS 0
651#endif
652
653/* Ada tasks are allocated twice the minimum stack space */
654#define CONFIGURE_ADA_TASKS_STACK \
655  (CONFIGURE_MAXIMUM_ADA_TASKS * (RTEMS_MINIMUM_STACK_SIZE + (6 * 1024)))
656
657#else
658#define CONFIGURE_GNAT_MUTEXES           0
659#define CONFIGURE_GNAT_KEYS              0
660#define CONFIGURE_MAXIMUM_ADA_TASKS      0
661#define CONFIGURE_MAXIMUM_FAKE_ADA_TASKS 0
662#define CONFIGURE_ADA_TASKS_STACK        0
663#endif
664
665
666#ifdef CONFIGURE_INIT
667
668rtems_api_configuration_table Configuration_RTEMS_API = {
669  CONFIGURE_MAXIMUM_TASKS,
670  CONFIGURE_MAXIMUM_TIMERS,
671  CONFIGURE_MAXIMUM_SEMAPHORES + CONFIGURE_LIBIO_SEMAPHORES,
672  CONFIGURE_MAXIMUM_MESSAGE_QUEUES,
673  CONFIGURE_MAXIMUM_PARTITIONS,
674  CONFIGURE_MAXIMUM_REGIONS + CONFIGURE_MALLOC_REGION,
675  CONFIGURE_MAXIMUM_PORTS,
676  CONFIGURE_MAXIMUM_PERIODS,
677  CONFIGURE_INIT_TASK_TABLE_SIZE,
678  CONFIGURE_INIT_TASK_TABLE
679};
680
681#ifdef RTEMS_POSIX_API
682posix_api_configuration_table Configuration_POSIX_API = {
683  CONFIGURE_MAXIMUM_POSIX_THREADS + CONFIGURE_MAXIMUM_ADA_TASKS,
684  CONFIGURE_MAXIMUM_POSIX_MUTEXES + CONFIGURE_GNAT_MUTEXES +
685    CONFIGURE_MAXIMUM_ADA_TASKS + CONFIGURE_MAXIMUM_FAKE_ADA_TASKS,
686  CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES +
687    CONFIGURE_MAXIMUM_ADA_TASKS + CONFIGURE_MAXIMUM_FAKE_ADA_TASKS,
688  CONFIGURE_MAXIMUM_POSIX_KEYS + CONFIGURE_GNAT_KEYS,
689  CONFIGURE_MAXIMUM_POSIX_TIMERS,
690  CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS,
691  CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES,
692  CONFIGURE_MAXIMUM_POSIX_SEMAPHORES,
693  CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE,
694  CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME
695};
696#endif
697
698rtems_configuration_table Configuration = {
699  CONFIGURE_EXECUTIVE_RAM_WORK_AREA,
700  CONFIGURE_EXECUTIVE_RAM_SIZE,
701  CONFIGURE_MAXIMUM_USER_EXTENSIONS + CONFIGURE_NEWLIB_EXTENSION +
702      CONFIGURE_STACK_CHECKER_EXTENSION,
703  CONFIGURE_MICROSECONDS_PER_TICK,
704  CONFIGURE_TICKS_PER_TIMESLICE,
705  CONFIGURE_MAXIMUM_DEVICES,
706  sizeof (Device_drivers)/
707    sizeof(rtems_driver_address_table),      /* number of device drivers */
708  Device_drivers,                            /* pointer to driver table */
709  CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS,    /* number of initial extensions */
710  Configuration_Initial_Extensions,          /* pointer to initial extensions */
711  CONFIGURE_MULTIPROCESSING_TABLE,           /* pointer to MP config table */
712  &Configuration_RTEMS_API,                  /* pointer to RTEMS API config */
713#ifdef RTEMS_POSIX_API
714  &Configuration_POSIX_API                   /* pointer to POSIX API config */
715#else
716  NULL                                       /* pointer to POSIX API config */
717#endif
718};
719#endif
720
721#endif /* CONFIGURE_HAS_OWN_CONFIGURATION_TABLE */
722
723#ifdef __cplusplus
724}
725#endif
726 
727#endif
728/* end of include file */
Note: See TracBrowser for help on using the repository browser.