source: rtems/c/src/exec/sapi/include/confdefs.h @ 45c3da3

4.104.114.84.95
Last change on this file since 45c3da3 was 45c3da3, checked in by Joel Sherrill <joel.sherrill@…>, on 10/18/00 at 18:08:32

2000-10-18 Joel Sherrill <joel@…>

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