source: rtems/cpukit/sapi/include/confdefs.h @ 9c63d90

4.104.114.84.95
Last change on this file since 9c63d90 was 9c63d90, checked in by Joel Sherrill <joel.sherrill@…>, on Jan 26, 2001 at 9:54:57 PM

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

  • include/confdefs.h: include cpuopts.h, replace stubdr w/ devnull.
  • 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 *  NOTE:  This ends up defining these even when newlib is not used.
62 */
63
64#ifdef RTEMS_NEWLIB
65#define CONFIGURE_NEWLIB_EXTENSION 1
66#endif
67#define CONFIGURE_MALLOC_REGION 1
68
69/*
70 *  File descriptors managed by libio
71 */
72
73#ifndef CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS
74#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 3
75#endif
76
77#define CONFIGURE_LIBIO_SEMAPHORES \
78  (CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS + 1)
79
80#ifdef CONFIGURE_INIT
81unsigned32 rtems_libio_number_iops = CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS;
82#endif
83
84/*
85 *  Termios resources
86 */
87
88#ifdef CONFIGURE_TERMIOS_DISABLED
89#define CONFIGURE_TERMIOS_SEMAPHORES 0
90#else
91
92#ifndef CONFIGURE_NUMBER_OF_TERMIOS_PORTS
93#define CONFIGURE_NUMBER_OF_TERMIOS_PORTS 1
94#endif
95
96#define CONFIGURE_TERMIOS_SEMAPHORES \
97  ((CONFIGURE_NUMBER_OF_TERMIOS_PORTS * 4) + 1)
98#endif
99
100/*
101 *  Mount Table Configuration
102 */
103
104#include <imfs.h>
105
106#ifdef CONFIGURE_INIT
107
108#ifndef CONFIGURE_HAS_OWN_MOUNT_TABLE
109rtems_filesystem_mount_table_t configuration_mount_table = {
110#ifdef CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
111  &IMFS_ops,
112#else  /* using miniIMFS as base filesystem */
113  &miniIMFS_ops,
114#endif
115  RTEMS_FILESYSTEM_READ_WRITE,
116  NULL,
117  NULL
118};
119
120rtems_filesystem_mount_table_t
121    *rtems_filesystem_mount_table = &configuration_mount_table;
122int rtems_filesystem_mount_table_size = 1;
123#endif
124
125#endif
126
127
128/*
129 *  Stack Checker Requirements
130 *
131 *  NOTE: This does not automatically enable reporting at program exit.
132 */
133
134#ifdef STACK_CHECKER_ON
135#define CONFIGURE_STACK_CHECKER_EXTENSION 1
136#else
137#define CONFIGURE_STACK_CHECKER_EXTENSION 0
138#endif
139
140/*
141 *  Interrupt Stack Space
142 *
143 *  NOTE: There is currently no way for the application to override
144 *        the interrupt stack size set by the BSP.
145 */
146
147#if (CPU_ALLOCATE_INTERRUPT_STACK == 0)
148#undef CONFIGURE_INTERRUPT_STACK_MEMORY
149#define CONFIGURE_INTERRUPT_STACK_MEMORY 0
150#else
151  #ifndef CONFIGURE_INTERRUPT_STACK_MEMORY
152  #define CONFIGURE_INTERRUPT_STACK_MEMORY RTEMS_MINIMUM_STACK_SIZE
153  #endif
154#endif
155
156/*
157 *  Default User Initialization Task Table.  This table guarantees that
158 *  one user initialization table is defined.
159 */
160
161#ifdef CONFIGURE_RTEMS_INIT_TASKS_TABLE
162
163#ifdef CONFIGURE_HAS_OWN_INIT_TASK_TABLE
164
165/*
166 *  The user is defining their own table information and setting the
167 *  appropriate variables.
168 */
169
170#else
171
172#ifndef CONFIGURE_INIT_TASK_NAME
173#define CONFIGURE_INIT_TASK_NAME          rtems_build_name( 'U', 'I', '1', ' ' )
174#endif
175
176#ifndef CONFIGURE_INIT_TASK_STACK_SIZE
177#define CONFIGURE_INIT_TASK_STACK_SIZE    RTEMS_MINIMUM_STACK_SIZE
178#endif
179
180#ifndef CONFIGURE_INIT_TASK_PRIORITY
181#define CONFIGURE_INIT_TASK_PRIORITY      1
182#endif
183
184#ifndef CONFIGURE_INIT_TASK_ATTRIBUTES
185#define CONFIGURE_INIT_TASK_ATTRIBUTES    RTEMS_DEFAULT_ATTRIBUTES
186#endif
187
188#ifndef CONFIGURE_INIT_TASK_ENTRY_POINT
189#define CONFIGURE_INIT_TASK_ENTRY_POINT   Init
190#endif
191
192#ifndef CONFIGURE_INIT_TASK_INITIAL_MODES
193#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_NO_PREEMPT
194#endif
195
196#ifndef CONFIGURE_INIT_TASK_ARGUMENTS
197#define CONFIGURE_INIT_TASK_ARGUMENTS     0
198#endif
199
200#ifdef CONFIGURE_INIT
201rtems_initialization_tasks_table Initialization_tasks[] = {
202  { CONFIGURE_INIT_TASK_NAME,
203    CONFIGURE_INIT_TASK_STACK_SIZE,
204    CONFIGURE_INIT_TASK_PRIORITY,
205    CONFIGURE_INIT_TASK_ATTRIBUTES,
206    CONFIGURE_INIT_TASK_ENTRY_POINT,
207    CONFIGURE_INIT_TASK_INITIAL_MODES,
208    CONFIGURE_INIT_TASK_ARGUMENTS
209  }
210};
211#endif
212
213#define CONFIGURE_INIT_TASK_TABLE Initialization_tasks
214
215#define CONFIGURE_INIT_TASK_TABLE_SIZE \
216  sizeof(CONFIGURE_INIT_TASK_TABLE) / sizeof(rtems_initialization_tasks_table)
217
218#endif    /* CONFIGURE_HAS_OWN_INIT_TASK_TABLE */
219
220#else     /* CONFIGURE_RTEMS_INIT_TASKS_TABLE */
221
222#define CONFIGURE_INIT_TASK_TABLE      NULL
223#define CONFIGURE_INIT_TASK_TABLE_SIZE 0
224#define CONFIGURE_INIT_TASK_STACK_SIZE 0
225
226#endif
227
228/*
229 *  Map obsolete names to current ones
230 *
231 *  NOTE: These should be obsoleted in a future release.
232 */
233
234#ifdef CONFIGURE_TEST_NEEDS_TIMER_DRIVER
235#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
236#endif
237#ifdef CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER
238#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
239#endif
240#ifdef CONFIGURE_TEST_NEEDS_CLOCK_DRIVER
241#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
242#endif
243#ifdef CONFIGURE_TEST_NEEDS_RTC_DRIVER
244#define CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
245#endif
246#ifdef CONFIGURE_TEST_NEEDS_STUB_DRIVER
247#define CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
248#endif
249
250
251/*
252 *  Default Device Driver Table.  Each driver needed by the test is explicitly
253 *  choosen by that test.  There is always a null driver entry.
254 */
255
256#define NULL_DRIVER_TABLE_ENTRY \
257 { NULL, NULL, NULL, NULL, NULL, NULL }
258
259#ifdef CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
260#include <console.h>
261#endif
262
263#ifdef CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
264#include <clockdrv.h>
265#endif
266
267#ifdef CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
268#include <timerdrv.h>
269#endif
270
271#ifdef CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
272#include <rtems/devnull.h>
273#endif
274
275#ifndef CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE
276
277#ifdef CONFIGURE_INIT
278rtems_driver_address_table Device_drivers[] = {
279#ifdef CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
280  CONSOLE_DRIVER_TABLE_ENTRY,
281#endif
282#ifdef CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
283  CLOCK_DRIVER_TABLE_ENTRY,
284#endif
285#ifdef CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
286  DEVNULL_DRIVER_TABLE_ENTRY,
287#endif
288  NULL_DRIVER_TABLE_ENTRY
289};
290#endif
291
292#endif  /* CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE */
293
294/*
295 *  Default the number of devices per device driver.  This value may be
296 *  overridden by the user.
297 */
298
299#ifndef CONFIGURE_MAXIMUM_DEVICES
300#define CONFIGURE_MAXIMUM_DEVICES   20
301#endif
302
303/*
304 *  Default Multiprocessing Configuration Table.  The defaults are
305 *  appropriate for most of the RTEMS Multiprocessor Test Suite.  Each
306 *  value may be overridden within each test to customize the environment.
307 */
308
309#ifdef CONFIGURE_MP_APPLICATION
310#ifndef CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE
311
312#ifndef CONFIGURE_MP_NODE_NUMBER
313#define CONFIGURE_MP_NODE_NUMBER                NODE_NUMBER
314#endif
315
316#ifndef CONFIGURE_MP_MAXIMUM_NODES
317#define CONFIGURE_MP_MAXIMUM_NODES              2
318#endif
319
320#ifndef CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
321#define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS     32
322#endif
323
324#ifndef CONFIGURE_MP_MAXIMUM_PROXIES
325#define CONFIGURE_MP_MAXIMUM_PROXIES            32
326#endif
327
328#ifndef CONFIGURE_MP_MPCI_TABLE_POINTER
329#include <mpci.h>
330#define CONFIGURE_MP_MPCI_TABLE_POINTER         &MPCI_table
331#endif
332
333#ifdef CONFIGURE_INIT
334rtems_multiprocessing_table Multiprocessing_configuration = {
335  CONFIGURE_MP_NODE_NUMBER,              /* local node number */
336  CONFIGURE_MP_MAXIMUM_NODES,            /* maximum # nodes in system */
337  CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS,   /* maximum # global objects */
338  CONFIGURE_MP_MAXIMUM_PROXIES,          /* maximum # proxies */
339  CONFIGURE_MP_MPCI_TABLE_POINTER        /* pointer to MPCI config table */
340};
341#endif
342
343#define CONFIGURE_MULTIPROCESSING_TABLE    &Multiprocessing_configuration
344
345#endif /* CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE */
346
347#else
348
349#define CONFIGURE_MULTIPROCESSING_TABLE    NULL
350
351#endif /* CONFIGURE_MP_APPLICATION */
352 
353/*
354 *  Default Configuration Table. 
355 */
356
357#ifndef CONFIGURE_HAS_OWN_CONFIGURATION_TABLE
358 
359#ifndef CONFIGURE_EXECUTIVE_RAM_WORK_AREA
360#define CONFIGURE_EXECUTIVE_RAM_WORK_AREA     NULL
361#endif
362
363#ifndef CONFIGURE_MAXIMUM_TASKS
364#define CONFIGURE_MAXIMUM_TASKS               0
365#endif
366
367#ifndef CONFIGURE_MAXIMUM_TIMERS
368#define CONFIGURE_MAXIMUM_TIMERS              0
369#endif
370
371#ifndef CONFIGURE_MAXIMUM_SEMAPHORES
372#define CONFIGURE_MAXIMUM_SEMAPHORES          0
373#endif
374
375#ifndef CONFIGURE_MAXIMUM_MESSAGE_QUEUES
376#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES      0
377#endif
378
379#ifndef CONFIGURE_MAXIMUM_PARTITIONS
380#define CONFIGURE_MAXIMUM_PARTITIONS          0
381#endif
382
383#ifndef CONFIGURE_MAXIMUM_REGIONS
384#define CONFIGURE_MAXIMUM_REGIONS             0
385#endif
386
387#ifndef CONFIGURE_MAXIMUM_PORTS
388#define CONFIGURE_MAXIMUM_PORTS               0
389#endif
390
391#ifndef CONFIGURE_MAXIMUM_PERIODS
392#define CONFIGURE_MAXIMUM_PERIODS             0
393#endif
394
395#ifndef CONFIGURE_MAXIMUM_USER_EXTENSIONS
396#define CONFIGURE_MAXIMUM_USER_EXTENSIONS     0
397#endif
398
399#ifndef CONFIGURE_MICROSECONDS_PER_TICK
400#define CONFIGURE_MICROSECONDS_PER_TICK RTEMS_MILLISECONDS_TO_MICROSECONDS(10)
401#endif
402
403#ifndef CONFIGURE_TICKS_PER_TIMESLICE
404#define CONFIGURE_TICKS_PER_TIMESLICE        50
405#endif
406
407/*
408 *  Initial Extension Set
409 */
410
411#ifdef CONFIGURE_INIT
412#ifdef STACK_CHECKER_ON
413#include <rtems/stackchk.h>
414#endif
415
416rtems_extensions_table Configuration_Initial_Extensions[] = {
417#ifdef CONFIGURE_INITIAL_EXTENSIONS
418    CONFIGURE_INITIAL_EXTENSIONS,
419#endif
420#ifdef STACK_CHECKER_ON
421    STACK_CHECKER_EXTENSION,
422#endif
423    { NULL, NULL, NULL, NULL, NULL, NULL, NULL }
424};
425
426#define CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS \
427  ((sizeof(Configuration_Initial_Extensions) / \
428    sizeof(rtems_extensions_table)) - 1)
429
430#endif
431
432/*
433 *  POSIX API Configuration Parameters
434 */
435
436#ifdef RTEMS_POSIX_API
437
438#include <sys/types.h>
439#include <signal.h>
440#include <mqueue.h>
441#include <rtems/posix/cond.h>
442#include <rtems/posix/mqueue.h>
443#include <rtems/posix/mutex.h>
444#include <rtems/posix/key.h>
445#include <rtems/posix/psignal.h>
446#include <rtems/posix/semaphore.h>
447#include <rtems/posix/threadsup.h>
448
449#ifndef CONFIGURE_MAXIMUM_POSIX_THREADS
450#define CONFIGURE_MAXIMUM_POSIX_THREADS      0
451#endif
452
453#ifndef CONFIGURE_MAXIMUM_POSIX_MUTEXES
454#define CONFIGURE_MAXIMUM_POSIX_MUTEXES      0
455#endif
456
457#ifndef CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES
458#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES  0
459#endif
460
461#ifndef CONFIGURE_MAXIMUM_POSIX_KEYS
462#define CONFIGURE_MAXIMUM_POSIX_KEYS         0
463#endif
464
465#ifndef CONFIGURE_MAXIMUM_POSIX_TIMERS
466#define CONFIGURE_MAXIMUM_POSIX_TIMERS 0
467#endif
468
469#ifndef CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS
470#define CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS 0
471#endif
472
473#ifndef CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES
474#define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES 0
475#endif
476
477#ifndef CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
478#define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES 0
479#endif
480
481#ifdef CONFIGURE_POSIX_INIT_THREAD_TABLE
482
483#ifdef CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE
484
485/*
486 *  The user is defining their own table information and setting the
487 *  appropriate variables for the POSIX Initialization Thread Table.
488 */
489 
490#else
491
492#ifndef CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT
493#define CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT   POSIX_Init
494#endif
495
496#ifndef CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
497#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE    (RTEMS_MINIMUM_STACK_SIZE * 2)
498#endif
499
500#ifdef CONFIGURE_INIT
501posix_initialization_threads_table POSIX_Initialization_threads[] = {
502  { CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT, \
503      CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE }
504};
505#endif
506
507#define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME POSIX_Initialization_threads
508 
509#define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE \
510  sizeof(CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME) / \
511      sizeof(posix_initialization_threads_table)
512
513#endif    /* CONFIGURE_POSIX_HAS_OWN_INIT_TASK_TABLE */
514
515#else     /* CONFIGURE_POSIX_INIT_THREAD_TABLE */
516
517#define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME NULL
518#define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE 0
519
520#endif
521
522#define CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API \
523  ( \
524    sizeof (POSIX_API_Control) + \
525   (sizeof (void *) * (CONFIGURE_GNAT_KEYS + CONFIGURE_MAXIMUM_POSIX_KEYS)) \
526  )
527
528#define CONFIGURE_MEMORY_FOR_POSIX_MUTEXES(_mutexes) \
529  ((_mutexes) * \
530   ( sizeof(POSIX_Mutex_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
531
532#define CONFIGURE_MEMORY_FOR_POSIX_CONDITION_VARIABLES(_condition_variables) \
533  ((_condition_variables) * \
534   ( sizeof(POSIX_Condition_variables_Control) + \
535        CONFIGURE_OBJECT_TABLE_STUFF ) )
536
537#define CONFIGURE_MEMORY_FOR_POSIX_KEYS(_keys) \
538  ((_keys) * \
539   ( sizeof(POSIX_Keys_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
540
541#define CONFIGURE_MEMORY_FOR_POSIX_TIMERS(_timers) \
542  ((_timers) * \
543   ( 0 ) )
544
545#define CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS(_queued_signals) \
546  ((_queued_signals) * \
547   ( sizeof(POSIX_signals_Siginfo_node) + CONFIGURE_OBJECT_TABLE_STUFF ) )
548
549#define CONFIGURE_MEMORY_FOR_POSIX_MESSAGE_QUEUES(_message_queues) \
550  ((_message_queues) * \
551   ( sizeof( POSIX_Message_queue_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
552#define CONFIGURE_MEMORY_FOR_POSIX_SEMAPHORES(_semaphores) \
553  ((_semaphores) * \
554   ( sizeof( POSIX_Semaphore_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
555 
556
557#define CONFIGURE_MEMORY_FOR_POSIX \
558  ( \
559    CONFIGURE_MEMORY_FOR_POSIX_MUTEXES( CONFIGURE_MAXIMUM_POSIX_MUTEXES ) + \
560    CONFIGURE_MEMORY_FOR_POSIX_CONDITION_VARIABLES( \
561        CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES ) + \
562    CONFIGURE_MEMORY_FOR_POSIX_KEYS( CONFIGURE_MAXIMUM_POSIX_KEYS ) + \
563    CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS( \
564        CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS ) + \
565    CONFIGURE_MEMORY_FOR_POSIX_MESSAGE_QUEUES( \
566        CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES ) + \
567    CONFIGURE_MEMORY_FOR_POSIX_SEMAPHORES( \
568        CONFIGURE_MAXIMUM_POSIX_SEMAPHORES ) + \
569    (CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE) \
570   )
571
572
573#else
574
575#define CONFIGURE_MAXIMUM_POSIX_THREADS         0
576#define CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API 0
577#define CONFIGURE_MEMORY_FOR_POSIX              0
578
579
580#endif    /* RTEMS_POSIX_API */
581
582#ifndef CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
583#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE    0
584#endif
585
586/*
587 *  ITRON API Configuration Parameters
588 */
589
590#ifdef RTEMS_ITRON_API
591
592#include <itron.h>
593#include <rtems/itron/config.h>
594#include <rtems/itron/eventflags.h>
595#include <rtems/itron/fmempool.h>
596#include <rtems/itron/mbox.h>
597#include <rtems/itron/msgbuffer.h>
598#include <rtems/itron/port.h>
599#include <rtems/itron/semaphore.h>
600#include <rtems/itron/task.h>
601#include <rtems/itron/vmempool.h>
602
603#ifndef CONFIGURE_MAXIMUM_ITRON_TASKS
604#define CONFIGURE_MAXIMUM_ITRON_TASKS      0
605#endif
606
607#ifndef CONFIGURE_MAXIMUM_ITRON_SEMAPHORES
608#define CONFIGURE_MAXIMUM_ITRON_SEMAPHORES   0
609#endif
610
611#ifndef CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS
612#define CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS   0
613#endif
614
615#ifndef CONFIGURE_MAXIMUM_ITRON_MAILBOXES
616#define CONFIGURE_MAXIMUM_ITRON_MAILBOXES   0
617#endif
618
619#ifndef CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS
620#define CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS   0
621#endif
622
623#ifndef CONFIGURE_MAXIMUM_ITRON_PORTS
624#define CONFIGURE_MAXIMUM_ITRON_PORTS   0
625#endif
626
627#ifndef CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS
628#define CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS   0
629#endif
630
631#ifndef CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS
632#define CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS   0
633#endif
634
635#ifdef CONFIGURE_ITRON_INIT_TASK_TABLE
636
637#ifdef CONFIGURE_ITRON_HAS_OWN_INIT_TASK_TABLE
638
639/*
640 *  The user is defining their own table information and setting the
641 *  appropriate variables for the ITRON Initialization Task Table.
642 */
643
644#else
645
646#ifndef CONFIGURE_ITRON_INIT_TASK_ENTRY_POINT
647#define CONFIGURE_ITRON_INIT_TASK_ENTRY_POINT   ITRON_Init
648#endif
649
650#ifndef CONFIGURE_ITRON_INIT_TASK_ATTRIBUTES
651#define CONFIGURE_ITRON_INIT_TASK_ATTRIBUTES    TA_HLNG
652#endif
653
654#ifndef CONFIGURE_ITRON_INIT_TASK_PRIORITY
655#define CONFIGURE_ITRON_INIT_TASK_PRIORITY      1
656#endif
657
658#ifndef CONFIGURE_ITRON_INIT_TASK_STACK_SIZE
659#define CONFIGURE_ITRON_INIT_TASK_STACK_SIZE    RTEMS_MINIMUM_STACK_SIZE
660#endif
661
662#ifdef CONFIGURE_INIT
663itron_initialization_tasks_table ITRON_Initialization_tasks[] = {
664  { 1,                                    /* ID */
665    { (VP) 0,                                /* exinfo */
666      CONFIGURE_ITRON_INIT_TASK_ATTRIBUTES,  /* task attributes */
667      CONFIGURE_ITRON_INIT_TASK_ENTRY_POINT, /* task start address */
668      CONFIGURE_ITRON_INIT_TASK_PRIORITY,    /* initial task priority */
669      CONFIGURE_ITRON_INIT_TASK_STACK_SIZE   /* stack size */
670    }
671  }
672};
673#endif
674
675#define CONFIGURE_ITRON_INIT_TASK_TABLE_NAME ITRON_Initialization_tasks
676
677#define CONFIGURE_ITRON_INIT_TASK_TABLE_SIZE \
678  sizeof(CONFIGURE_ITRON_INIT_TASK_TABLE_NAME) / \
679      sizeof(itron_initialization_tasks_table)
680
681#endif    /* CONFIGURE_ITRON_HAS_OWN_INIT_TASK_TABLE */
682
683#else     /* CONFIGURE_ITRON_INIT_TASK_TABLE */
684
685#define CONFIGURE_ITRON_INIT_TASK_TABLE_NAME NULL
686#define CONFIGURE_ITRON_INIT_TASK_TABLE_SIZE 0
687
688#endif
689
690#define CONFIGURE_MEMORY_PER_TASK_FOR_ITRON_API \
691  ( \
692    sizeof (ITRON_API_Control) \
693  )
694
695#define CONFIGURE_MEMORY_FOR_ITRON_SEMAPHORES(_semaphores) \
696  ((_semaphores) * \
697   ( sizeof(ITRON_Semaphore_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
698
699#define CONFIGURE_MEMORY_FOR_ITRON_EVENTFLAGS(_eventflags) \
700  ((_eventflags) * \
701   ( sizeof(ITRON_Eventflags_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
702
703#define CONFIGURE_MEMORY_FOR_ITRON_MAILBOXES(_mailboxes) \
704  ((_mailboxes) * \
705   ( sizeof(ITRON_Mailbox_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
706
707#define CONFIGURE_MEMORY_FOR_ITRON_MESSAGE_BUFFERS(_message_buffers) \
708  ((_message_buffers) * \
709   ( sizeof(ITRON_Message_buffer_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
710
711#define CONFIGURE_MEMORY_FOR_ITRON_PORTS(_ports) \
712  ((_ports) * \
713   ( sizeof(ITRON_Port_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
714
715#define CONFIGURE_MEMORY_FOR_ITRON_MEMORY_POOLS(_memory_pools) \
716  ((_memory_pools) * \
717   (sizeof(ITRON_Variable_memory_pool_Control) + CONFIGURE_OBJECT_TABLE_STUFF))
718
719#define CONFIGURE_MEMORY_FOR_ITRON_FIXED_MEMORY_POOLS(_fixed_memory_pools) \
720  ((_fixed_memory_pools) * \
721   ( sizeof(ITRON_Fixed_memory_pool_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
722
723#ifndef CONFIGURE_ITRON_INIT_TASK_STACK_SIZE
724#define CONFIGURE_ITRON_INIT_TASK_STACK_SIZE (RTEMS_MINIMUM_STACK_SIZE * 2)
725#endif
726
727
728#define CONFIGURE_MEMORY_FOR_ITRON \
729  ( \
730    CONFIGURE_MEMORY_FOR_ITRON_SEMAPHORES( \
731        CONFIGURE_MAXIMUM_ITRON_SEMAPHORES ) + \
732    CONFIGURE_MEMORY_FOR_ITRON_EVENTFLAGS( \
733        CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS ) + \
734    CONFIGURE_MEMORY_FOR_ITRON_MAILBOXES( \
735        CONFIGURE_MAXIMUM_ITRON_MAILBOXES ) + \
736    CONFIGURE_MEMORY_FOR_ITRON_MESSAGE_BUFFERS( \
737        CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS ) + \
738    CONFIGURE_MEMORY_FOR_ITRON_PORTS( \
739        CONFIGURE_MAXIMUM_ITRON_PORTS ) + \
740    CONFIGURE_MEMORY_FOR_ITRON_MEMORY_POOLS( \
741        CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS ) + \
742    CONFIGURE_MEMORY_FOR_ITRON_FIXED_MEMORY_POOLS( \
743        CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS ) + \
744    CONFIGURE_ITRON_INIT_TASK_STACK_SIZE \
745   )
746
747
748#else
749
750#define CONFIGURE_MAXIMUM_ITRON_TASKS               0
751#define CONFIGURE_MAXIMUM_ITRON_SEMAPHORES          0
752#define CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS          0
753#define CONFIGURE_MAXIMUM_ITRON_MAILBOXES           0
754#define CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS     0
755#define CONFIGURE_MAXIMUM_ITRON_PORTS               0
756#define CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS        0
757#define CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS  0
758#define CONFIGURE_MEMORY_PER_TASK_FOR_ITRON_API     0
759#define CONFIGURE_MEMORY_FOR_ITRON                  0
760
761#endif    /* RTEMS_ITRON_API */
762
763
764/*
765 *  Calculate the RAM size based on the maximum number of objects configured.
766 */
767
768#ifndef CONFIGURE_EXECUTIVE_RAM_SIZE
769
770#define CONFIGURE_OBJECT_TABLE_STUFF \
771  ( sizeof(Objects_Control *) + sizeof(rtems_name *) + sizeof(rtems_name) )
772
773#define CONFIGURE_MEMORY_FOR_TASKS(_tasks) \
774  (((_tasks) + 1 ) * \
775   ((sizeof(Thread_Control) + CONTEXT_FP_SIZE + \
776      STACK_MINIMUM_SIZE + sizeof( RTEMS_API_Control ) + \
777      CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API + \
778      CONFIGURE_MEMORY_PER_TASK_FOR_ITRON_API + \
779      CONFIGURE_OBJECT_TABLE_STUFF)) \
780  )
781
782#define CONFIGURE_MEMORY_FOR_TIMERS(_timers) \
783  ((_timers) * ( sizeof(Timer_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
784
785#define CONFIGURE_MEMORY_FOR_SEMAPHORES(_semaphores) \
786  ((_semaphores) * \
787   ( sizeof(Semaphore_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
788
789#define CONFIGURE_MEMORY_FOR_MESSAGE_QUEUES(_queues) \
790  ( (_queues) * \
791    ( sizeof(Message_queue_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
792
793#define CONFIGURE_MEMORY_FOR_PARTITIONS(_partitions) \
794  ( (_partitions) * \
795    ( sizeof(Partition_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
796
797#define CONFIGURE_MEMORY_FOR_REGIONS(_regions) \
798  ( (_regions) * \
799    ( sizeof(Region_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
800
801#define CONFIGURE_MEMORY_FOR_PORTS(_ports) \
802  ( (_ports) * \
803    ( sizeof(Dual_ported_memory_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
804
805#define CONFIGURE_MEMORY_FOR_PERIODS(_periods) \
806  ( (_periods) * \
807    ( sizeof(Rate_monotonic_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
808
809#define CONFIGURE_MEMORY_FOR_USER_EXTENSIONS(_extensions) \
810  ( (_extensions) * \
811    ( sizeof(Extension_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
812
813#define CONFIGURE_MEMORY_FOR_DEVICES(_devices) \
814  (((_devices) + 1) * ( sizeof(rtems_driver_name_t) ) )
815
816#ifdef CONFIGURE_MP_APPLICATION
817
818#ifndef CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE
819
820#define CONFIGURE_MEMORY_FOR_PROXIES(_proxies) \
821  ( ((_proxies) + 1) * ( sizeof(Thread_Proxy_control) )  )
822
823#define CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS(_global_objects) \
824  ((_global_objects)  * ( sizeof(Objects_MP_Control) )  )
825
826#define CONFIGURE_MEMORY_FOR_MP \
827  ( CONFIGURE_MEMORY_FOR_PROXIES(CONFIGURE_MP_MAXIMUM_PROXIES) + \
828    CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS(CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS) + \
829    CONFIGURE_MEMORY_FOR_TASKS(1) \
830  )
831
832#endif  /* CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE */
833
834#else
835
836#define CONFIGURE_MEMORY_FOR_MP  0
837
838#endif
839
840#ifndef CONFIGURE_MEMORY_OVERHEAD
841#define CONFIGURE_MEMORY_OVERHEAD 0
842#endif
843
844#ifndef CONFIGURE_EXTRA_TASK_STACKS
845#define CONFIGURE_EXTRA_TASK_STACKS 0
846#endif
847
848#define CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD \
849  ( CONFIGURE_MEMORY_FOR_TASKS(1) +    /* IDLE */ \
850    (256 * 12) +                       /* Ready chains */ \
851    256        +                       /* name/ptr table overhead */ \
852    CONFIGURE_INTERRUPT_STACK_MEMORY   /* interrupt stack */ \
853  )
854
855/*
856 *  Now account for any extra memory that initialization tasks or threads
857 *  may have requested.
858 */
859
860#ifdef RTEMS_POSIX_API
861#define CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART \
862    (CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE - RTEMS_MINIMUM_STACK_SIZE)
863#else
864#define CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART 0
865#endif
866#ifdef RTEMS_ITRON_API
867#define CONFIGURE_INITIALIZATION_THREADS_STACKS_ITRON_PART \
868    (CONFIGURE_ITRON_INIT_TASK_STACK_SIZE - RTEMS_MINIMUM_STACK_SIZE)
869#else
870#define CONFIGURE_INITIALIZATION_THREADS_STACKS_ITRON_PART 0
871#endif
872
873#define CONFIGURE_INITIALIZATION_THREADS_STACKS \
874   ((CONFIGURE_INIT_TASK_STACK_SIZE - RTEMS_MINIMUM_STACK_SIZE) + \
875    CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART + \
876    CONFIGURE_INITIALIZATION_THREADS_STACKS_ITRON_PART)
877
878#define CONFIGURE_EXECUTIVE_RAM_SIZE \
879(( CONFIGURE_MEMORY_FOR_POSIX + \
880   CONFIGURE_MEMORY_FOR_ITRON + \
881   CONFIGURE_MEMORY_FOR_TASKS(CONFIGURE_MAXIMUM_TASKS + \
882      CONFIGURE_MAXIMUM_POSIX_THREADS + CONFIGURE_MAXIMUM_ADA_TASKS + \
883      CONFIGURE_MAXIMUM_ITRON_TASKS ) + \
884   CONFIGURE_INITIALIZATION_THREADS_STACKS + \
885   CONFIGURE_MEMORY_FOR_TIMERS(CONFIGURE_MAXIMUM_TIMERS) + \
886   CONFIGURE_MEMORY_FOR_SEMAPHORES(CONFIGURE_MAXIMUM_SEMAPHORES + \
887     CONFIGURE_LIBIO_SEMAPHORES + CONFIGURE_TERMIOS_SEMAPHORES) + \
888   CONFIGURE_MEMORY_FOR_MESSAGE_QUEUES(CONFIGURE_MAXIMUM_MESSAGE_QUEUES) + \
889   CONFIGURE_MEMORY_FOR_PARTITIONS(CONFIGURE_MAXIMUM_PARTITIONS) + \
890   CONFIGURE_MEMORY_FOR_REGIONS( \
891      CONFIGURE_MAXIMUM_REGIONS + CONFIGURE_MALLOC_REGION ) + \
892   CONFIGURE_MEMORY_FOR_PORTS(CONFIGURE_MAXIMUM_PORTS) + \
893   CONFIGURE_MEMORY_FOR_PERIODS(CONFIGURE_MAXIMUM_PERIODS) + \
894   CONFIGURE_MEMORY_FOR_USER_EXTENSIONS( \
895      CONFIGURE_MAXIMUM_USER_EXTENSIONS + CONFIGURE_NEWLIB_EXTENSION + \
896      CONFIGURE_STACK_CHECKER_EXTENSION ) + \
897   CONFIGURE_MEMORY_FOR_DEVICES(CONFIGURE_MAXIMUM_DEVICES) + \
898   CONFIGURE_MEMORY_FOR_MP + \
899   CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD + \
900   (((CONFIGURE_MEMORY_OVERHEAD)+1) * 1024) + \
901   (CONFIGURE_EXTRA_TASK_STACKS) + (CONFIGURE_ADA_TASKS_STACK) \
902) & 0xfffffc00)
903#endif
904
905#ifdef CONFIGURE_GNAT_RTEMS
906#define CONFIGURE_GNAT_MUTEXES 10
907#define CONFIGURE_GNAT_KEYS    1
908
909/* 20 are required to run all tests in the ACVC */
910#ifndef CONFIGURE_MAXIMUM_ADA_TASKS
911#define CONFIGURE_MAXIMUM_ADA_TASKS  20
912#endif
913
914/* This is the number of non-Ada tasks which invoked Ada code. */
915#ifndef CONFIGURE_MAXIMUM_FAKE_ADA_TASKS
916#define CONFIGURE_MAXIMUM_FAKE_ADA_TASKS 0
917#endif
918
919/* Ada tasks are allocated twice the minimum stack space */
920#define CONFIGURE_ADA_TASKS_STACK \
921  (CONFIGURE_MAXIMUM_ADA_TASKS * (RTEMS_MINIMUM_STACK_SIZE + (6 * 1024)))
922
923#else
924#define CONFIGURE_GNAT_MUTEXES           0
925#define CONFIGURE_GNAT_KEYS              0
926#define CONFIGURE_MAXIMUM_ADA_TASKS      0
927#define CONFIGURE_MAXIMUM_FAKE_ADA_TASKS 0
928#define CONFIGURE_ADA_TASKS_STACK        0
929#endif
930
931
932#ifdef CONFIGURE_INIT
933
934rtems_api_configuration_table Configuration_RTEMS_API = {
935  CONFIGURE_MAXIMUM_TASKS,
936  CONFIGURE_MAXIMUM_TIMERS,
937  CONFIGURE_MAXIMUM_SEMAPHORES + CONFIGURE_LIBIO_SEMAPHORES +
938    CONFIGURE_TERMIOS_SEMAPHORES,
939  CONFIGURE_MAXIMUM_MESSAGE_QUEUES,
940  CONFIGURE_MAXIMUM_PARTITIONS,
941  CONFIGURE_MAXIMUM_REGIONS + CONFIGURE_MALLOC_REGION,
942  CONFIGURE_MAXIMUM_PORTS,
943  CONFIGURE_MAXIMUM_PERIODS,
944  CONFIGURE_INIT_TASK_TABLE_SIZE,
945  CONFIGURE_INIT_TASK_TABLE
946};
947
948#ifdef RTEMS_POSIX_API
949posix_api_configuration_table Configuration_POSIX_API = {
950  CONFIGURE_MAXIMUM_POSIX_THREADS + CONFIGURE_MAXIMUM_ADA_TASKS,
951  CONFIGURE_MAXIMUM_POSIX_MUTEXES + CONFIGURE_GNAT_MUTEXES +
952    CONFIGURE_MAXIMUM_ADA_TASKS + CONFIGURE_MAXIMUM_FAKE_ADA_TASKS,
953  CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES +
954    CONFIGURE_MAXIMUM_ADA_TASKS + CONFIGURE_MAXIMUM_FAKE_ADA_TASKS,
955  CONFIGURE_MAXIMUM_POSIX_KEYS + CONFIGURE_GNAT_KEYS,
956  CONFIGURE_MAXIMUM_POSIX_TIMERS,
957  CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS,
958  CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES,
959  CONFIGURE_MAXIMUM_POSIX_SEMAPHORES,
960  CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE,
961  CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME
962};
963#endif
964
965#ifdef RTEMS_ITRON_API
966itron_api_configuration_table Configuration_ITRON_API = {
967  CONFIGURE_MAXIMUM_ITRON_TASKS,
968  CONFIGURE_MAXIMUM_ITRON_SEMAPHORES,
969  CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS,
970  CONFIGURE_MAXIMUM_ITRON_MAILBOXES,
971  CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS,
972  CONFIGURE_MAXIMUM_ITRON_PORTS,
973  CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS,
974  CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS,
975  CONFIGURE_ITRON_INIT_TASK_TABLE_SIZE,
976  CONFIGURE_ITRON_INIT_TASK_TABLE_NAME
977};
978#endif
979
980rtems_configuration_table Configuration = {
981  CONFIGURE_EXECUTIVE_RAM_WORK_AREA,
982  CONFIGURE_EXECUTIVE_RAM_SIZE,
983  CONFIGURE_MAXIMUM_USER_EXTENSIONS + CONFIGURE_NEWLIB_EXTENSION + 
984      CONFIGURE_STACK_CHECKER_EXTENSION,
985  CONFIGURE_MICROSECONDS_PER_TICK,
986  CONFIGURE_TICKS_PER_TIMESLICE,
987  CONFIGURE_MAXIMUM_DEVICES,
988  sizeof (Device_drivers)/
989    sizeof(rtems_driver_address_table),      /* number of device drivers */
990  Device_drivers,                            /* pointer to driver table */
991  CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS,    /* number of initial extensions */
992  Configuration_Initial_Extensions,          /* pointer to initial extensions */
993  CONFIGURE_MULTIPROCESSING_TABLE,           /* pointer to MP config table */
994  &Configuration_RTEMS_API,                  /* pointer to RTEMS API config */
995#ifdef RTEMS_POSIX_API
996  &Configuration_POSIX_API,                  /* pointer to POSIX API config */
997#else
998  NULL,                                      /* pointer to POSIX API config */
999#endif
1000#ifdef RTEMS_ITRON_API
1001  &Configuration_ITRON_API                   /* pointer to ITRON API config */
1002#else
1003  NULL                                       /* pointer to ITRON API config */
1004#endif
1005};
1006#endif
1007
1008#endif /* CONFIGURE_HAS_OWN_CONFIGURATION_TABLE */
1009
1010#ifdef __cplusplus
1011}
1012#endif
1013 
1014/*
1015 *  Some warnings and error checking
1016 */
1017
1018/*
1019 *  Make sure a task/thread of some sort is configured
1020 */
1021
1022#if (CONFIGURE_MAXIMUM_TASKS == 0) && \
1023    (CONFIGURE_MAXIMUM_POSIX_THREADS == 0) && \
1024    (CONFIGURE_MAXIMUM_ADA_TASKS == 0) &&  \
1025    (CONFIGURE_MAXIMUM_ITRON_TASKS == 0)
1026#error "CONFIGURATION ERROR: No tasks or threads configured!!"
1027#endif
1028
1029/*
1030 *  Make sure at least one of the initialization task/thread
1031 *  tables was defined.
1032 */
1033
1034#if !defined(CONFIGURE_RTEMS_INIT_TASKS_TABLE) && \
1035    !defined(CONFIGURE_POSIX_INIT_THREAD_TABLE) && \
1036    !defined(CONFIGURE_ITRON_INIT_TASK_TABLE)
1037#error "CONFIGURATION ERROR: No initialization tasks or threads configured!!"
1038#endif
1039
1040#endif
1041/* end of include file */
Note: See TracBrowser for help on using the repository browser.