source: rtems/c/src/exec/sapi/headers/confdefs.h @ e6d4b1d

4.104.114.84.95
Last change on this file since e6d4b1d was e6d4b1d, checked in by Joel Sherrill <joel.sherrill@…>, on 05/28/96 at 13:13:34

added initial posix configuration support

  • Property mode set to 100644
File size: 11.1 KB
Line 
1/*  confdefs.h
2 *
3 *  This include file contains the configuration table template that will
4 *  be used by the single processor tests to define its default configuration
5 *  parameters.
6 *
7 *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
8 *  On-Line Applications Research Corporation (OAR).
9 *  All rights assigned to U.S. Government, 1994.
10 *
11 *  This material may be reproduced by or for the U.S. Government pursuant
12 *  to the copyright license under the clause at DFARS 252.227-7013.  This
13 *  notice must appear in all copies of this file and its derivatives.
14 *
15 *  $Id$
16 */
17
18#ifndef __CONFIGURATION_TEMPLATE_h
19#define __CONFIGURATION_TEMPLATE_h
20 
21#ifdef __cplusplus
22extern "C" {
23#endif
24 
25extern rtems_initialization_tasks_table Initialization_tasks[];
26extern rtems_driver_address_table       Device_drivers[];
27extern rtems_configuration_table        Configuration;
28extern rtems_multiprocessing_table      Multiprocessing_configuration;
29
30/*
31 *  Default User Initialization Task Table.  This table guarantees that
32 *  one user initialization table is defined.
33 */
34
35#ifndef CONFIGURE_HAS_OWN_INIT_TASK_TABLE
36
37#ifndef CONFIGURE_INIT_TASK_NAME
38#define CONFIGURE_INIT_TASK_NAME          rtems_build_name( 'U', 'I', '1', ' ' )
39#endif
40
41#ifndef CONFIGURE_INIT_TASK_STACK_SIZE
42#define CONFIGURE_INIT_TASK_STACK_SIZE    RTEMS_MINIMUM_STACK_SIZE
43#endif
44
45#ifndef CONFIGURE_INIT_TASK_PRIORITY
46#define CONFIGURE_INIT_TASK_PRIORITY      1
47#endif
48
49#ifndef CONFIGURE_INIT_TASK_ATTRIBUTES
50#define CONFIGURE_INIT_TASK_ATTRIBUTES    RTEMS_DEFAULT_ATTRIBUTES
51#endif
52
53#ifndef CONFIGURE_INIT_TASK_ENTRY_POINT
54#define CONFIGURE_INIT_TASK_ENTRY_POINT   Init
55#endif
56
57#ifndef CONFIGURE_INIT_TASK_INITIAL_MODES
58#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_NO_PREEMPT
59#endif
60
61#ifndef CONFIGURE_INIT_TASK_ARGUMENTS
62#define CONFIGURE_INIT_TASK_ARGUMENTS     0
63#endif
64
65#ifdef CONFIGURE_INIT
66rtems_initialization_tasks_table Initialization_tasks[] = {
67  { CONFIGURE_INIT_TASK_NAME,
68    CONFIGURE_INIT_TASK_STACK_SIZE,
69    CONFIGURE_INIT_TASK_PRIORITY,
70    CONFIGURE_INIT_TASK_ATTRIBUTES,
71    CONFIGURE_INIT_TASK_ENTRY_POINT,
72    CONFIGURE_INIT_TASK_INITIAL_MODES,
73    CONFIGURE_INIT_TASK_ARGUMENTS
74  }
75};
76#endif
77
78#endif
79
80/*
81 *  Default Device Driver Table.  Each driver needed by the test is explicitly
82 *  choosen by that test.  There is always a null driver entry.
83 */
84
85#define NULL_DRIVER_TABLE_ENTRY \
86 { NULL, NULL, NULL, NULL, NULL, NULL }
87
88#ifdef CONFIGURE_TEST_NEEDS_TIMER_DRIVER
89#include <timerdrv.h>
90#endif
91
92#ifdef CONFIGURE_TEST_NEEDS_STUB_DRIVER
93#include <stubdrv.h>
94#endif
95
96#ifndef CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE
97
98#ifdef CONFIGURE_INIT
99rtems_driver_address_table Device_drivers[] = {
100#ifdef CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER
101  CONSOLE_DRIVER_TABLE_ENTRY,
102#endif
103#ifdef CONFIGURE_TEST_NEEDS_CLOCK_DRIVER
104  CLOCK_DRIVER_TABLE_ENTRY,
105#endif
106#ifdef CONFIGURE_TEST_NEEDS_STUB_DRIVER
107  STUB_DRIVER_TABLE_ENTRY,
108#endif
109  NULL_DRIVER_TABLE_ENTRY
110};
111#endif
112
113#endif  /* CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE */
114
115/*
116 *  Default the number of devices per device driver.  This value may be
117 *  overridden by the user.
118 */
119
120#ifndef CONFIGURE_HAS_OWN_NUMBER_OF_DEVICES
121
122#ifndef CONFIGURE_MAXIMUM_DEVICES
123#define CONFIGURE_MAXIMUM_DEVICES   20
124#endif
125
126#endif /* CONFIGURE_HAS_OWN_NUMBER_OF_DEVICES */
127
128/*
129 *  Default Configuration Table.  This table contains the most values set in
130 *  the RTEMS Test Suite.  Each value may be overridden within each test to
131 *  customize the environment.
132 */
133
134#ifdef CONFIGURE_MPTEST
135#ifndef CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE
136
137#ifndef CONFIGURE_MP_NODE_NUMBER
138#define CONFIGURE_MP_NODE_NUMBER                NODE_NUMBER
139#endif
140
141#ifndef CONFIGURE_MP_MAXIMUM_NODES
142#define CONFIGURE_MP_MAXIMUM_NODES              2
143#endif
144
145#ifndef CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
146#define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS     32
147#endif
148
149#ifndef CONFIGURE_MP_MAXIMUM_PROXIES
150#define CONFIGURE_MP_MAXIMUM_PROXIES            32
151#endif
152
153#ifndef CONFIGURE_MP_MPCI_TABLE_POINTER
154#include <mpci.h>
155#define CONFIGURE_MP_MPCI_TABLE_POINTER         &MPCI_table
156#endif
157
158#ifdef CONFIGURE_INIT
159rtems_multiprocessing_table Multiprocessing_configuration = {
160  CONFIGURE_MP_NODE_NUMBER,              /* local node number */
161  CONFIGURE_MP_MAXIMUM_NODES,            /* maximum # nodes in system */
162  CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS,   /* maximum # global objects */
163  CONFIGURE_MP_MAXIMUM_PROXIES,          /* maximum # proxies */
164  CONFIGURE_MP_MPCI_TABLE_POINTER        /* pointer to MPCI config table */
165};
166#endif
167
168#define CONFIGURE_MULTIPROCESSING_TABLE    &Multiprocessing_configuration
169
170#endif /* CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE */
171
172#else
173
174#define CONFIGURE_MULTIPROCESSING_TABLE    NULL
175
176#endif /* CONFIGURE_MPTEST */
177 
178/*
179 *  Default Configuration Table.  This table contains the most values set in
180 *  the RTEMS Test Suite.  Each value may be overridden within each test to
181 *  customize the environment.
182 */
183
184#ifndef CONFIGURE_HAS_OWN_CONFIGURATION_TABLE
185 
186#ifndef CONFIGURE_EXECUTIVE_RAM_WORK_AREA
187#define CONFIGURE_EXECUTIVE_RAM_WORK_AREA     NULL
188#endif
189
190#ifndef CONFIGURE_MAXIMUM_TASKS
191#define CONFIGURE_MAXIMUM_TASKS               10
192#endif
193
194#ifndef CONFIGURE_MAXIMUM_TIMERS
195#define CONFIGURE_MAXIMUM_TIMERS              0
196#endif
197
198#ifndef CONFIGURE_MAXIMUM_SEMAPHORES
199#define CONFIGURE_MAXIMUM_SEMAPHORES          0
200#endif
201
202#ifndef CONFIGURE_MAXIMUM_MESSAGE_QUEUES
203#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES      0
204#endif
205
206#ifndef CONFIGURE_MAXIMUM_PARTITIONS
207#define CONFIGURE_MAXIMUM_PARTITIONS          0
208#endif
209
210#ifndef CONFIGURE_MAXIMUM_REGIONS
211#define CONFIGURE_MAXIMUM_REGIONS             0
212#endif
213
214#ifndef CONFIGURE_MAXIMUM_PORTS
215#define CONFIGURE_MAXIMUM_PORTS               0
216#endif
217
218#ifndef CONFIGURE_MAXIMUM_PERIODS
219#define CONFIGURE_MAXIMUM_PERIODS             0
220#endif
221
222#ifndef CONFIGURE_MAXIMUM_USER_EXTENSIONS
223#define CONFIGURE_MAXIMUM_USER_EXTENSIONS     0
224#endif
225
226#ifndef CONFIGURE_MICROSECONDS_PER_TICK
227#define CONFIGURE_MICROSECONDS_PER_TICK RTEMS_MILLISECONDS_TO_MICROSECONDS(10)
228#endif
229
230#ifndef CONFIGURE_TICKS_PER_TIMESLICE
231#define CONFIGURE_TICKS_PER_TIMESLICE        50
232#endif
233
234#ifndef CONFIGURE_INITIAL_EXTENSIONS 
235#define CONFIGURE_INITIAL_EXTENSIONS         NULL
236#endif
237
238/*
239 *  Calculate the RAM size based on the maximum number of objects configured.
240 *  The model is to estimate the memory required for each configured item,
241 *  sum the memory requirements and insure that there is at least 32K greater
242 *  than that for things not directly addressed such as:
243 *
244 *    + stacks greater than minimum size
245 *    + FP contexts
246 *    + API areas (should be optional)
247 *    + messages
248 *    + object name and local pointer table overhead
249 *    + per node memory requirements
250 *    + executive fixed requirements (including at least internal threads
251 *       and the Ready chains)
252 *
253 *  NOTE:  Eventually this should take into account some of the above.
254 *         Basically, this is a "back of the envelope" estimate for
255 *         memory requirements.  It could be more accurate.
256 */
257
258#ifndef CONFIGURE_EXECUTIVE_RAM_SIZE
259
260#define CONFIGURE_OBJECT_TABLE_STUFF \
261  ( sizeof(Objects_Control *) + sizeof(rtems_name *) + sizeof(rtems_name) )
262
263#define CONFIGURE_MEMORY_FOR_TASKS(_tasks) \
264  ((_tasks) * \
265   ((sizeof(Thread_Control) + CONTEXT_FP_SIZE + \
266      STACK_MINIMUM_SIZE + sizeof( RTEMS_API_Control ) + \
267      CONFIGURE_OBJECT_TABLE_STUFF)) \
268  )
269
270#define CONFIGURE_MEMORY_FOR_TIMERS(_timers) \
271  ((_timers) * ( sizeof(Timer_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
272
273#define CONFIGURE_MEMORY_FOR_SEMAPHORES(_semaphores) \
274  ((_semaphores) * \
275   ( sizeof(Semaphore_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
276
277#define CONFIGURE_MEMORY_FOR_MESSAGE_QUEUES(_queues) \
278  ( (_queues) * \
279    ( sizeof(Message_queue_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
280
281#define CONFIGURE_MEMORY_FOR_PARTITIONS(_partitions) \
282  ( (_partitions) * \
283    ( sizeof(Partition_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
284
285#define CONFIGURE_MEMORY_FOR_REGIONS(_regions) \
286  ( (_regions) * \
287    ( sizeof(Region_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
288
289#define CONFIGURE_MEMORY_FOR_PORTS(_ports) \
290  ( (_ports) * \
291    ( sizeof(Dual_ported_memory_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
292
293#define CONFIGURE_MEMORY_FOR_PERIODS(_periods) \
294  ( (_periods) * \
295    ( sizeof(Rate_monotonic_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
296
297#define CONFIGURE_MEMORY_FOR_USER_EXTENSIONS(_extensions) \
298  ( (_extensions) * \
299    ( sizeof(Extension_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
300
301#define CONFIGURE_MEMORY_FOR_DEVICES(_devices) \
302  (((_devices) + 1) * ( sizeof(rtems_driver_name_t) ) )
303
304#ifdef CONFIGURE_MPTEST
305
306#ifndef CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE
307
308#define CONFIGURE_MEMORY_FOR_PROXIES(_proxies) \
309  ( ((_proxies) + 1) * ( sizeof(Thread_Proxy_control) )  )
310
311#define CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS(_global_objects) \
312  ((_global_objects)  * ( sizeof(Objects_MP_Control) )  )
313
314#define CONFIGURE_MEMORY_FOR_MP \
315  ( CONFIGURE_MEMORY_FOR_PROXIES(CONFIGURE_MP_MAXIMUM_PROXIES) + \
316    CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS(CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS) \
317  )
318
319#endif  /* CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE */
320
321#else
322
323#define CONFIGURE_MEMORY_FOR_MP  0
324
325#endif
326#define CONFIGURE_EXECUTIVE_RAM_SIZE \
327(( CONFIGURE_MEMORY_FOR_TASKS(CONFIGURE_MAXIMUM_TASKS) + \
328   CONFIGURE_MEMORY_FOR_TIMERS(CONFIGURE_MAXIMUM_TIMERS) + \
329   CONFIGURE_MEMORY_FOR_SEMAPHORES(CONFIGURE_MAXIMUM_SEMAPHORES) + \
330   CONFIGURE_MEMORY_FOR_MESSAGE_QUEUES(CONFIGURE_MAXIMUM_MESSAGE_QUEUES) + \
331   CONFIGURE_MEMORY_FOR_PARTITIONS(CONFIGURE_MAXIMUM_PARTITIONS) + \
332   CONFIGURE_MEMORY_FOR_REGIONS(CONFIGURE_MAXIMUM_REGIONS) + \
333   CONFIGURE_MEMORY_FOR_PORTS(CONFIGURE_MAXIMUM_PORTS) + \
334   CONFIGURE_MEMORY_FOR_PERIODS(CONFIGURE_MAXIMUM_PERIODS) + \
335   CONFIGURE_MEMORY_FOR_USER_EXTENSIONS(CONFIGURE_MAXIMUM_USER_EXTENSIONS) + \
336   CONFIGURE_MEMORY_FOR_DEVICES(CONFIGURE_MAXIMUM_DEVICES) + \
337   CONFIGURE_MEMORY_FOR_MP + \
338   (96*1024) \
339) & 0xffff8000)
340#endif
341
342#ifdef CONFIGURE_INIT
343
344rtems_api_configuration_table Configuration_RTEMS_API = {
345  CONFIGURE_MAXIMUM_TASKS,
346  CONFIGURE_MAXIMUM_TIMERS,
347  CONFIGURE_MAXIMUM_SEMAPHORES,
348  CONFIGURE_MAXIMUM_MESSAGE_QUEUES,
349  CONFIGURE_MAXIMUM_PARTITIONS,
350  CONFIGURE_MAXIMUM_REGIONS,
351  CONFIGURE_MAXIMUM_PORTS,
352  CONFIGURE_MAXIMUM_PERIODS,
353  sizeof (Initialization_tasks)/
354   sizeof(rtems_initialization_tasks_table), /* number of init tasks */
355  Initialization_tasks                       /* init task(s) table */
356};
357
358rtems_configuration_table Configuration = {
359  CONFIGURE_EXECUTIVE_RAM_WORK_AREA,
360  CONFIGURE_EXECUTIVE_RAM_SIZE,
361  CONFIGURE_MAXIMUM_USER_EXTENSIONS,
362  CONFIGURE_MICROSECONDS_PER_TICK,
363  CONFIGURE_TICKS_PER_TIMESLICE,
364  CONFIGURE_MAXIMUM_DEVICES,
365  sizeof (Device_drivers)/
366    sizeof(rtems_driver_address_table),      /* number of device drivers */
367  Device_drivers,                            /* pointer to driver table */
368  CONFIGURE_INITIAL_EXTENSIONS,              /* pointer to initial extensions */
369  CONFIGURE_MULTIPROCESSING_TABLE,           /* pointer to MP config table */
370  &Configuration_RTEMS_API,                  /* pointer to RTEMS API config */
371  NULL                                       /* pointer to RTEMS API config */
372};
373#endif
374
375#endif /* CONFIGURE_HAS_OWN_CONFIGURATION_TABLE */
376
377#ifdef __cplusplus
378}
379#endif
380 
381#endif
382/* end of include file */
Note: See TracBrowser for help on using the repository browser.