source: rtems/c/src/exec/sapi/include/confdefs.h @ 1d4bac9

4.104.114.84.95
Last change on this file since 1d4bac9 was 1d4bac9, checked in by Joel Sherrill <joel.sherrill@…>, on Apr 16, 2001 at 8:32:16 PM

2001-04-16 Joel Sherrill <joel@…>

  • include/confdefs.h: Fix real-time clock support.
  • Property mode set to 100644
File size: 29.7 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  NULL_DRIVER_TABLE_ENTRY
297};
298#endif
299
300#endif  /* CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE */
301
302/*
303 *  Default the number of devices per device driver.  This value may be
304 *  overridden by the user.
305 */
306
307#ifndef CONFIGURE_MAXIMUM_DEVICES
308#define CONFIGURE_MAXIMUM_DEVICES   20
309#endif
310
311/*
312 *  Default Multiprocessing Configuration Table.  The defaults are
313 *  appropriate for most of the RTEMS Multiprocessor Test Suite.  Each
314 *  value may be overridden within each test to customize the environment.
315 */
316
317#ifdef CONFIGURE_MP_APPLICATION
318#ifndef CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE
319
320#ifndef CONFIGURE_MP_NODE_NUMBER
321#define CONFIGURE_MP_NODE_NUMBER                NODE_NUMBER
322#endif
323
324#ifndef CONFIGURE_MP_MAXIMUM_NODES
325#define CONFIGURE_MP_MAXIMUM_NODES              2
326#endif
327
328#ifndef CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
329#define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS     32
330#endif
331
332#ifndef CONFIGURE_MP_MAXIMUM_PROXIES
333#define CONFIGURE_MP_MAXIMUM_PROXIES            32
334#endif
335
336#ifndef CONFIGURE_MP_MPCI_TABLE_POINTER
337#include <mpci.h>
338#define CONFIGURE_MP_MPCI_TABLE_POINTER         &MPCI_table
339#endif
340
341#ifdef CONFIGURE_INIT
342rtems_multiprocessing_table Multiprocessing_configuration = {
343  CONFIGURE_MP_NODE_NUMBER,              /* local node number */
344  CONFIGURE_MP_MAXIMUM_NODES,            /* maximum # nodes in system */
345  CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS,   /* maximum # global objects */
346  CONFIGURE_MP_MAXIMUM_PROXIES,          /* maximum # proxies */
347  CONFIGURE_MP_MPCI_TABLE_POINTER        /* pointer to MPCI config table */
348};
349#endif
350
351#define CONFIGURE_MULTIPROCESSING_TABLE    &Multiprocessing_configuration
352
353#endif /* CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE */
354
355#else
356
357#define CONFIGURE_MULTIPROCESSING_TABLE    NULL
358
359#endif /* CONFIGURE_MP_APPLICATION */
360 
361/*
362 *  Default Configuration Table. 
363 */
364
365#ifndef CONFIGURE_HAS_OWN_CONFIGURATION_TABLE
366 
367#ifndef CONFIGURE_EXECUTIVE_RAM_WORK_AREA
368#define CONFIGURE_EXECUTIVE_RAM_WORK_AREA     NULL
369#endif
370
371#ifndef CONFIGURE_MAXIMUM_TASKS
372#define CONFIGURE_MAXIMUM_TASKS               0
373#endif
374
375#ifndef CONFIGURE_MAXIMUM_TIMERS
376#define CONFIGURE_MAXIMUM_TIMERS              0
377#endif
378
379#ifndef CONFIGURE_MAXIMUM_SEMAPHORES
380#define CONFIGURE_MAXIMUM_SEMAPHORES          0
381#endif
382
383#ifndef CONFIGURE_MAXIMUM_MESSAGE_QUEUES
384#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES      0
385#endif
386
387#ifndef CONFIGURE_MAXIMUM_PARTITIONS
388#define CONFIGURE_MAXIMUM_PARTITIONS          0
389#endif
390
391#ifndef CONFIGURE_MAXIMUM_REGIONS
392#define CONFIGURE_MAXIMUM_REGIONS             0
393#endif
394
395#ifndef CONFIGURE_MAXIMUM_PORTS
396#define CONFIGURE_MAXIMUM_PORTS               0
397#endif
398
399#ifndef CONFIGURE_MAXIMUM_PERIODS
400#define CONFIGURE_MAXIMUM_PERIODS             0
401#endif
402
403#ifndef CONFIGURE_MAXIMUM_USER_EXTENSIONS
404#define CONFIGURE_MAXIMUM_USER_EXTENSIONS     0
405#endif
406
407#ifndef CONFIGURE_MICROSECONDS_PER_TICK
408#define CONFIGURE_MICROSECONDS_PER_TICK RTEMS_MILLISECONDS_TO_MICROSECONDS(10)
409#endif
410
411#ifndef CONFIGURE_TICKS_PER_TIMESLICE
412#define CONFIGURE_TICKS_PER_TIMESLICE        50
413#endif
414
415/*
416 *  Initial Extension Set
417 */
418
419#ifdef CONFIGURE_INIT
420#ifdef STACK_CHECKER_ON
421#include <rtems/stackchk.h>
422#endif
423
424rtems_extensions_table Configuration_Initial_Extensions[] = {
425#ifdef CONFIGURE_INITIAL_EXTENSIONS
426    CONFIGURE_INITIAL_EXTENSIONS,
427#endif
428#ifdef STACK_CHECKER_ON
429    STACK_CHECKER_EXTENSION,
430#endif
431    { NULL, NULL, NULL, NULL, NULL, NULL, NULL }
432};
433
434#define CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS \
435  ((sizeof(Configuration_Initial_Extensions) / \
436    sizeof(rtems_extensions_table)) - 1)
437
438#endif
439
440/*
441 *  POSIX API Configuration Parameters
442 */
443
444#ifdef RTEMS_POSIX_API
445
446#include <sys/types.h>
447#include <signal.h>
448#include <mqueue.h>
449#include <rtems/posix/cond.h>
450#include <rtems/posix/mqueue.h>
451#include <rtems/posix/mutex.h>
452#include <rtems/posix/key.h>
453#include <rtems/posix/psignal.h>
454#include <rtems/posix/semaphore.h>
455#include <rtems/posix/threadsup.h>
456
457#ifndef CONFIGURE_MAXIMUM_POSIX_THREADS
458#define CONFIGURE_MAXIMUM_POSIX_THREADS      0
459#endif
460
461#ifndef CONFIGURE_MAXIMUM_POSIX_MUTEXES
462#define CONFIGURE_MAXIMUM_POSIX_MUTEXES      0
463#endif
464
465#ifndef CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES
466#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES  0
467#endif
468
469#ifndef CONFIGURE_MAXIMUM_POSIX_KEYS
470#define CONFIGURE_MAXIMUM_POSIX_KEYS         0
471#endif
472
473#ifndef CONFIGURE_MAXIMUM_POSIX_TIMERS
474#define CONFIGURE_MAXIMUM_POSIX_TIMERS 0
475#endif
476
477#ifndef CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS
478#define CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS 0
479#endif
480
481#ifndef CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES
482#define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES 0
483#endif
484
485#ifndef CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
486#define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES 0
487#endif
488
489#ifdef CONFIGURE_POSIX_INIT_THREAD_TABLE
490
491#ifdef CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE
492
493/*
494 *  The user is defining their own table information and setting the
495 *  appropriate variables for the POSIX Initialization Thread Table.
496 */
497 
498#else
499
500#ifndef CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT
501#define CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT   POSIX_Init
502#endif
503
504#ifndef CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
505#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE    (RTEMS_MINIMUM_STACK_SIZE * 2)
506#endif
507
508#ifdef CONFIGURE_INIT
509posix_initialization_threads_table POSIX_Initialization_threads[] = {
510  { CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT, \
511      CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE }
512};
513#endif
514
515#define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME POSIX_Initialization_threads
516 
517#define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE \
518  sizeof(CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME) / \
519      sizeof(posix_initialization_threads_table)
520
521#endif    /* CONFIGURE_POSIX_HAS_OWN_INIT_TASK_TABLE */
522
523#else     /* CONFIGURE_POSIX_INIT_THREAD_TABLE */
524
525#define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME NULL
526#define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE 0
527
528#endif
529
530#define CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API \
531  ( \
532    sizeof (POSIX_API_Control) + \
533   (sizeof (void *) * (CONFIGURE_GNAT_KEYS + CONFIGURE_MAXIMUM_POSIX_KEYS)) \
534  )
535
536#define CONFIGURE_MEMORY_FOR_POSIX_MUTEXES(_mutexes) \
537  ((_mutexes) * \
538   ( sizeof(POSIX_Mutex_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
539
540#define CONFIGURE_MEMORY_FOR_POSIX_CONDITION_VARIABLES(_condition_variables) \
541  ((_condition_variables) * \
542   ( sizeof(POSIX_Condition_variables_Control) + \
543        CONFIGURE_OBJECT_TABLE_STUFF ) )
544
545#define CONFIGURE_MEMORY_FOR_POSIX_KEYS(_keys) \
546  ((_keys) * \
547   ( sizeof(POSIX_Keys_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
548
549#define CONFIGURE_MEMORY_FOR_POSIX_TIMERS(_timers) \
550  ((_timers) * \
551   ( 0 ) )
552
553#define CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS(_queued_signals) \
554  ((_queued_signals) * \
555   ( sizeof(POSIX_signals_Siginfo_node) + CONFIGURE_OBJECT_TABLE_STUFF ) )
556
557#define CONFIGURE_MEMORY_FOR_POSIX_MESSAGE_QUEUES(_message_queues) \
558  ((_message_queues) * \
559   ( sizeof( POSIX_Message_queue_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
560#define CONFIGURE_MEMORY_FOR_POSIX_SEMAPHORES(_semaphores) \
561  ((_semaphores) * \
562   ( sizeof( POSIX_Semaphore_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
563 
564
565#define CONFIGURE_MEMORY_FOR_POSIX \
566  ( \
567    CONFIGURE_MEMORY_FOR_POSIX_MUTEXES( CONFIGURE_MAXIMUM_POSIX_MUTEXES ) + \
568    CONFIGURE_MEMORY_FOR_POSIX_CONDITION_VARIABLES( \
569        CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES ) + \
570    CONFIGURE_MEMORY_FOR_POSIX_KEYS( CONFIGURE_MAXIMUM_POSIX_KEYS ) + \
571    CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS( \
572        CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS ) + \
573    CONFIGURE_MEMORY_FOR_POSIX_MESSAGE_QUEUES( \
574        CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES ) + \
575    CONFIGURE_MEMORY_FOR_POSIX_SEMAPHORES( \
576        CONFIGURE_MAXIMUM_POSIX_SEMAPHORES ) + \
577    (CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE) \
578   )
579
580
581#else
582
583#define CONFIGURE_MAXIMUM_POSIX_THREADS         0
584#define CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API 0
585#define CONFIGURE_MEMORY_FOR_POSIX              0
586
587
588#endif    /* RTEMS_POSIX_API */
589
590#ifndef CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
591#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE    0
592#endif
593
594/*
595 *  ITRON API Configuration Parameters
596 */
597
598#ifdef RTEMS_ITRON_API
599
600#include <itron.h>
601#include <rtems/itron/config.h>
602#include <rtems/itron/eventflags.h>
603#include <rtems/itron/fmempool.h>
604#include <rtems/itron/mbox.h>
605#include <rtems/itron/msgbuffer.h>
606#include <rtems/itron/port.h>
607#include <rtems/itron/semaphore.h>
608#include <rtems/itron/task.h>
609#include <rtems/itron/vmempool.h>
610
611#ifndef CONFIGURE_MAXIMUM_ITRON_TASKS
612#define CONFIGURE_MAXIMUM_ITRON_TASKS      0
613#endif
614
615#ifndef CONFIGURE_MAXIMUM_ITRON_SEMAPHORES
616#define CONFIGURE_MAXIMUM_ITRON_SEMAPHORES   0
617#endif
618
619#ifndef CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS
620#define CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS   0
621#endif
622
623#ifndef CONFIGURE_MAXIMUM_ITRON_MAILBOXES
624#define CONFIGURE_MAXIMUM_ITRON_MAILBOXES   0
625#endif
626
627#ifndef CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS
628#define CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS   0
629#endif
630
631#ifndef CONFIGURE_MAXIMUM_ITRON_PORTS
632#define CONFIGURE_MAXIMUM_ITRON_PORTS   0
633#endif
634
635#ifndef CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS
636#define CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS   0
637#endif
638
639#ifndef CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS
640#define CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS   0
641#endif
642
643#ifdef CONFIGURE_ITRON_INIT_TASK_TABLE
644
645#ifdef CONFIGURE_ITRON_HAS_OWN_INIT_TASK_TABLE
646
647/*
648 *  The user is defining their own table information and setting the
649 *  appropriate variables for the ITRON Initialization Task Table.
650 */
651
652#else
653
654#ifndef CONFIGURE_ITRON_INIT_TASK_ENTRY_POINT
655#define CONFIGURE_ITRON_INIT_TASK_ENTRY_POINT   ITRON_Init
656#endif
657
658#ifndef CONFIGURE_ITRON_INIT_TASK_ATTRIBUTES
659#define CONFIGURE_ITRON_INIT_TASK_ATTRIBUTES    TA_HLNG
660#endif
661
662#ifndef CONFIGURE_ITRON_INIT_TASK_PRIORITY
663#define CONFIGURE_ITRON_INIT_TASK_PRIORITY      1
664#endif
665
666#ifndef CONFIGURE_ITRON_INIT_TASK_STACK_SIZE
667#define CONFIGURE_ITRON_INIT_TASK_STACK_SIZE    RTEMS_MINIMUM_STACK_SIZE
668#endif
669
670#ifdef CONFIGURE_INIT
671itron_initialization_tasks_table ITRON_Initialization_tasks[] = {
672  { 1,                                    /* ID */
673    { (VP) 0,                                /* exinfo */
674      CONFIGURE_ITRON_INIT_TASK_ATTRIBUTES,  /* task attributes */
675      CONFIGURE_ITRON_INIT_TASK_ENTRY_POINT, /* task start address */
676      CONFIGURE_ITRON_INIT_TASK_PRIORITY,    /* initial task priority */
677      CONFIGURE_ITRON_INIT_TASK_STACK_SIZE   /* stack size */
678    }
679  }
680};
681#endif
682
683#define CONFIGURE_ITRON_INIT_TASK_TABLE_NAME ITRON_Initialization_tasks
684
685#define CONFIGURE_ITRON_INIT_TASK_TABLE_SIZE \
686  sizeof(CONFIGURE_ITRON_INIT_TASK_TABLE_NAME) / \
687      sizeof(itron_initialization_tasks_table)
688
689#endif    /* CONFIGURE_ITRON_HAS_OWN_INIT_TASK_TABLE */
690
691#else     /* CONFIGURE_ITRON_INIT_TASK_TABLE */
692
693#define CONFIGURE_ITRON_INIT_TASK_TABLE_NAME NULL
694#define CONFIGURE_ITRON_INIT_TASK_TABLE_SIZE 0
695
696#endif
697
698#define CONFIGURE_MEMORY_PER_TASK_FOR_ITRON_API \
699  ( \
700    sizeof (ITRON_API_Control) \
701  )
702
703#define CONFIGURE_MEMORY_FOR_ITRON_SEMAPHORES(_semaphores) \
704  ((_semaphores) * \
705   ( sizeof(ITRON_Semaphore_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
706
707#define CONFIGURE_MEMORY_FOR_ITRON_EVENTFLAGS(_eventflags) \
708  ((_eventflags) * \
709   ( sizeof(ITRON_Eventflags_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
710
711#define CONFIGURE_MEMORY_FOR_ITRON_MAILBOXES(_mailboxes) \
712  ((_mailboxes) * \
713   ( sizeof(ITRON_Mailbox_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
714
715#define CONFIGURE_MEMORY_FOR_ITRON_MESSAGE_BUFFERS(_message_buffers) \
716  ((_message_buffers) * \
717   ( sizeof(ITRON_Message_buffer_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
718
719#define CONFIGURE_MEMORY_FOR_ITRON_PORTS(_ports) \
720  ((_ports) * \
721   ( sizeof(ITRON_Port_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
722
723#define CONFIGURE_MEMORY_FOR_ITRON_MEMORY_POOLS(_memory_pools) \
724  ((_memory_pools) * \
725   (sizeof(ITRON_Variable_memory_pool_Control) + CONFIGURE_OBJECT_TABLE_STUFF))
726
727#define CONFIGURE_MEMORY_FOR_ITRON_FIXED_MEMORY_POOLS(_fixed_memory_pools) \
728  ((_fixed_memory_pools) * \
729   ( sizeof(ITRON_Fixed_memory_pool_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
730
731#ifndef CONFIGURE_ITRON_INIT_TASK_STACK_SIZE
732#define CONFIGURE_ITRON_INIT_TASK_STACK_SIZE (RTEMS_MINIMUM_STACK_SIZE * 2)
733#endif
734
735
736#define CONFIGURE_MEMORY_FOR_ITRON \
737  ( \
738    CONFIGURE_MEMORY_FOR_ITRON_SEMAPHORES( \
739        CONFIGURE_MAXIMUM_ITRON_SEMAPHORES ) + \
740    CONFIGURE_MEMORY_FOR_ITRON_EVENTFLAGS( \
741        CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS ) + \
742    CONFIGURE_MEMORY_FOR_ITRON_MAILBOXES( \
743        CONFIGURE_MAXIMUM_ITRON_MAILBOXES ) + \
744    CONFIGURE_MEMORY_FOR_ITRON_MESSAGE_BUFFERS( \
745        CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS ) + \
746    CONFIGURE_MEMORY_FOR_ITRON_PORTS( \
747        CONFIGURE_MAXIMUM_ITRON_PORTS ) + \
748    CONFIGURE_MEMORY_FOR_ITRON_MEMORY_POOLS( \
749        CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS ) + \
750    CONFIGURE_MEMORY_FOR_ITRON_FIXED_MEMORY_POOLS( \
751        CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS ) + \
752    CONFIGURE_ITRON_INIT_TASK_STACK_SIZE \
753   )
754
755
756#else
757
758#define CONFIGURE_MAXIMUM_ITRON_TASKS               0
759#define CONFIGURE_MAXIMUM_ITRON_SEMAPHORES          0
760#define CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS          0
761#define CONFIGURE_MAXIMUM_ITRON_MAILBOXES           0
762#define CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS     0
763#define CONFIGURE_MAXIMUM_ITRON_PORTS               0
764#define CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS        0
765#define CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS  0
766#define CONFIGURE_MEMORY_PER_TASK_FOR_ITRON_API     0
767#define CONFIGURE_MEMORY_FOR_ITRON                  0
768
769#endif    /* RTEMS_ITRON_API */
770
771
772/*
773 *  Calculate the RAM size based on the maximum number of objects configured.
774 */
775
776#ifndef CONFIGURE_EXECUTIVE_RAM_SIZE
777
778#define CONFIGURE_OBJECT_TABLE_STUFF \
779  ( sizeof(Objects_Control *) + sizeof(rtems_name *) + sizeof(rtems_name) )
780
781#define CONFIGURE_MEMORY_FOR_TASKS(_tasks) \
782  (((_tasks) + 1 ) * \
783   ((sizeof(Thread_Control) + CONTEXT_FP_SIZE + \
784      STACK_MINIMUM_SIZE + sizeof( RTEMS_API_Control ) + \
785      CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API + \
786      CONFIGURE_MEMORY_PER_TASK_FOR_ITRON_API + \
787      CONFIGURE_OBJECT_TABLE_STUFF)) \
788  )
789
790#define CONFIGURE_MEMORY_FOR_TIMERS(_timers) \
791  ((_timers) * ( sizeof(Timer_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
792
793#define CONFIGURE_MEMORY_FOR_SEMAPHORES(_semaphores) \
794  ((_semaphores) * \
795   ( sizeof(Semaphore_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
796
797#define CONFIGURE_MEMORY_FOR_MESSAGE_QUEUES(_queues) \
798  ( (_queues) * \
799    ( sizeof(Message_queue_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
800
801#define CONFIGURE_MEMORY_FOR_PARTITIONS(_partitions) \
802  ( (_partitions) * \
803    ( sizeof(Partition_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
804
805#define CONFIGURE_MEMORY_FOR_REGIONS(_regions) \
806  ( (_regions) * \
807    ( sizeof(Region_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
808
809#define CONFIGURE_MEMORY_FOR_PORTS(_ports) \
810  ( (_ports) * \
811    ( sizeof(Dual_ported_memory_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
812
813#define CONFIGURE_MEMORY_FOR_PERIODS(_periods) \
814  ( (_periods) * \
815    ( sizeof(Rate_monotonic_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
816
817#define CONFIGURE_MEMORY_FOR_USER_EXTENSIONS(_extensions) \
818  ( (_extensions) * \
819    ( sizeof(Extension_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
820
821#define CONFIGURE_MEMORY_FOR_DEVICES(_devices) \
822  (((_devices) + 1) * ( sizeof(rtems_driver_name_t) ) )
823
824#ifdef CONFIGURE_MP_APPLICATION
825
826#ifndef CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE
827
828#define CONFIGURE_MEMORY_FOR_PROXIES(_proxies) \
829  ( ((_proxies) + 1) * ( sizeof(Thread_Proxy_control) )  )
830
831#define CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS(_global_objects) \
832  ((_global_objects)  * ( sizeof(Objects_MP_Control) )  )
833
834#define CONFIGURE_MEMORY_FOR_MP \
835  ( CONFIGURE_MEMORY_FOR_PROXIES(CONFIGURE_MP_MAXIMUM_PROXIES) + \
836    CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS(CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS) + \
837    CONFIGURE_MEMORY_FOR_TASKS(1) \
838  )
839
840#endif  /* CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE */
841
842#else
843
844#define CONFIGURE_MEMORY_FOR_MP  0
845
846#endif
847
848#ifndef CONFIGURE_MEMORY_OVERHEAD
849#define CONFIGURE_MEMORY_OVERHEAD 0
850#endif
851
852#ifndef CONFIGURE_EXTRA_TASK_STACKS
853#define CONFIGURE_EXTRA_TASK_STACKS 0
854#endif
855
856#define CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD \
857  ( CONFIGURE_MEMORY_FOR_TASKS(1) +    /* IDLE */ \
858    (256 * 12) +                       /* Ready chains */ \
859    256        +                       /* name/ptr table overhead */ \
860    CONFIGURE_INTERRUPT_STACK_MEMORY   /* interrupt stack */ \
861  )
862
863/*
864 *  Now account for any extra memory that initialization tasks or threads
865 *  may have requested.
866 */
867
868#ifdef RTEMS_POSIX_API
869#define CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART \
870    (CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE - RTEMS_MINIMUM_STACK_SIZE)
871#else
872#define CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART 0
873#endif
874#ifdef RTEMS_ITRON_API
875#define CONFIGURE_INITIALIZATION_THREADS_STACKS_ITRON_PART \
876    (CONFIGURE_ITRON_INIT_TASK_STACK_SIZE - RTEMS_MINIMUM_STACK_SIZE)
877#else
878#define CONFIGURE_INITIALIZATION_THREADS_STACKS_ITRON_PART 0
879#endif
880
881#define CONFIGURE_INITIALIZATION_THREADS_STACKS \
882   ((CONFIGURE_INIT_TASK_STACK_SIZE - RTEMS_MINIMUM_STACK_SIZE) + \
883    CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART + \
884    CONFIGURE_INITIALIZATION_THREADS_STACKS_ITRON_PART)
885
886#define CONFIGURE_EXECUTIVE_RAM_SIZE \
887(( CONFIGURE_MEMORY_FOR_POSIX + \
888   CONFIGURE_MEMORY_FOR_ITRON + \
889   CONFIGURE_MEMORY_FOR_TASKS(CONFIGURE_MAXIMUM_TASKS + \
890      CONFIGURE_MAXIMUM_POSIX_THREADS + CONFIGURE_MAXIMUM_ADA_TASKS + \
891      CONFIGURE_MAXIMUM_ITRON_TASKS ) + \
892   CONFIGURE_INITIALIZATION_THREADS_STACKS + \
893   CONFIGURE_MEMORY_FOR_TIMERS(CONFIGURE_MAXIMUM_TIMERS) + \
894   CONFIGURE_MEMORY_FOR_SEMAPHORES(CONFIGURE_MAXIMUM_SEMAPHORES + \
895     CONFIGURE_LIBIO_SEMAPHORES + CONFIGURE_TERMIOS_SEMAPHORES) + \
896   CONFIGURE_MEMORY_FOR_MESSAGE_QUEUES(CONFIGURE_MAXIMUM_MESSAGE_QUEUES) + \
897   CONFIGURE_MEMORY_FOR_PARTITIONS(CONFIGURE_MAXIMUM_PARTITIONS) + \
898   CONFIGURE_MEMORY_FOR_REGIONS( \
899      CONFIGURE_MAXIMUM_REGIONS + CONFIGURE_MALLOC_REGION ) + \
900   CONFIGURE_MEMORY_FOR_PORTS(CONFIGURE_MAXIMUM_PORTS) + \
901   CONFIGURE_MEMORY_FOR_PERIODS(CONFIGURE_MAXIMUM_PERIODS) + \
902   CONFIGURE_MEMORY_FOR_USER_EXTENSIONS( \
903      CONFIGURE_MAXIMUM_USER_EXTENSIONS + CONFIGURE_NEWLIB_EXTENSION + \
904      CONFIGURE_STACK_CHECKER_EXTENSION ) + \
905   CONFIGURE_MEMORY_FOR_DEVICES(CONFIGURE_MAXIMUM_DEVICES) + \
906   CONFIGURE_MEMORY_FOR_MP + \
907   CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD + \
908   (((CONFIGURE_MEMORY_OVERHEAD)+1) * 1024) + \
909   (CONFIGURE_EXTRA_TASK_STACKS) + (CONFIGURE_ADA_TASKS_STACK) \
910) & 0xfffffc00)
911#endif
912
913#ifdef CONFIGURE_GNAT_RTEMS
914#define CONFIGURE_GNAT_MUTEXES 10
915#define CONFIGURE_GNAT_KEYS    1
916
917/* 20 are required to run all tests in the ACVC */
918#ifndef CONFIGURE_MAXIMUM_ADA_TASKS
919#define CONFIGURE_MAXIMUM_ADA_TASKS  20
920#endif
921
922/* This is the number of non-Ada tasks which invoked Ada code. */
923#ifndef CONFIGURE_MAXIMUM_FAKE_ADA_TASKS
924#define CONFIGURE_MAXIMUM_FAKE_ADA_TASKS 0
925#endif
926
927/* Ada tasks are allocated twice the minimum stack space */
928#define CONFIGURE_ADA_TASKS_STACK \
929  (CONFIGURE_MAXIMUM_ADA_TASKS * (RTEMS_MINIMUM_STACK_SIZE + (6 * 1024)))
930
931#else
932#define CONFIGURE_GNAT_MUTEXES           0
933#define CONFIGURE_GNAT_KEYS              0
934#define CONFIGURE_MAXIMUM_ADA_TASKS      0
935#define CONFIGURE_MAXIMUM_FAKE_ADA_TASKS 0
936#define CONFIGURE_ADA_TASKS_STACK        0
937#endif
938
939
940#ifdef CONFIGURE_INIT
941
942rtems_api_configuration_table Configuration_RTEMS_API = {
943  CONFIGURE_MAXIMUM_TASKS,
944  CONFIGURE_MAXIMUM_TIMERS,
945  CONFIGURE_MAXIMUM_SEMAPHORES + CONFIGURE_LIBIO_SEMAPHORES +
946    CONFIGURE_TERMIOS_SEMAPHORES,
947  CONFIGURE_MAXIMUM_MESSAGE_QUEUES,
948  CONFIGURE_MAXIMUM_PARTITIONS,
949  CONFIGURE_MAXIMUM_REGIONS + CONFIGURE_MALLOC_REGION,
950  CONFIGURE_MAXIMUM_PORTS,
951  CONFIGURE_MAXIMUM_PERIODS,
952  CONFIGURE_INIT_TASK_TABLE_SIZE,
953  CONFIGURE_INIT_TASK_TABLE
954};
955
956#ifdef RTEMS_POSIX_API
957posix_api_configuration_table Configuration_POSIX_API = {
958  CONFIGURE_MAXIMUM_POSIX_THREADS + CONFIGURE_MAXIMUM_ADA_TASKS,
959  CONFIGURE_MAXIMUM_POSIX_MUTEXES + CONFIGURE_GNAT_MUTEXES +
960    CONFIGURE_MAXIMUM_ADA_TASKS + CONFIGURE_MAXIMUM_FAKE_ADA_TASKS,
961  CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES +
962    CONFIGURE_MAXIMUM_ADA_TASKS + CONFIGURE_MAXIMUM_FAKE_ADA_TASKS,
963  CONFIGURE_MAXIMUM_POSIX_KEYS + CONFIGURE_GNAT_KEYS,
964  CONFIGURE_MAXIMUM_POSIX_TIMERS,
965  CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS,
966  CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES,
967  CONFIGURE_MAXIMUM_POSIX_SEMAPHORES,
968  CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE,
969  CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME
970};
971#endif
972
973#ifdef RTEMS_ITRON_API
974itron_api_configuration_table Configuration_ITRON_API = {
975  CONFIGURE_MAXIMUM_ITRON_TASKS,
976  CONFIGURE_MAXIMUM_ITRON_SEMAPHORES,
977  CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS,
978  CONFIGURE_MAXIMUM_ITRON_MAILBOXES,
979  CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS,
980  CONFIGURE_MAXIMUM_ITRON_PORTS,
981  CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS,
982  CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS,
983  CONFIGURE_ITRON_INIT_TASK_TABLE_SIZE,
984  CONFIGURE_ITRON_INIT_TASK_TABLE_NAME
985};
986#endif
987
988rtems_configuration_table Configuration = {
989  CONFIGURE_EXECUTIVE_RAM_WORK_AREA,
990  CONFIGURE_EXECUTIVE_RAM_SIZE,
991  CONFIGURE_MAXIMUM_USER_EXTENSIONS + CONFIGURE_NEWLIB_EXTENSION + 
992      CONFIGURE_STACK_CHECKER_EXTENSION,
993  CONFIGURE_MICROSECONDS_PER_TICK,
994  CONFIGURE_TICKS_PER_TIMESLICE,
995  CONFIGURE_MAXIMUM_DEVICES,
996  sizeof (Device_drivers)/
997    sizeof(rtems_driver_address_table),      /* number of device drivers */
998  Device_drivers,                            /* pointer to driver table */
999  CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS,    /* number of initial extensions */
1000  Configuration_Initial_Extensions,          /* pointer to initial extensions */
1001  CONFIGURE_MULTIPROCESSING_TABLE,           /* pointer to MP config table */
1002  &Configuration_RTEMS_API,                  /* pointer to RTEMS API config */
1003#ifdef RTEMS_POSIX_API
1004  &Configuration_POSIX_API,                  /* pointer to POSIX API config */
1005#else
1006  NULL,                                      /* pointer to POSIX API config */
1007#endif
1008#ifdef RTEMS_ITRON_API
1009  &Configuration_ITRON_API                   /* pointer to ITRON API config */
1010#else
1011  NULL                                       /* pointer to ITRON API config */
1012#endif
1013};
1014#endif
1015
1016#endif /* CONFIGURE_HAS_OWN_CONFIGURATION_TABLE */
1017
1018#ifdef __cplusplus
1019}
1020#endif
1021 
1022/*
1023 *  Some warnings and error checking
1024 */
1025
1026/*
1027 *  Make sure a task/thread of some sort is configured
1028 */
1029
1030#if (CONFIGURE_MAXIMUM_TASKS == 0) && \
1031    (CONFIGURE_MAXIMUM_POSIX_THREADS == 0) && \
1032    (CONFIGURE_MAXIMUM_ADA_TASKS == 0) &&  \
1033    (CONFIGURE_MAXIMUM_ITRON_TASKS == 0)
1034#error "CONFIGURATION ERROR: No tasks or threads configured!!"
1035#endif
1036
1037/*
1038 *  Make sure at least one of the initialization task/thread
1039 *  tables was defined.
1040 */
1041
1042#if !defined(CONFIGURE_RTEMS_INIT_TASKS_TABLE) && \
1043    !defined(CONFIGURE_POSIX_INIT_THREAD_TABLE) && \
1044    !defined(CONFIGURE_ITRON_INIT_TASK_TABLE)
1045#error "CONFIGURATION ERROR: No initialization tasks or threads configured!!"
1046#endif
1047
1048#endif
1049/* end of include file */
Note: See TracBrowser for help on using the repository browser.