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