source: rtems/cpukit/sapi/include/confdefs.h @ 5240c71c

4.104.114.84.95
Last change on this file since 5240c71c was 5240c71c, checked in by Joel Sherrill <joel.sherrill@…>, on 05/29/96 at 20:58:45

fixed support for posix initialization threads table

  • Property mode set to 100644
File size: 12.7 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#ifdef RTEMS_POSIX_API
30extern posix_api_configuration_table Configuration_POSIX_API;
31#endif
32
33/*
34 *  Default User Initialization Task Table.  This table guarantees that
35 *  one user initialization table is defined.
36 */
37
38#ifndef CONFIGURE_HAS_OWN_INIT_TASK_TABLE
39
40#ifndef CONFIGURE_INIT_TASK_NAME
41#define CONFIGURE_INIT_TASK_NAME          rtems_build_name( 'U', 'I', '1', ' ' )
42#endif
43
44#ifndef CONFIGURE_INIT_TASK_STACK_SIZE
45#define CONFIGURE_INIT_TASK_STACK_SIZE    RTEMS_MINIMUM_STACK_SIZE
46#endif
47
48#ifndef CONFIGURE_INIT_TASK_PRIORITY
49#define CONFIGURE_INIT_TASK_PRIORITY      1
50#endif
51
52#ifndef CONFIGURE_INIT_TASK_ATTRIBUTES
53#define CONFIGURE_INIT_TASK_ATTRIBUTES    RTEMS_DEFAULT_ATTRIBUTES
54#endif
55
56#ifndef CONFIGURE_INIT_TASK_ENTRY_POINT
57#define CONFIGURE_INIT_TASK_ENTRY_POINT   Init
58#endif
59
60#ifndef CONFIGURE_INIT_TASK_INITIAL_MODES
61#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_NO_PREEMPT
62#endif
63
64#ifndef CONFIGURE_INIT_TASK_ARGUMENTS
65#define CONFIGURE_INIT_TASK_ARGUMENTS     0
66#endif
67
68#ifdef CONFIGURE_INIT
69rtems_initialization_tasks_table Initialization_tasks[] = {
70  { CONFIGURE_INIT_TASK_NAME,
71    CONFIGURE_INIT_TASK_STACK_SIZE,
72    CONFIGURE_INIT_TASK_PRIORITY,
73    CONFIGURE_INIT_TASK_ATTRIBUTES,
74    CONFIGURE_INIT_TASK_ENTRY_POINT,
75    CONFIGURE_INIT_TASK_INITIAL_MODES,
76    CONFIGURE_INIT_TASK_ARGUMENTS
77  }
78};
79#endif
80
81#define CONFIGURE_INIT_TASK_TABLE Initialization_tasks
82
83#define CONFIGURE_INIT_TASK_TABLE_SIZE \
84  sizeof(CONFIGURE_INIT_TASK_TABLE) / sizeof(rtems_initialization_tasks_table)
85
86#endif
87
88/*
89 *  Default Device Driver Table.  Each driver needed by the test is explicitly
90 *  choosen by that test.  There is always a null driver entry.
91 */
92
93#define NULL_DRIVER_TABLE_ENTRY \
94 { NULL, NULL, NULL, NULL, NULL, NULL }
95
96#ifdef CONFIGURE_TEST_NEEDS_TIMER_DRIVER
97#include <timerdrv.h>
98#endif
99
100#ifdef CONFIGURE_TEST_NEEDS_STUB_DRIVER
101#include <stubdrv.h>
102#endif
103
104#ifndef CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE
105
106#ifdef CONFIGURE_INIT
107rtems_driver_address_table Device_drivers[] = {
108#ifdef CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER
109  CONSOLE_DRIVER_TABLE_ENTRY,
110#endif
111#ifdef CONFIGURE_TEST_NEEDS_CLOCK_DRIVER
112  CLOCK_DRIVER_TABLE_ENTRY,
113#endif
114#ifdef CONFIGURE_TEST_NEEDS_STUB_DRIVER
115  STUB_DRIVER_TABLE_ENTRY,
116#endif
117  NULL_DRIVER_TABLE_ENTRY
118};
119#endif
120
121#endif  /* CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE */
122
123/*
124 *  Default the number of devices per device driver.  This value may be
125 *  overridden by the user.
126 */
127
128#ifndef CONFIGURE_HAS_OWN_NUMBER_OF_DEVICES
129
130#ifndef CONFIGURE_MAXIMUM_DEVICES
131#define CONFIGURE_MAXIMUM_DEVICES   20
132#endif
133
134#endif /* CONFIGURE_HAS_OWN_NUMBER_OF_DEVICES */
135
136/*
137 *  Default Configuration Table.  This table contains the most values set in
138 *  the RTEMS Test Suite.  Each value may be overridden within each test to
139 *  customize the environment.
140 */
141
142#ifdef CONFIGURE_MPTEST
143#ifndef CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE
144
145#ifndef CONFIGURE_MP_NODE_NUMBER
146#define CONFIGURE_MP_NODE_NUMBER                NODE_NUMBER
147#endif
148
149#ifndef CONFIGURE_MP_MAXIMUM_NODES
150#define CONFIGURE_MP_MAXIMUM_NODES              2
151#endif
152
153#ifndef CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
154#define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS     32
155#endif
156
157#ifndef CONFIGURE_MP_MAXIMUM_PROXIES
158#define CONFIGURE_MP_MAXIMUM_PROXIES            32
159#endif
160
161#ifndef CONFIGURE_MP_MPCI_TABLE_POINTER
162#include <mpci.h>
163#define CONFIGURE_MP_MPCI_TABLE_POINTER         &MPCI_table
164#endif
165
166#ifdef CONFIGURE_INIT
167rtems_multiprocessing_table Multiprocessing_configuration = {
168  CONFIGURE_MP_NODE_NUMBER,              /* local node number */
169  CONFIGURE_MP_MAXIMUM_NODES,            /* maximum # nodes in system */
170  CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS,   /* maximum # global objects */
171  CONFIGURE_MP_MAXIMUM_PROXIES,          /* maximum # proxies */
172  CONFIGURE_MP_MPCI_TABLE_POINTER        /* pointer to MPCI config table */
173};
174#endif
175
176#define CONFIGURE_MULTIPROCESSING_TABLE    &Multiprocessing_configuration
177
178#endif /* CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE */
179
180#else
181
182#define CONFIGURE_MULTIPROCESSING_TABLE    NULL
183
184#endif /* CONFIGURE_MPTEST */
185 
186/*
187 *  Default Configuration Table.  This table contains the most values set in
188 *  the RTEMS Test Suite.  Each value may be overridden within each test to
189 *  customize the environment.
190 */
191
192#ifndef CONFIGURE_HAS_OWN_CONFIGURATION_TABLE
193 
194#ifndef CONFIGURE_EXECUTIVE_RAM_WORK_AREA
195#define CONFIGURE_EXECUTIVE_RAM_WORK_AREA     NULL
196#endif
197
198#ifndef CONFIGURE_MAXIMUM_TASKS
199#define CONFIGURE_MAXIMUM_TASKS               10
200#endif
201
202#ifndef CONFIGURE_MAXIMUM_TIMERS
203#define CONFIGURE_MAXIMUM_TIMERS              0
204#endif
205
206#ifndef CONFIGURE_MAXIMUM_SEMAPHORES
207#define CONFIGURE_MAXIMUM_SEMAPHORES          0
208#endif
209
210#ifndef CONFIGURE_MAXIMUM_MESSAGE_QUEUES
211#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES      0
212#endif
213
214#ifndef CONFIGURE_MAXIMUM_PARTITIONS
215#define CONFIGURE_MAXIMUM_PARTITIONS          0
216#endif
217
218#ifndef CONFIGURE_MAXIMUM_REGIONS
219#define CONFIGURE_MAXIMUM_REGIONS             0
220#endif
221
222#ifndef CONFIGURE_MAXIMUM_PORTS
223#define CONFIGURE_MAXIMUM_PORTS               0
224#endif
225
226#ifndef CONFIGURE_MAXIMUM_PERIODS
227#define CONFIGURE_MAXIMUM_PERIODS             0
228#endif
229
230#ifndef CONFIGURE_MAXIMUM_USER_EXTENSIONS
231#define CONFIGURE_MAXIMUM_USER_EXTENSIONS     0
232#endif
233
234#ifndef CONFIGURE_MICROSECONDS_PER_TICK
235#define CONFIGURE_MICROSECONDS_PER_TICK RTEMS_MILLISECONDS_TO_MICROSECONDS(10)
236#endif
237
238#ifndef CONFIGURE_TICKS_PER_TIMESLICE
239#define CONFIGURE_TICKS_PER_TIMESLICE        50
240#endif
241
242#ifndef CONFIGURE_INITIAL_EXTENSIONS 
243#define CONFIGURE_INITIAL_EXTENSIONS         NULL
244#endif
245
246/*
247 *  POSIX API Configuration Parameters
248 */
249
250#ifdef RTEMS_POSIX_API
251
252#ifndef CONFIGURE_MAXIMUM_POSIX_THREADS
253#define CONFIGURE_MAXIMUM_POSIX_THREADS      10
254#endif
255
256#ifndef CONFIGURE_MAXIMUM_POSIX_MUTEXES
257#define CONFIGURE_MAXIMUM_POSIX_MUTEXES      0
258#endif
259
260#ifndef CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES
261#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES  0
262#endif
263
264#ifndef CONFIGURE_MAXIMUM_POSIX_KEYS
265#define CONFIGURE_MAXIMUM_POSIX_KEYS         0
266#endif
267
268#ifndef CONFIGURE_POSIX_HAS_OWN_INIT_TASK_TABLE
269
270#ifndef CONFIGURE_POSIX_INIT_TASK_ENTRY_POINT
271#define CONFIGURE_POSIX_INIT_TASK_ENTRY_POINT   Init
272#endif
273
274#ifdef CONFIGURE_INIT
275posix_initialization_tasks_table POSIX_Initialization_tasks[] = {
276  { CONFIGURE_POSIX_INIT_TASK_ENTRY_POINT }
277};
278#endif
279
280#define CONFIGURE_POSIX_INIT_TASK_TABLE POSIX_Initialization_tasks
281 
282#define CONFIGURE_POSIX_INIT_TASK_TABLE_SIZE \
283  sizeof(CONFIGURE_POSIX_INIT_TASK_TABLE) / \
284      sizeof(posix_initialization_tasks_table)
285
286#endif    /* CONFIGURE_POSIX_HAS_OWN_INIT_TASK_TABLE */
287
288#endif    /* RTEMS_POSIX_API */
289
290/*
291 *  Calculate the RAM size based on the maximum number of objects configured.
292 *  The model is to estimate the memory required for each configured item,
293 *  sum the memory requirements and insure that there is at least 32K greater
294 *  than that for things not directly addressed such as:
295 *
296 *    + stacks greater than minimum size
297 *    + FP contexts
298 *    + API areas (should be optional)
299 *    + messages
300 *    + object name and local pointer table overhead
301 *    + per node memory requirements
302 *    + executive fixed requirements (including at least internal threads
303 *       and the Ready chains)
304 *
305 *  NOTE:  Eventually this should take into account some of the above.
306 *         Basically, this is a "back of the envelope" estimate for
307 *         memory requirements.  It could be more accurate.
308 */
309
310#ifndef CONFIGURE_EXECUTIVE_RAM_SIZE
311
312#define CONFIGURE_OBJECT_TABLE_STUFF \
313  ( sizeof(Objects_Control *) + sizeof(rtems_name *) + sizeof(rtems_name) )
314
315#define CONFIGURE_MEMORY_FOR_TASKS(_tasks) \
316  ((_tasks) * \
317   ((sizeof(Thread_Control) + CONTEXT_FP_SIZE + \
318      STACK_MINIMUM_SIZE + sizeof( RTEMS_API_Control ) + \
319      CONFIGURE_OBJECT_TABLE_STUFF)) \
320  )
321
322#define CONFIGURE_MEMORY_FOR_TIMERS(_timers) \
323  ((_timers) * ( sizeof(Timer_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
324
325#define CONFIGURE_MEMORY_FOR_SEMAPHORES(_semaphores) \
326  ((_semaphores) * \
327   ( sizeof(Semaphore_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
328
329#define CONFIGURE_MEMORY_FOR_MESSAGE_QUEUES(_queues) \
330  ( (_queues) * \
331    ( sizeof(Message_queue_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
332
333#define CONFIGURE_MEMORY_FOR_PARTITIONS(_partitions) \
334  ( (_partitions) * \
335    ( sizeof(Partition_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
336
337#define CONFIGURE_MEMORY_FOR_REGIONS(_regions) \
338  ( (_regions) * \
339    ( sizeof(Region_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
340
341#define CONFIGURE_MEMORY_FOR_PORTS(_ports) \
342  ( (_ports) * \
343    ( sizeof(Dual_ported_memory_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
344
345#define CONFIGURE_MEMORY_FOR_PERIODS(_periods) \
346  ( (_periods) * \
347    ( sizeof(Rate_monotonic_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
348
349#define CONFIGURE_MEMORY_FOR_USER_EXTENSIONS(_extensions) \
350  ( (_extensions) * \
351    ( sizeof(Extension_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
352
353#define CONFIGURE_MEMORY_FOR_DEVICES(_devices) \
354  (((_devices) + 1) * ( sizeof(rtems_driver_name_t) ) )
355
356#ifdef CONFIGURE_MPTEST
357
358#ifndef CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE
359
360#define CONFIGURE_MEMORY_FOR_PROXIES(_proxies) \
361  ( ((_proxies) + 1) * ( sizeof(Thread_Proxy_control) )  )
362
363#define CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS(_global_objects) \
364  ((_global_objects)  * ( sizeof(Objects_MP_Control) )  )
365
366#define CONFIGURE_MEMORY_FOR_MP \
367  ( CONFIGURE_MEMORY_FOR_PROXIES(CONFIGURE_MP_MAXIMUM_PROXIES) + \
368    CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS(CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS) \
369  )
370
371#endif  /* CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE */
372
373#else
374
375#define CONFIGURE_MEMORY_FOR_MP  0
376
377#endif
378#define CONFIGURE_EXECUTIVE_RAM_SIZE \
379(( CONFIGURE_MEMORY_FOR_TASKS(CONFIGURE_MAXIMUM_TASKS) + \
380   CONFIGURE_MEMORY_FOR_TIMERS(CONFIGURE_MAXIMUM_TIMERS) + \
381   CONFIGURE_MEMORY_FOR_SEMAPHORES(CONFIGURE_MAXIMUM_SEMAPHORES) + \
382   CONFIGURE_MEMORY_FOR_MESSAGE_QUEUES(CONFIGURE_MAXIMUM_MESSAGE_QUEUES) + \
383   CONFIGURE_MEMORY_FOR_PARTITIONS(CONFIGURE_MAXIMUM_PARTITIONS) + \
384   CONFIGURE_MEMORY_FOR_REGIONS(CONFIGURE_MAXIMUM_REGIONS) + \
385   CONFIGURE_MEMORY_FOR_PORTS(CONFIGURE_MAXIMUM_PORTS) + \
386   CONFIGURE_MEMORY_FOR_PERIODS(CONFIGURE_MAXIMUM_PERIODS) + \
387   CONFIGURE_MEMORY_FOR_USER_EXTENSIONS(CONFIGURE_MAXIMUM_USER_EXTENSIONS) + \
388   CONFIGURE_MEMORY_FOR_DEVICES(CONFIGURE_MAXIMUM_DEVICES) + \
389   CONFIGURE_MEMORY_FOR_MP + \
390   (96*1024) \
391) & 0xffff8000)
392#endif
393
394#ifdef CONFIGURE_INIT
395
396rtems_api_configuration_table Configuration_RTEMS_API = {
397  CONFIGURE_MAXIMUM_TASKS,
398  CONFIGURE_MAXIMUM_TIMERS,
399  CONFIGURE_MAXIMUM_SEMAPHORES,
400  CONFIGURE_MAXIMUM_MESSAGE_QUEUES,
401  CONFIGURE_MAXIMUM_PARTITIONS,
402  CONFIGURE_MAXIMUM_REGIONS,
403  CONFIGURE_MAXIMUM_PORTS,
404  CONFIGURE_MAXIMUM_PERIODS,
405  CONFIGURE_INIT_TASK_TABLE_SIZE,
406  CONFIGURE_INIT_TASK_TABLE
407};
408
409#ifdef RTEMS_POSIX_API
410posix_api_configuration_table Configuration_POSIX_API = {
411  CONFIGURE_MAXIMUM_POSIX_THREADS,
412  CONFIGURE_MAXIMUM_POSIX_MUTEXES,
413  CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES,
414  CONFIGURE_MAXIMUM_POSIX_KEYS,
415  CONFIGURE_POSIX_INIT_TASK_TABLE_SIZE,
416  CONFIGURE_POSIX_INIT_TASK_TABLE
417};
418#endif
419
420rtems_configuration_table Configuration = {
421  CONFIGURE_EXECUTIVE_RAM_WORK_AREA,
422  CONFIGURE_EXECUTIVE_RAM_SIZE,
423  CONFIGURE_MAXIMUM_USER_EXTENSIONS,
424  CONFIGURE_MICROSECONDS_PER_TICK,
425  CONFIGURE_TICKS_PER_TIMESLICE,
426  CONFIGURE_MAXIMUM_DEVICES,
427  sizeof (Device_drivers)/
428    sizeof(rtems_driver_address_table),      /* number of device drivers */
429  Device_drivers,                            /* pointer to driver table */
430  CONFIGURE_INITIAL_EXTENSIONS,              /* pointer to initial extensions */
431  CONFIGURE_MULTIPROCESSING_TABLE,           /* pointer to MP config table */
432  &Configuration_RTEMS_API,                  /* pointer to RTEMS API config */
433#ifdef RTEMS_POSIX_API
434  &Configuration_POSIX_API                   /* pointer to POSIX API config */
435#else
436  NULL                                       /* pointer to POSIX API config */
437#endif
438};
439#endif
440
441#endif /* CONFIGURE_HAS_OWN_CONFIGURATION_TABLE */
442
443#ifdef __cplusplus
444}
445#endif
446 
447#endif
448/* end of include file */
Note: See TracBrowser for help on using the repository browser.