source: rtems/cpukit/sapi/include/confdefs.h @ 059a3714

4.104.114.84.95
Last change on this file since 059a3714 was 059a3714, checked in by Joel Sherrill <joel.sherrill@…>, on Oct 16, 2001 at 7:05:29 PM

2001-10-16 Chris Johns <ccj@…>

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