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

4.104.114.84.95
Last change on this file since be0fc099 was be0fc099, checked in by Joel Sherrill <joel.sherrill@…>, on 11/02/99 at 15:55:34

Added CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES and
CONFIGURE_MAXIMUM_POSIX_SEMAPHORES.

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