source: rtems/cpukit/sapi/include/confdefs.h @ 623893c

4.104.114.84.95
Last change on this file since 623893c was 623893c, checked in by Joel Sherrill <joel.sherrill@…>, on Jan 29, 2001 at 3:43:46 PM

2001-01-27 Ralf Corsepius <corsepiu@…>

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