source: rtems/cpukit/doxygen/appl-config.h @ c46fbb9

Last change on this file since c46fbb9 was c46fbb9, checked in by Sebastian Huber <sebastian.huber@…>, on 12/01/22 at 09:21:25

config: Add CONFIGURE_RECORD_INTERRUPTS_ENABLED

This enables the tracing of interrupt entry/exit events through an
application configuration option. The interrupt processing can be
viewed with Trace Compass using rtems-record-lttng from the RTEMS Tools.

Update #4769.

  • Property mode set to 100644
File size: 160.5 KB
RevLine 
[e812f81]1/* SPDX-License-Identifier: BSD-2-Clause */
2
3/*
[fa65ad7f]4 * Copyright (C) 2019, 2022 embedded brains GmbH (http://www.embedded-brains.de)
[e812f81]5 * Copyright (C) 2010 Gedare Bloom
[f1723d12]6 * Copyright (C) 1988, 2021 On-Line Applications Research Corporation (OAR)
[e812f81]7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 *    notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 *    notice, this list of conditions and the following disclaimer in the
15 *    documentation and/or other materials provided with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 * POSSIBILITY OF SUCH DAMAGE.
28 */
29
30/*
[ced13022]31 * This file is part of the RTEMS quality process and was automatically
32 * generated.  If you find something that needs to be fixed or
33 * worded better please post a report or patch to an RTEMS mailing list
34 * or raise a bug report:
[e697baf]35 *
[a6689fb1]36 * https://www.rtems.org/bugs.html
[e697baf]37 *
[a6689fb1]38 * For information on updating and regenerating please refer to the How-To
39 * section in the Software Requirements Engineering chapter of the
40 * RTEMS Software Engineering manual.  The manual is provided as a part of
41 * a release.  For development sources please refer to the online
42 * documentation at:
[e812f81]43 *
[a6689fb1]44 * https://docs.rtems.org
[e812f81]45 */
46
47/**
48 * @defgroup RTEMSApplConfig Application Configuration Options
49 *
50 * @ingroup RTEMSAPI
51 */
52
[e697baf]53/* Generated from spec:/acfg/if/group-bdbuf */
54
[e812f81]55/**
[4e5327ff]56 * @defgroup RTEMSApplConfigBlockDeviceCacheConfiguration \
57 *   Block Device Cache Configuration
[e812f81]58 *
59 * @ingroup RTEMSApplConfig
60 *
61 * This section describes configuration options related to the Block Device
62 * Cache (bdbuf).
63 *
64 * @{
65 */
66
[e697baf]67/* Generated from spec:/acfg/if/appl-needs-libblock */
68
[e812f81]69/**
70 * @brief This configuration option is a boolean feature define.
71 *
72 * In case this configuration option is defined, then the Block Device Cache is
73 * initialized during system initialization.
74 *
75 * @par Default Configuration
76 * If this configuration option is undefined, then the described feature is not
77 * enabled.
78 *
79 * @par Notes
80 * Each option of the Block Device Cache (bdbuf) configuration can be
81 * explicitly set by the user with the configuration options below.  The Block
82 * Device Cache is used for example by the RFS and DOSFS filesystems.
83 */
84#define CONFIGURE_APPLICATION_NEEDS_LIBBLOCK
85
[e697baf]86/* Generated from spec:/acfg/if/bdbuf-buffer-max-size */
87
[e812f81]88/**
89 * @brief This configuration option is an integer define.
90 *
91 * The value of this configuration option defines the maximum size of a buffer
92 * in bytes.
93 *
94 * @par Default Value
95 * The default value is 4096.
96 *
97 * @par Value Constraints
98 * @parblock
99 * The value of this configuration option shall satisfy all of the following
100 * constraints:
101 *
[eefe7009]102 * * It shall be greater than or equal to zero.
[e812f81]103 *
104 * * It shall be an integral multiple of #CONFIGURE_BDBUF_BUFFER_MIN_SIZE.
105 * @endparblock
106 */
107#define CONFIGURE_BDBUF_BUFFER_MAX_SIZE
108
[e697baf]109/* Generated from spec:/acfg/if/bdbuf-buffer-min-size */
110
[e812f81]111/**
112 * @brief This configuration option is an integer define.
113 *
114 * The value of this configuration option defines the minimum size of a buffer
115 * in bytes.
116 *
117 * @par Default Value
118 * The default value is 512.
119 *
120 * @par Value Constraints
[eefe7009]121 * @parblock
122 * The value of this configuration option shall satisfy all of the following
123 * constraints:
124 *
125 * * It shall be greater than or equal to zero.
126 *
127 * * It shall be less than or equal to <a
128 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
129 * @endparblock
[e812f81]130 */
131#define CONFIGURE_BDBUF_BUFFER_MIN_SIZE
132
[e697baf]133/* Generated from spec:/acfg/if/bdbuf-cache-memory-size */
134
[e812f81]135/**
136 * @brief This configuration option is an integer define.
137 *
138 * The value of this configuration option defines the size of the cache memory
139 * in bytes.
140 *
141 * @par Default Value
142 * The default value is 32768.
143 *
144 * @par Value Constraints
[eefe7009]145 * @parblock
146 * The value of this configuration option shall satisfy all of the following
147 * constraints:
148 *
149 * * It shall be greater than or equal to zero.
150 *
151 * * It shall be less than or equal to <a
152 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
153 * @endparblock
[e812f81]154 */
155#define CONFIGURE_BDBUF_CACHE_MEMORY_SIZE
156
[e697baf]157/* Generated from spec:/acfg/if/bdbuf-max-read-ahead-blocks */
158
[e812f81]159/**
160 * @brief This configuration option is an integer define.
161 *
162 * The value of this configuration option defines the maximum blocks per
163 * read-ahead request.
164 *
165 * @par Default Value
166 * The default value is 0.
167 *
168 * @par Value Constraints
[eefe7009]169 * @parblock
170 * The value of this configuration option shall satisfy all of the following
171 * constraints:
172 *
173 * * It shall be greater than or equal to zero.
174 *
175 * * It shall be less than or equal to <a
176 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
177 * @endparblock
[e812f81]178 *
179 * @par Notes
180 * A value of 0 disables the read-ahead task (default).  The read-ahead task
181 * will issue speculative read transfers if a sequential access pattern is
182 * detected.  This can improve the performance on some systems.
183 */
184#define CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS
185
[e697baf]186/* Generated from spec:/acfg/if/bdbuf-max-write-blocks */
187
[e812f81]188/**
189 * @brief This configuration option is an integer define.
190 *
191 * The value of this configuration option defines the maximum blocks per write
192 * request.
193 *
194 * @par Default Value
195 * The default value is 16.
196 *
197 * @par Value Constraints
[eefe7009]198 * @parblock
199 * The value of this configuration option shall satisfy all of the following
200 * constraints:
201 *
202 * * It shall be greater than or equal to zero.
203 *
204 * * It shall be less than or equal to <a
205 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
206 * @endparblock
[e812f81]207 */
208#define CONFIGURE_BDBUF_MAX_WRITE_BLOCKS
209
[e697baf]210/* Generated from spec:/acfg/if/bdbuf-read-ahead-task-priority */
211
[e812f81]212/**
213 * @brief This configuration option is an integer define.
214 *
215 * The value of this configuration option defines the read-ahead task priority.
216 *
217 * @par Default Value
218 * The default value is 15.
219 *
220 * @par Value Constraints
221 * The value of this configuration option shall be a valid Classic API task
[eefe7009]222 * priority.  The set of valid task priorities depends on the scheduler
223 * configuration.
[e812f81]224 */
225#define CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY
226
[e697baf]227/* Generated from spec:/acfg/if/bdbuf-task-stack-size */
228
[e812f81]229/**
230 * @brief This configuration option is an integer define.
231 *
232 * The value of this configuration option defines the task stack size of the
233 * Block Device Cache tasks in bytes.
234 *
235 * @par Default Value
236 * The default value is #RTEMS_MINIMUM_STACK_SIZE.
237 *
238 * @par Value Constraints
239 * @parblock
240 * The value of this configuration option shall satisfy all of the following
241 * constraints:
242 *
243 * * It shall be greater than or equal to #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
244 *
245 * * It shall be less than or equal to a BSP-specific and application-specific
246 *   value which depends on the size of the memory available to the
247 *   application.
248 *
249 * * It shall be small enough so that the task stack space calculation carried
250 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
251 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
252 * @endparblock
253 */
254#define CONFIGURE_BDBUF_TASK_STACK_SIZE
255
[e697baf]256/* Generated from spec:/acfg/if/bdbuf-swapout-block-hold */
257
[e812f81]258/**
259 * @brief This configuration option is an integer define.
260 *
261 * The value of this configuration option defines the swapout task maximum
262 * block hold time in milliseconds.
263 *
264 * @par Default Value
265 * The default value is 1000.
266 *
267 * @par Value Constraints
[eefe7009]268 * @parblock
269 * The value of this configuration option shall satisfy all of the following
270 * constraints:
271 *
272 * * It shall be greater than or equal to zero.
273 *
274 * * It shall be less than or equal to <a
275 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
276 * @endparblock
[e812f81]277 */
278#define CONFIGURE_SWAPOUT_BLOCK_HOLD
279
[e697baf]280/* Generated from spec:/acfg/if/bdbuf-swapout-swap-period */
281
[e812f81]282/**
283 * @brief This configuration option is an integer define.
284 *
285 * The value of this configuration option defines the swapout task swap period
286 * in milliseconds.
287 *
288 * @par Default Value
289 * The default value is 250.
290 *
291 * @par Value Constraints
[eefe7009]292 * @parblock
293 * The value of this configuration option shall satisfy all of the following
294 * constraints:
295 *
296 * * It shall be greater than or equal to zero.
297 *
298 * * It shall be less than or equal to <a
299 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
300 * @endparblock
[e812f81]301 */
302#define CONFIGURE_SWAPOUT_SWAP_PERIOD
303
[e697baf]304/* Generated from spec:/acfg/if/bdbuf-swapout-task-priority */
305
[e812f81]306/**
307 * @brief This configuration option is an integer define.
308 *
309 * The value of this configuration option defines the swapout task priority.
310 *
311 * @par Default Value
312 * The default value is 15.
313 *
314 * @par Value Constraints
315 * The value of this configuration option shall be a valid Classic API task
[eefe7009]316 * priority.  The set of valid task priorities depends on the scheduler
317 * configuration.
[e812f81]318 */
319#define CONFIGURE_SWAPOUT_TASK_PRIORITY
320
[e697baf]321/* Generated from spec:/acfg/if/bdbuf-swapout-worker-tasks */
322
[e812f81]323/**
324 * @brief This configuration option is an integer define.
325 *
326 * The value of this configuration option defines the swapout worker task
327 * count.
328 *
329 * @par Default Value
330 * The default value is 0.
331 *
332 * @par Value Constraints
[eefe7009]333 * @parblock
334 * The value of this configuration option shall satisfy all of the following
335 * constraints:
336 *
337 * * It shall be greater than or equal to zero.
338 *
339 * * It shall be less than or equal to <a
340 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
341 * @endparblock
[e812f81]342 */
343#define CONFIGURE_SWAPOUT_WORKER_TASKS
344
[e697baf]345/* Generated from spec:/acfg/if/bdbuf-swapout-worker-taskp-riority */
346
[e812f81]347/**
348 * @brief This configuration option is an integer define.
349 *
350 * The value of this configuration option defines the swapout worker task
351 * priority.
352 *
353 * @par Default Value
354 * The default value is 15.
355 *
356 * @par Value Constraints
357 * The value of this configuration option shall be a valid Classic API task
[eefe7009]358 * priority.  The set of valid task priorities depends on the scheduler
359 * configuration.
[e812f81]360 */
361#define CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY
362
363/** @} */
364
[e697baf]365/* Generated from spec:/acfg/if/group-bsp */
366
[e812f81]367/**
[4e5327ff]368 * @defgroup RTEMSApplConfigBSPRelatedConfigurationOptions \
369 *   BSP Related Configuration Options
[e812f81]370 *
371 * @ingroup RTEMSApplConfig
372 *
373 * This section describes configuration options related to the BSP.  Some
374 * configuration options may have a BSP-specific setting which is defined by
375 * ``<bsp.h>``.  The BSP-specific settings can be disabled by the
376 * #CONFIGURE_DISABLE_BSP_SETTINGS configuration option.
377 *
378 * @{
379 */
380
[e697baf]381/* Generated from spec:/acfg/if/bsp-idle-task-body */
382
[e812f81]383/**
384 * @brief This configuration option is an initializer define.
385 *
386 * If
387 *
388 * * this configuration option is defined by the BSP
389 *
390 * * and #CONFIGURE_DISABLE_BSP_SETTINGS is undefined,
391 *
392 * then the value of this configuration option defines the default value of
393 * #CONFIGURE_IDLE_TASK_BODY.
394 *
395 * @par Default Value
396 * The default value is BSP-specific.
397 *
398 * @par Value Constraints
399 * The value of this configuration option shall be defined to a valid function
400 * pointer of the type ``void *( *idle_body )( uintptr_t )``.
401 *
402 * @par Notes
403 * As it has knowledge of the specific CPU model, system controller logic, and
404 * peripheral buses, a BSP-specific IDLE task may be capable of turning
405 * components off to save power during extended periods of no task activity.
406 */
407#define BSP_IDLE_TASK_BODY
408
[e697baf]409/* Generated from spec:/acfg/if/bsp-idle-task-stack-size */
410
[e812f81]411/**
412 * @brief This configuration option is an integer define.
413 *
414 * If
415 *
416 * * this configuration option is defined by the BSP
417 *
418 * * and #CONFIGURE_DISABLE_BSP_SETTINGS is undefined,
419 *
420 * then the value of this configuration option defines the default value of
421 * #CONFIGURE_IDLE_TASK_STACK_SIZE.
422 *
423 * @par Default Value
424 * The default value is BSP-specific.
425 *
426 * @par Value Constraints
427 * @parblock
428 * The value of this configuration option shall satisfy all of the following
429 * constraints:
430 *
431 * * It shall be greater than or equal to a BSP-specific and
432 *   application-specific minimum value.
433 *
434 * * It shall be small enough so that the IDLE task stack area calculation
435 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
436 *   <a href="https://en.cppreference.com/w/c/types/size_t">size_t</a>.
437 * @endparblock
438 */
439#define BSP_IDLE_TASK_STACK_SIZE
440
[e697baf]441/* Generated from spec:/acfg/if/bsp-initial-extension */
442
[e812f81]443/**
444 * @brief This configuration option is an initializer define.
445 *
446 * If
447 *
448 * * this configuration option is defined by the BSP
449 *
450 * * and #CONFIGURE_DISABLE_BSP_SETTINGS is undefined,
451 *
452 * then the value of this configuration option is used to initialize the table
453 * of initial user extensions.
454 *
455 * @par Default Value
456 * The default value is BSP-specific.
457 *
458 * @par Value Constraints
459 * The value of this configuration option shall be a list of initializers for
460 * structures of type ::rtems_extensions_table.
461 *
462 * @par Notes
463 * The value of this configuration option is placed after the entries of all
464 * other initial user extensions.
465 */
466#define BSP_INITIAL_EXTENSION
467
[e697baf]468/* Generated from spec:/acfg/if/bsp-interrupt-stack-size */
469
[e812f81]470/**
471 * @brief This configuration option is an integer define.
472 *
473 * If
474 *
475 * * this configuration option is defined by the BSP
476 *
477 * * and #CONFIGURE_DISABLE_BSP_SETTINGS is undefined,
478 *
479 * then the value of this configuration option defines the default value of
480 * #CONFIGURE_INTERRUPT_STACK_SIZE.
481 *
482 * @par Default Value
483 * The default value is BSP-specific.
484 *
485 * @par Value Constraints
486 * @parblock
487 * The value of this configuration option shall satisfy all of the following
488 * constraints:
489 *
490 * * It shall be greater than or equal to a BSP-specific and
491 *   application-specific minimum value.
492 *
493 * * It shall be small enough so that the interrupt stack area calculation
494 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
495 *   <a href="https://en.cppreference.com/w/c/types/size_t">size_t</a>.
496 *
497 * * It shall be aligned according to #CPU_INTERRUPT_STACK_ALIGNMENT.
498 * @endparblock
499 */
500#define BSP_INTERRUPT_STACK_SIZE
501
[e697baf]502/* Generated from spec:/acfg/if/bsp-prerequisite-drivers */
503
[e812f81]504/**
505 * @brief This configuration option is an initializer define.
506 *
507 * If
508 *
509 * * this configuration option is defined by the BSP
510 *
511 * * and #CONFIGURE_DISABLE_BSP_SETTINGS is undefined,
512 *
[901136e]513 * then the value of this configuration option is used to add BSP-provided
514 * prerequisite drivers to the Device Driver Table.
[e812f81]515 *
516 * @par Default Value
517 * The default value is BSP-specific.
518 *
519 * @par Value Constraints
520 * The value of this configuration option shall be a list of initializers for
521 * structures of type ::rtems_extensions_table.
522 *
523 * @par Notes
524 * The value of this configuration option is placed before the entries of all
525 * other initial user extensions (including
526 * #CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS).
527 */
528#define CONFIGURE_BSP_PREREQUISITE_DRIVERS
529
[e697baf]530/* Generated from spec:/acfg/if/disable-bsp-settings */
531
[e812f81]532/**
533 * @brief This configuration option is a boolean feature define.
534 *
535 * In case this configuration option is defined, then the following BSP related
536 * configuration options are undefined:
537 *
538 * * #BSP_IDLE_TASK_BODY
539 *
540 * * #BSP_IDLE_TASK_STACK_SIZE
541 *
542 * * #BSP_INITIAL_EXTENSION
543 *
544 * * #BSP_INTERRUPT_STACK_SIZE
545 *
546 * * #CONFIGURE_BSP_PREREQUISITE_DRIVERS
547 *
548 * * #CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK
549 *
550 * @par Default Configuration
551 * If this configuration option is undefined, then the described feature is not
552 * enabled.
553 */
554#define CONFIGURE_DISABLE_BSP_SETTINGS
555
[e697baf]556/* Generated from spec:/acfg/if/malloc-bsp-supports-sbrk */
557
[e812f81]558/**
559 * @brief This configuration option is a boolean feature define.
560 *
561 * If
562 *
563 * * this configuration option is defined by the BSP
564 *
565 * * and #CONFIGURE_DISABLE_BSP_SETTINGS is undefined,
566 *
567 * then not all memory is made available to the C Program Heap immediately at
568 * system initialization time.  When malloc() or other standard memory
569 * allocation functions are unable to allocate memory, they will call the BSP
570 * supplied sbrk() function to obtain more memory.
571 *
572 * @par Default Configuration
573 * If this configuration option is undefined, then the described feature is not
574 * enabled.
575 *
576 * @par Notes
577 * This option should not be defined by the application. Only the BSP knows how
578 * it allocates memory to the C Program Heap.
579 */
580#define CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK
581
582/** @} */
583
[e697baf]584/* Generated from spec:/acfg/if/group-classic */
585
[e812f81]586/**
587 * @defgroup RTEMSApplConfigClassicAPIConfiguration Classic API Configuration
588 *
589 * @ingroup RTEMSApplConfig
590 *
591 * This section describes configuration options related to the Classic API.
592 *
593 * @{
594 */
595
[e697baf]596/* Generated from spec:/acfg/if/max-barriers */
597
[e812f81]598/**
599 * @brief This configuration option is an integer define.
600 *
601 * The value of this configuration option defines the maximum number of Classic
602 * API Barriers that can be concurrently active.
603 *
604 * @par Default Value
605 * The default value is 0.
606 *
607 * @par Value Constraints
608 * @parblock
609 * The value of this configuration option shall satisfy all of the following
610 * constraints:
611 *
[eefe7009]612 * * It shall be greater than or equal to zero.
[e812f81]613 *
614 * * It shall be less than or equal to 65535.
615 *
616 * * It shall be less than or equal to a BSP-specific and application-specific
617 *   value which depends on the size of the memory available to the
618 *   application.
619 *
620 * * It may be defined through rtems_resource_unlimited() the enable unlimited
[eefe7009]621 *   objects for the object class, if the value passed to
622 *   rtems_resource_unlimited() satisfies all other constraints of the
[e812f81]623 *   configuration option.
624 * @endparblock
625 *
626 * @par Notes
627 * This object class can be configured in unlimited allocation mode, see <a
628 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
629 * Objects</a>.
630 */
631#define CONFIGURE_MAXIMUM_BARRIERS
632
[e697baf]633/* Generated from spec:/acfg/if/max-message-queues */
634
[e812f81]635/**
636 * @brief This configuration option is an integer define.
637 *
638 * The value of this configuration option defines the maximum number of Classic
639 * API Message Queues that can be concurrently active.
640 *
641 * @par Default Value
642 * The default value is 0.
643 *
644 * @par Value Constraints
645 * @parblock
646 * The value of this configuration option shall satisfy all of the following
647 * constraints:
648 *
[eefe7009]649 * * It shall be greater than or equal to zero.
[e812f81]650 *
651 * * It shall be less than or equal to 65535.
652 *
653 * * It shall be less than or equal to a BSP-specific and application-specific
654 *   value which depends on the size of the memory available to the
655 *   application.
656 *
657 * * It may be defined through rtems_resource_unlimited() the enable unlimited
[eefe7009]658 *   objects for the object class, if the value passed to
659 *   rtems_resource_unlimited() satisfies all other constraints of the
[e812f81]660 *   configuration option.
661 * @endparblock
662 *
663 * @par Notes
664 * This object class can be configured in unlimited allocation mode, see <a
665 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
666 * Objects</a>.  You have to account for the memory used to store the messages
667 * of each message queue, see #CONFIGURE_MESSAGE_BUFFER_MEMORY.
668 */
669#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES
670
[e697baf]671/* Generated from spec:/acfg/if/max-partitions */
672
[e812f81]673/**
674 * @brief This configuration option is an integer define.
675 *
676 * The value of this configuration option defines the maximum number of Classic
677 * API Partitions that can be concurrently active.
678 *
679 * @par Default Value
680 * The default value is 0.
681 *
682 * @par Value Constraints
683 * @parblock
684 * The value of this configuration option shall satisfy all of the following
685 * constraints:
686 *
[eefe7009]687 * * It shall be greater than or equal to zero.
[e812f81]688 *
689 * * It shall be less than or equal to 65535.
690 *
691 * * It shall be less than or equal to a BSP-specific and application-specific
692 *   value which depends on the size of the memory available to the
693 *   application.
694 *
695 * * It may be defined through rtems_resource_unlimited() the enable unlimited
[eefe7009]696 *   objects for the object class, if the value passed to
697 *   rtems_resource_unlimited() satisfies all other constraints of the
[e812f81]698 *   configuration option.
699 * @endparblock
700 *
701 * @par Notes
702 * This object class can be configured in unlimited allocation mode, see <a
703 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
704 * Objects</a>.
705 */
706#define CONFIGURE_MAXIMUM_PARTITIONS
707
[e697baf]708/* Generated from spec:/acfg/if/max-periods */
709
[e812f81]710/**
711 * @brief This configuration option is an integer define.
712 *
713 * The value of this configuration option defines the maximum number of Classic
714 * API Periods that can be concurrently active.
715 *
716 * @par Default Value
717 * The default value is 0.
718 *
719 * @par Value Constraints
720 * @parblock
721 * The value of this configuration option shall satisfy all of the following
722 * constraints:
723 *
[eefe7009]724 * * It shall be greater than or equal to zero.
[e812f81]725 *
726 * * It shall be less than or equal to 65535.
727 *
728 * * It shall be less than or equal to a BSP-specific and application-specific
729 *   value which depends on the size of the memory available to the
730 *   application.
731 *
732 * * It may be defined through rtems_resource_unlimited() the enable unlimited
[eefe7009]733 *   objects for the object class, if the value passed to
734 *   rtems_resource_unlimited() satisfies all other constraints of the
[e812f81]735 *   configuration option.
736 * @endparblock
737 *
738 * @par Notes
739 * This object class can be configured in unlimited allocation mode, see <a
740 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
741 * Objects</a>.
742 */
743#define CONFIGURE_MAXIMUM_PERIODS
744
[e697baf]745/* Generated from spec:/acfg/if/max-ports */
746
[e812f81]747/**
748 * @brief This configuration option is an integer define.
749 *
750 * The value of this configuration option defines the maximum number of Classic
751 * API Ports that can be concurrently active.
752 *
753 * @par Default Value
754 * The default value is 0.
755 *
756 * @par Value Constraints
757 * @parblock
758 * The value of this configuration option shall satisfy all of the following
759 * constraints:
760 *
[eefe7009]761 * * It shall be greater than or equal to zero.
[e812f81]762 *
763 * * It shall be less than or equal to 65535.
764 *
765 * * It shall be less than or equal to a BSP-specific and application-specific
766 *   value which depends on the size of the memory available to the
767 *   application.
768 *
769 * * It may be defined through rtems_resource_unlimited() the enable unlimited
[eefe7009]770 *   objects for the object class, if the value passed to
771 *   rtems_resource_unlimited() satisfies all other constraints of the
[e812f81]772 *   configuration option.
773 * @endparblock
774 *
775 * @par Notes
776 * This object class can be configured in unlimited allocation mode, see <a
777 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
778 * Objects</a>.
779 */
780#define CONFIGURE_MAXIMUM_PORTS
781
[e697baf]782/* Generated from spec:/acfg/if/max-regions */
783
[e812f81]784/**
785 * @brief This configuration option is an integer define.
786 *
787 * The value of this configuration option defines the maximum number of Classic
788 * API Regions that can be concurrently active.
789 *
790 * @par Default Value
791 * The default value is 0.
792 *
793 * @par Value Constraints
794 * @parblock
795 * The value of this configuration option shall satisfy all of the following
796 * constraints:
797 *
[eefe7009]798 * * It shall be greater than or equal to zero.
[e812f81]799 *
800 * * It shall be less than or equal to 65535.
801 *
802 * * It shall be less than or equal to a BSP-specific and application-specific
803 *   value which depends on the size of the memory available to the
804 *   application.
805 *
806 * * It may be defined through rtems_resource_unlimited() the enable unlimited
[eefe7009]807 *   objects for the object class, if the value passed to
808 *   rtems_resource_unlimited() satisfies all other constraints of the
[e812f81]809 *   configuration option.
810 * @endparblock
811 *
812 * @par Notes
813 * This object class can be configured in unlimited allocation mode, see <a
814 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
815 * Objects</a>.
816 */
817#define CONFIGURE_MAXIMUM_REGIONS
818
[e697baf]819/* Generated from spec:/acfg/if/max-semaphores */
820
[e812f81]821/**
822 * @brief This configuration option is an integer define.
823 *
824 * The value of this configuration option defines the maximum number of Classic
825 * API Semaphore that can be concurrently active.
826 *
827 * @par Default Value
828 * The default value is 0.
829 *
830 * @par Value Constraints
831 * @parblock
832 * The value of this configuration option shall satisfy all of the following
833 * constraints:
834 *
[eefe7009]835 * * It shall be greater than or equal to zero.
[e812f81]836 *
837 * * It shall be less than or equal to 65535.
838 *
839 * * It shall be less than or equal to a BSP-specific and application-specific
840 *   value which depends on the size of the memory available to the
841 *   application.
842 *
843 * * It may be defined through rtems_resource_unlimited() the enable unlimited
[eefe7009]844 *   objects for the object class, if the value passed to
845 *   rtems_resource_unlimited() satisfies all other constraints of the
[e812f81]846 *   configuration option.
847 * @endparblock
848 *
849 * @par Notes
850 * @parblock
851 * This object class can be configured in unlimited allocation mode, see <a
852 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
853 * Objects</a>.
854 *
855 * In SMP configurations, the size of a Semaphore Control Block depends on the
856 * scheduler count (see <a
857 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html#configuration-step-3-scheduler-table>Configuration
858 * Step 3 - Scheduler Table</a>).  The semaphores using the <a
859 * href=https://docs.rtems.org/branches/master/c-user/key_concepts.html#multiprocessor-resource-sharing-protocol-mrsp>Multiprocessor
860 * Resource Sharing Protocol (MrsP)</a> need a ceiling priority per scheduler.
861 * @endparblock
862 */
863#define CONFIGURE_MAXIMUM_SEMAPHORES
864
[e697baf]865/* Generated from spec:/acfg/if/max-tasks */
866
[e812f81]867/**
868 * @brief This configuration option is an integer define.
869 *
870 * The value of this configuration option defines the maximum number of Classic
871 * API Tasks that can be concurrently active.
872 *
873 * @par Default Value
874 * The default value is 0.
875 *
876 * @par Value Constraints
877 * @parblock
878 * The value of this configuration option shall satisfy all of the following
879 * constraints:
880 *
[eefe7009]881 * * It shall be greater than or equal to zero.
[e812f81]882 *
883 * * It shall be less than or equal to 65535.
884 *
885 * * It shall be less than or equal to a BSP-specific and application-specific
886 *   value which depends on the size of the memory available to the
887 *   application.
888 *
889 * * It shall be small enough so that the task stack space calculation carried
890 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
891 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
892 *
893 * * It may be defined through rtems_resource_unlimited() the enable unlimited
[eefe7009]894 *   objects for the object class, if the value passed to
895 *   rtems_resource_unlimited() satisfies all other constraints of the
[e812f81]896 *   configuration option.
897 * @endparblock
898 *
899 * @par Notes
900 * @parblock
901 * This object class can be configured in unlimited allocation mode, see <a
902 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
903 * Objects</a>.
904 *
905 * The calculations for the required memory in the RTEMS Workspace for tasks
906 * assume that each task has a minimum stack size and has floating point
907 * support enabled.  The configuration option #CONFIGURE_EXTRA_TASK_STACKS is
908 * used to specify task stack requirements *above* the minimum size required.
909 *
910 * The maximum number of POSIX threads is specified by
911 * #CONFIGURE_MAXIMUM_POSIX_THREADS.
912 *
913 * A future enhancement to ``<rtems/confdefs.h>`` could be to eliminate the
914 * assumption that all tasks have floating point enabled. This would require
915 * the addition of a new configuration parameter to specify the number of tasks
916 * which enable floating point support.
917 * @endparblock
918 */
919#define CONFIGURE_MAXIMUM_TASKS
920
[e697baf]921/* Generated from spec:/acfg/if/max-timers */
922
[e812f81]923/**
924 * @brief This configuration option is an integer define.
925 *
926 * The value of this configuration option defines the maximum number of Classic
927 * API Timers that can be concurrently active.
928 *
929 * @par Default Value
930 * The default value is 0.
931 *
932 * @par Value Constraints
933 * @parblock
934 * The value of this configuration option shall satisfy all of the following
935 * constraints:
936 *
[eefe7009]937 * * It shall be greater than or equal to zero.
[e812f81]938 *
939 * * It shall be less than or equal to 65535.
940 *
941 * * It shall be less than or equal to a BSP-specific and application-specific
942 *   value which depends on the size of the memory available to the
943 *   application.
944 *
945 * * It may be defined through rtems_resource_unlimited() the enable unlimited
[eefe7009]946 *   objects for the object class, if the value passed to
947 *   rtems_resource_unlimited() satisfies all other constraints of the
[e812f81]948 *   configuration option.
949 * @endparblock
950 *
951 * @par Notes
952 * This object class can be configured in unlimited allocation mode, see <a
953 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
954 * Objects</a>.
955 */
956#define CONFIGURE_MAXIMUM_TIMERS
957
[e697baf]958/* Generated from spec:/acfg/if/max-user-extensions */
959
[e812f81]960/**
961 * @brief This configuration option is an integer define.
962 *
963 * The value of this configuration option defines the maximum number of Classic
964 * API User Extensions that can be concurrently active.
965 *
966 * @par Default Value
967 * The default value is 0.
968 *
969 * @par Value Constraints
970 * @parblock
971 * The value of this configuration option shall satisfy all of the following
972 * constraints:
973 *
[eefe7009]974 * * It shall be greater than or equal to zero.
[e812f81]975 *
976 * * It shall be less than or equal to 65535.
977 *
978 * * It shall be less than or equal to a BSP-specific and application-specific
979 *   value which depends on the size of the memory available to the
980 *   application.
981 * @endparblock
982 *
983 * @par Notes
984 * This object class cannot be configured in unlimited allocation mode.
985 */
986#define CONFIGURE_MAXIMUM_USER_EXTENSIONS
987
[e697baf]988/* Generated from spec:/acfg/if/min-tasks-with-user-provided-storage */
989
[6942e5f]990/**
991 * @brief This configuration option is an integer define.
992 *
993 * The value of this configuration option defines the minimum count of Classic
994 * API Tasks which are constructed by rtems_task_construct().
995 *
996 * @par Default Value
997 * The default value is 0.
998 *
999 * @par Value Constraints
[eefe7009]1000 * @parblock
1001 * The value of this configuration option shall satisfy all of the following
1002 * constraints:
1003 *
1004 * * It shall be greater than or equal to zero.
1005 *
1006 * * It shall be less than or equal to #CONFIGURE_MAXIMUM_TASKS.
1007 * @endparblock
[6942e5f]1008 *
1009 * @par Notes
1010 * By default, the calculation for the required memory in the RTEMS Workspace
1011 * for tasks assumes that all Classic API Tasks are created by
1012 * rtems_task_create().  This configuration option can be used to reduce the
1013 * required memory for the system-provided task storage areas since tasks
1014 * constructed by rtems_task_construct() use a user-provided task storage area.
1015 */
1016#define CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE
1017
[e812f81]1018/** @} */
1019
[e697baf]1020/* Generated from spec:/acfg/if/group-classicinit */
1021
[e812f81]1022/**
[4e5327ff]1023 * @defgroup RTEMSApplConfigClassicAPIInitializationTaskConfiguration \
1024 *   Classic API Initialization Task Configuration
[e812f81]1025 *
1026 * @ingroup RTEMSApplConfig
1027 *
1028 * This section describes configuration options related to the Classic API
1029 * initialization task.
1030 *
1031 * @{
1032 */
1033
[e697baf]1034/* Generated from spec:/acfg/if/init-task-arguments */
1035
[e812f81]1036/**
1037 * @brief This configuration option is an integer define.
1038 *
1039 * The value of this configuration option defines task argument of the Classic
1040 * API initialization task.
1041 *
1042 * @par Default Value
1043 * The default value is 0.
1044 *
1045 * @par Value Constraints
[eefe7009]1046 * The value of this configuration option shall be convertible to an integer of
1047 * type ::rtems_task_argument.
[e812f81]1048 */
1049#define CONFIGURE_INIT_TASK_ARGUMENTS
1050
[e697baf]1051/* Generated from spec:/acfg/if/init-task-attributes */
1052
[e812f81]1053/**
1054 * @brief This configuration option is an integer define.
1055 *
1056 * The value of this configuration option defines the task attributes of the
1057 * Classic API initialization task.
1058 *
1059 * @par Default Value
1060 * The default value is #RTEMS_DEFAULT_ATTRIBUTES.
1061 *
1062 * @par Value Constraints
1063 * The value of this configuration option shall be a valid task attribute set.
1064 */
1065#define CONFIGURE_INIT_TASK_ATTRIBUTES
1066
[657e30c1]1067/* Generated from spec:/acfg/if/init-task-construct-storage-size */
1068
1069/**
1070 * @brief This configuration option is an integer define.
1071 *
1072 * The value of this configuration option defines the task storage size of the
1073 * Classic API initialization task.
1074 *
1075 * @par Default Value
[6e566bad]1076 * This configuration option has no default value.  If it is not specified,
1077 * then the Classic API initialization task will be created with the stack size
1078 * defined by the #CONFIGURE_INIT_TASK_STACK_SIZE configuration option.
[657e30c1]1079 *
1080 * @par Value Constraints
1081 * @parblock
1082 * The value of this configuration option shall satisfy all of the following
1083 * constraints:
1084 *
1085 * * It shall be greater than or equal to #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
1086 *
1087 * * It shall be defined using RTEMS_TASK_STORAGE_SIZE().
1088 * @endparblock
1089 *
1090 * @par Notes
1091 * @parblock
1092 * If this configuration option is specified, then
1093 *
1094 * * a task storage area of the specified size is statically allocated by
1095 *   ``<rtems/confdefs.h>`` for the Classic API initialization task,
1096 *
1097 * * the Classic API initialization task is constructed by
1098 *   rtems_task_construct() instead of using rtems_task_create(),
1099 *
1100 * * the maximum thread-local storage size defined by
1101 *   #CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE is used for the Classic API
1102 *   initialization task,
1103 *
1104 * * the Classic API initialization task should be accounted for in
1105 *   #CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE, and
1106 *
1107 * * the task storage area used for the Classic API initialization task is not
[6e566bad]1108 *   reclaimed by the system if the task is deleted.
[657e30c1]1109 *
1110 * The
1111 *
1112 * * #CONFIGURE_INIT_TASK_STACK_SIZE and
1113 *
1114 * * ``CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE``
1115 *
1116 * configuration options are mutually exclusive.
1117 * @endparblock
1118 */
1119#define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE
1120
[e697baf]1121/* Generated from spec:/acfg/if/init-task-entrypoint */
1122
[e812f81]1123/**
1124 * @brief This configuration option is an initializer define.
1125 *
1126 * The value of this configuration option initializes the entry point of the
1127 * Classic API initialization task.
1128 *
1129 * @par Default Value
1130 * The default value is ``Init``.
1131 *
1132 * @par Value Constraints
1133 * The value of this configuration option shall be defined to a valid function
1134 * pointer of the type ``void ( *entry_point )( rtems_task_argument )``.
1135 *
1136 * @par Notes
1137 * The application shall provide the function referenced by this configuration
1138 * option.
1139 */
1140#define CONFIGURE_INIT_TASK_ENTRY_POINT
1141
[e697baf]1142/* Generated from spec:/acfg/if/init-task-initial-modes */
1143
[e812f81]1144/**
1145 * @brief This configuration option is an integer define.
1146 *
1147 * The value of this configuration option defines the initial execution mode of
1148 * the Classic API initialization task.
1149 *
1150 * @par Default Value
1151 * In SMP  configurations, the default value is #RTEMS_DEFAULT_MODES otherwise
1152 * the default value is #RTEMS_NO_PREEMPT.
1153 *
1154 * @par Value Constraints
1155 * The value of this configuration option shall be a valid task mode set.
1156 */
1157#define CONFIGURE_INIT_TASK_INITIAL_MODES
1158
[e697baf]1159/* Generated from spec:/acfg/if/init-task-name */
1160
[e812f81]1161/**
1162 * @brief This configuration option is an integer define.
1163 *
1164 * The value of this configuration option defines the name of the Classic API
1165 * initialization task.
1166 *
1167 * @par Default Value
1168 * The default value is ``rtems_build_name( 'U', 'I', '1', ' ' )``.
1169 *
1170 * @par Value Constraints
[eefe7009]1171 * The value of this configuration option shall be convertible to an integer of
1172 * type ::rtems_name.
[e812f81]1173 *
1174 * @par Notes
1175 * Use rtems_build_name() to define the task name.
1176 */
1177#define CONFIGURE_INIT_TASK_NAME
1178
[e697baf]1179/* Generated from spec:/acfg/if/init-task-priority */
1180
[e812f81]1181/**
1182 * @brief This configuration option is an integer define.
1183 *
1184 * The value of this configuration option defines the initial priority of the
1185 * Classic API initialization task.
1186 *
1187 * @par Default Value
1188 * The default value is 1.
1189 *
1190 * @par Value Constraints
1191 * The value of this configuration option shall be a valid Classic API task
[eefe7009]1192 * priority.  The set of valid task priorities depends on the scheduler
1193 * configuration.
[e812f81]1194 */
1195#define CONFIGURE_INIT_TASK_PRIORITY
1196
[e697baf]1197/* Generated from spec:/acfg/if/init-task-stack-size */
1198
[e812f81]1199/**
1200 * @brief This configuration option is an integer define.
1201 *
1202 * The value of this configuration option defines the task stack size of the
1203 * Classic API initialization task.
1204 *
1205 * @par Default Value
1206 * The default value is #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
1207 *
1208 * @par Value Constraints
1209 * @parblock
1210 * The value of this configuration option shall satisfy all of the following
1211 * constraints:
1212 *
1213 * * It shall be greater than or equal to #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
1214 *
1215 * * It shall be small enough so that the task stack space calculation carried
1216 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
1217 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
1218 * @endparblock
[657e30c1]1219 *
1220 * @par Notes
1221 * @parblock
1222 * The
1223 *
1224 * * ``CONFIGURE_INIT_TASK_STACK_SIZE`` and
1225 *
1226 * * #CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE
1227 *
1228 * configuration options are mutually exclusive.
1229 * @endparblock
[e812f81]1230 */
1231#define CONFIGURE_INIT_TASK_STACK_SIZE
1232
[e697baf]1233/* Generated from spec:/acfg/if/rtems-init-tasks-table */
1234
[e812f81]1235/**
1236 * @brief This configuration option is a boolean feature define.
1237 *
1238 * In case this configuration option is defined, then exactly one Classic API
1239 * initialization task is configured.
1240 *
1241 * @par Default Configuration
1242 * If this configuration option is undefined, then the described feature is not
1243 * enabled.
1244 *
1245 * @par Notes
1246 * @parblock
1247 * The application shall define exactly one of the following configuration
1248 * options
1249 *
1250 * * ``CONFIGURE_RTEMS_INIT_TASKS_TABLE``,
1251 *
1252 * * #CONFIGURE_POSIX_INIT_THREAD_TABLE, or
1253 *
1254 * * #CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
1255 *
1256 * otherwise a compile time error in the configuration file will occur.
1257 * @endparblock
1258 */
1259#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
1260
1261/** @} */
1262
[e697baf]1263/* Generated from spec:/acfg/if/group-devdrv */
1264
[e812f81]1265/**
[4e5327ff]1266 * @defgroup RTEMSApplConfigDeviceDriverConfiguration \
1267 *   Device Driver Configuration
[e812f81]1268 *
1269 * @ingroup RTEMSApplConfig
1270 *
1271 * This section describes configuration options related to the device drivers.
1272 * Note that network device drivers are not covered by the following options.
1273 *
1274 * @{
1275 */
1276
[e697baf]1277/* Generated from spec:/acfg/if/appl-does-not-need-clock-driver */
1278
[e812f81]1279/**
1280 * @brief This configuration option is a boolean feature define.
1281 *
1282 * In case this configuration option is defined, then **no** Clock Driver is
1283 * initialized during system initialization.
1284 *
1285 * @par Default Configuration
1286 * If this configuration option is undefined, then a Clock Driver may be
1287 * initialized during system initialization.
1288 *
1289 * @par Notes
1290 * @parblock
1291 * This configuration parameter is intended to prevent the common user error of
1292 * using the Hello World example as the baseline for an application and leaving
1293 * out a clock tick source.
1294 *
1295 * The application shall define exactly one of the following configuration
1296 * options
1297 *
1298 * * #CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER,
1299 *
1300 * * ``CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER``, or
1301 *
1302 * * #CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER,
1303 *
1304 * otherwise a compile time error in the configuration file will occur.
1305 * @endparblock
1306 */
1307#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
1308
[e697baf]1309/* Generated from spec:/acfg/if/appl-extra-drivers */
1310
[e812f81]1311/**
1312 * @brief This configuration option is an initializer define.
1313 *
1314 * The value of this configuration option is used to initialize the Device
1315 * Driver Table.
1316 *
1317 * @par Default Value
1318 * The default value is the empty list.
1319 *
1320 * @par Value Constraints
1321 * The value of this configuration option shall be a list of initializers for
1322 * structures of type ::rtems_driver_address_table.
1323 *
1324 * @par Notes
1325 * @parblock
1326 * The value of this configuration option is placed after the entries of other
1327 * device driver configuration options.
1328 *
1329 * See #CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS for an alternative placement
1330 * of application device driver initializers.
1331 * @endparblock
1332 */
1333#define CONFIGURE_APPLICATION_EXTRA_DRIVERS
1334
[e697baf]1335/* Generated from spec:/acfg/if/appl-needs-ata-driver */
1336
[e812f81]1337/**
1338 * @brief This configuration option is a boolean feature define.
1339 *
1340 * In case this configuration option is defined, then the ATA Driver is
1341 * initialized during system initialization.
1342 *
1343 * @par Default Configuration
1344 * If this configuration option is undefined, then the described feature is not
1345 * enabled.
1346 *
1347 * @par Notes
1348 * @parblock
1349 * Most BSPs do not include support for an ATA Driver.
1350 *
1351 * If this option is defined and the BSP does not have this device driver, then
1352 * the user will get a link time error for an undefined symbol.
1353 * @endparblock
1354 */
1355#define CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER
1356
[e697baf]1357/* Generated from spec:/acfg/if/appl-needs-clock-driver */
1358
[e812f81]1359/**
1360 * @brief This configuration option is a boolean feature define.
1361 *
1362 * In case this configuration option is defined, then the Clock Driver is
1363 * initialized during system initialization.
1364 *
1365 * @par Default Configuration
1366 * If this configuration option is undefined, then the described feature is not
1367 * enabled.
1368 *
1369 * @par Notes
1370 * @parblock
1371 * The Clock Driver is responsible for providing a regular interrupt which
1372 * invokes a clock tick directive.
1373 *
1374 * The application shall define exactly one of the following configuration
1375 * options
1376 *
1377 * * ``CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER``,
1378 *
1379 * * #CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER, or
1380 *
1381 * * #CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER,
1382 *
1383 * otherwise a compile time error in the configuration file will occur.
1384 * @endparblock
1385 */
1386#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
1387
[e697baf]1388/* Generated from spec:/acfg/if/appl-needs-console-driver */
1389
[e812f81]1390/**
1391 * @brief This configuration option is a boolean feature define.
1392 *
1393 * In case this configuration option is defined, then the Console Driver is
1394 * initialized during system initialization.
1395 *
1396 * @par Default Configuration
1397 * If this configuration option is undefined, then the described feature is not
1398 * enabled.
1399 *
1400 * @par Notes
1401 * @parblock
1402 * The Console Driver is responsible for providing the ``/dev/console`` device
1403 * file.  This device is used to initialize the standard input, output, and
1404 * error file descriptors.
1405 *
1406 * BSPs should be constructed in a manner that allows printk() to work properly
1407 * without the need for the Console Driver to be configured.
1408 *
1409 * The
1410 *
1411 * * ``CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER``,
1412 *
1413 * * #CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER, and
1414 *
1415 * * #CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER
1416 *
1417 * configuration options are mutually exclusive.
1418 * @endparblock
1419 */
1420#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
1421
[e697baf]1422/* Generated from spec:/acfg/if/appl-needs-framebuffer-driver */
1423
[e812f81]1424/**
1425 * @brief This configuration option is a boolean feature define.
1426 *
1427 * In case this configuration option is defined, then the Frame Buffer Driver
1428 * is initialized during system initialization.
1429 *
1430 * @par Default Configuration
1431 * If this configuration option is undefined, then the described feature is not
1432 * enabled.
1433 *
1434 * @par Notes
1435 * @parblock
1436 * Most BSPs do not include support for a Frame Buffer Driver. This is because
1437 * many boards do not include the required hardware.
1438 *
1439 * If this option is defined and the BSP does not have this device driver, then
1440 * the user will get a link time error for an undefined symbol.
1441 * @endparblock
1442 */
1443#define CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER
1444
[e697baf]1445/* Generated from spec:/acfg/if/appl-needs-ide-driver */
1446
[e812f81]1447/**
1448 * @brief This configuration option is a boolean feature define.
1449 *
1450 * In case this configuration option is defined, then the IDE Driver is
1451 * initialized during system initialization.
1452 *
1453 * @par Default Configuration
1454 * If this configuration option is undefined, then the described feature is not
1455 * enabled.
1456 *
1457 * @par Notes
1458 * @parblock
1459 * Most BSPs do not include support for an IDE Driver.
1460 *
1461 * If this option is defined and the BSP does not have this device driver, then
1462 * the user will get a link time error for an undefined symbol.
1463 * @endparblock
1464 */
1465#define CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER
1466
[e697baf]1467/* Generated from spec:/acfg/if/appl-needs-null-driver */
1468
[e812f81]1469/**
1470 * @brief This configuration option is a boolean feature define.
1471 *
1472 * In case this configuration option is defined, then the ``/dev/null`` Driver
1473 * is initialized during system initialization.
1474 *
1475 * @par Default Configuration
1476 * If this configuration option is undefined, then the described feature is not
1477 * enabled.
1478 *
1479 * @par Notes
1480 * This device driver is supported by all BSPs.
1481 */
1482#define CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
1483
[e697baf]1484/* Generated from spec:/acfg/if/appl-needs-rtc-driver */
1485
[e812f81]1486/**
1487 * @brief This configuration option is a boolean feature define.
1488 *
1489 * In case this configuration option is defined, then the Real-Time Clock
1490 * Driver is initialized during system initialization.
1491 *
1492 * @par Default Configuration
1493 * If this configuration option is undefined, then the described feature is not
1494 * enabled.
1495 *
1496 * @par Notes
1497 * @parblock
1498 * Most BSPs do not include support for a real-time clock (RTC). This is
1499 * because many boards do not include the required hardware.
1500 *
1501 * If this is defined and the BSP does not have this device driver, then the
1502 * user will get a link time error for an undefined symbol.
1503 * @endparblock
1504 */
1505#define CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
1506
[e697baf]1507/* Generated from spec:/acfg/if/appl-needs-simple-console-driver */
1508
[e812f81]1509/**
1510 * @brief This configuration option is a boolean feature define.
1511 *
1512 * In case this configuration option is defined, then the Simple Console Driver
1513 * is initialized during system initialization.
1514 *
1515 * @par Default Configuration
1516 * If this configuration option is undefined, then the described feature is not
1517 * enabled.
1518 *
1519 * @par Notes
1520 * @parblock
1521 * This device driver is responsible for providing the ``/dev/console`` device
1522 * file.  This device is used to initialize the standard input, output, and
1523 * error file descriptors.
1524 *
[f48d7834]1525 * This device driver reads via getchark().
[e812f81]1526 *
[f48d7834]1527 * This device driver writes via rtems_putc().
[e812f81]1528 *
1529 * The Termios framework is not used.  There is no support to change device
1530 * settings, e.g. baud, stop bits, parity, etc.
1531 *
1532 * The
1533 *
1534 * * #CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER,
1535 *
1536 * * ``CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER``, and
1537 *
1538 * * #CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER
1539 *
1540 * configuration options are mutually exclusive.
1541 * @endparblock
1542 */
1543#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
1544
[e697baf]1545/* Generated from spec:/acfg/if/appl-needs-simple-task-console-driver */
1546
[e812f81]1547/**
1548 * @brief This configuration option is a boolean feature define.
1549 *
1550 * In case this configuration option is defined, then the Simple Task Console
1551 * Driver is initialized during system initialization.
1552 *
1553 * @par Default Configuration
1554 * If this configuration option is undefined, then the described feature is not
1555 * enabled.
1556 *
1557 * @par Notes
1558 * @parblock
1559 * This device driver is responsible for providing the ``/dev/console`` device
1560 * file.  This device is used to initialize the standard input, output, and
1561 * error file descriptors.
1562 *
[f48d7834]1563 * This device driver reads via getchark().
[e812f81]1564 *
1565 * This device driver writes into a write buffer.  The count of characters
1566 * written into the write buffer is returned.  It might be less than the
1567 * requested count, in case the write buffer is full.  The write is
1568 * non-blocking and may be called from interrupt context.  A dedicated task
[f48d7834]1569 * reads from the write buffer and outputs the characters via rtems_putc().
1570 * This task runs with the least important priority. The write buffer size is
1571 * 2047 characters and it is not configurable.
[e812f81]1572 *
1573 * Use ``fsync( STDOUT_FILENO )`` or ``fdatasync( STDOUT_FILENO )`` to drain
1574 * the write buffer.
1575 *
1576 * The Termios framework is not used.  There is no support to change device
1577 * settings, e.g.  baud, stop bits, parity, etc.
1578 *
1579 * The
1580 *
1581 * * #CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER,
1582 *
1583 * * #CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER, and
1584 *
1585 * * ``CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER``
1586 *
1587 * configuration options are mutually exclusive.
1588 * @endparblock
1589 */
1590#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER
1591
[e697baf]1592/* Generated from spec:/acfg/if/appl-needs-stub-driver */
1593
[e812f81]1594/**
1595 * @brief This configuration option is a boolean feature define.
1596 *
1597 * In case this configuration option is defined, then the Stub Driver is
1598 * initialized during system initialization.
1599 *
1600 * @par Default Configuration
1601 * If this configuration option is undefined, then the described feature is not
1602 * enabled.
1603 *
1604 * @par Notes
1605 * This device driver simply provides entry points that return successful and
1606 * is primarily a test fixture. It is supported by all BSPs.
1607 */
1608#define CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
1609
[e697baf]1610/* Generated from spec:/acfg/if/appl-needs-timer-driver */
1611
[e812f81]1612/**
1613 * @brief This configuration option is a boolean feature define.
1614 *
1615 * In case this configuration option is defined, then the Benchmark Timer
1616 * Driver is initialized during system initialization.
1617 *
1618 * @par Default Configuration
1619 * If this configuration option is undefined, then the described feature is not
1620 * enabled.
1621 *
1622 * @par Notes
1623 * @parblock
1624 * The Benchmark Timer Driver is intended for the benchmark tests of the RTEMS
1625 * Testsuite.  Applications should not use this driver.
1626 *
1627 * The application shall define exactly one of the following configuration
1628 * options
1629 *
1630 * * #CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER,
1631 *
1632 * * #CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER, or
1633 *
1634 * * ``CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER``,
1635 *
1636 * otherwise a compile time error will occur.
1637 * @endparblock
1638 */
1639#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
1640
[e697baf]1641/* Generated from spec:/acfg/if/appl-needs-watchdog-driver */
1642
[e812f81]1643/**
1644 * @brief This configuration option is a boolean feature define.
1645 *
1646 * In case this configuration option is defined, then the Watchdog Driver is
1647 * initialized during system initialization.
1648 *
1649 * @par Default Configuration
1650 * If this configuration option is undefined, then the described feature is not
1651 * enabled.
1652 *
1653 * @par Notes
1654 * @parblock
1655 * Most BSPs do not include support for a watchdog device driver. This is
1656 * because many boards do not include the required hardware.
1657 *
1658 * If this is defined and the BSP does not have this device driver, then the
1659 * user will get a link time error for an undefined symbol.
1660 * @endparblock
1661 */
1662#define CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER
1663
[e697baf]1664/* Generated from spec:/acfg/if/appl-needs-zero-driver */
1665
[e812f81]1666/**
1667 * @brief This configuration option is a boolean feature define.
1668 *
1669 * In case this configuration option is defined, then the ``/dev/zero`` Driver
1670 * is initialized during system initialization.
1671 *
1672 * @par Default Configuration
1673 * If this configuration option is undefined, then the described feature is not
1674 * enabled.
1675 *
1676 * @par Notes
1677 * This device driver is supported by all BSPs.
1678 */
1679#define CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER
1680
[e697baf]1681/* Generated from spec:/acfg/if/appl-prerequisite-drivers */
1682
[e812f81]1683/**
1684 * @brief This configuration option is an initializer define.
1685 *
1686 * The value of this configuration option is used to initialize the Device
1687 * Driver Table.
1688 *
1689 * @par Default Value
1690 * The default value is the empty list.
1691 *
1692 * @par Value Constraints
1693 * The value of this configuration option shall be a list of initializers for
1694 * structures of type ::rtems_driver_address_table.
1695 *
1696 * @par Notes
1697 * @parblock
1698 * The value of this configuration option is placed after the entries defined
1699 * by #CONFIGURE_BSP_PREREQUISITE_DRIVERS and before all other device driver
1700 * configuration options.
1701 *
1702 * See #CONFIGURE_APPLICATION_EXTRA_DRIVERS for an alternative placement of
1703 * application device driver initializers.
1704 * @endparblock
1705 */
1706#define CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS
1707
[e697baf]1708/* Generated from spec:/acfg/if/ata-driver-task-priority */
1709
[e812f81]1710/**
1711 * @brief This configuration option is an integer define.
1712 *
1713 * The value of this configuration option defines the ATA task priority.
1714 *
1715 * @par Default Value
1716 * The default value is 140.
1717 *
1718 * @par Value Constraints
1719 * The value of this configuration option shall be a valid Classic API task
[eefe7009]1720 * priority.  The set of valid task priorities depends on the scheduler
1721 * configuration.
[e812f81]1722 *
1723 * @par Notes
1724 * This configuration option is only evaluated if the configuration option
1725 * #CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER is defined.
1726 */
1727#define CONFIGURE_ATA_DRIVER_TASK_PRIORITY
1728
[4812a8b5]1729/* Generated from spec:/acfg/if/exception-to-signal-mapping */
1730
1731/**
1732 * @brief This configuration option is a boolean feature define.
1733 *
1734 * In case this configuration option is defined, then the machine exception to
1735 * POSIX signal mapping is configured during system initialization.
1736 *
1737 * @par Default Configuration
1738 * If this configuration option is undefined, then the described feature is not
1739 * enabled.
1740 *
1741 * @par Notes
1742 * @parblock
1743 * This device driver is responsible for setting up a mapping from machine
1744 * exceptions to POSIX signals so that applications may consume them and alter
1745 * task execution as necessary.
1746 *
1747 * This is especially useful for applications written in Ada or C++.
1748 * @endparblock
1749 */
1750#define CONFIGURE_EXCEPTION_TO_SIGNAL_MAPPING
1751
[e697baf]1752/* Generated from spec:/acfg/if/max-drivers */
1753
[e812f81]1754/**
1755 * @brief This configuration option is an integer define.
1756 *
1757 * The value of this configuration option defines the number of device drivers.
1758 *
1759 * @par Default Value
1760 * @parblock
1761 * This is computed by default, and is set to the number of statically
1762 * configured device drivers configured using the following configuration
1763 * options:
1764 *
1765 * * #CONFIGURE_APPLICATION_EXTRA_DRIVERS
1766 *
1767 * * #CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER
1768 *
1769 * * #CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
1770 *
1771 * * #CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
1772 *
1773 * * #CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER
1774 *
1775 * * #CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER
1776 *
1777 * * #CONFIGURE_APPLICATION_NEEDS_LIBBLOCK
1778 *
1779 * * #CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
1780 *
1781 * * #CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
1782 *
1783 * * #CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
1784 *
1785 * * #CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER
1786 *
1787 * * #CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
1788 *
1789 * * #CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
1790 *
1791 * * #CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER
1792 *
1793 * * #CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER
1794 *
1795 * * #CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS
1796 *
1797 * * #CONFIGURE_BSP_PREREQUISITE_DRIVERS
1798 * @endparblock
1799 *
1800 * @par Value Constraints
1801 * @parblock
1802 * The value of this configuration option shall satisfy all of the following
1803 * constraints:
1804 *
1805 * * It shall be less than or equal to <a
1806 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
1807 *
1808 * * It shall be greater than or equal than the number of statically configured
1809 *   device drivers.
1810 *
1811 * * It shall be less than or equal to a BSP-specific and application-specific
1812 *   value which depends on the size of the memory available to the
1813 *   application.
1814 * @endparblock
1815 *
1816 * @par Notes
1817 * If the application will dynamically install device drivers, then the
1818 * configuration option value shall be larger than the number of statically
1819 * configured device drivers.
1820 */
1821#define CONFIGURE_MAXIMUM_DRIVERS
1822
1823/** @} */
1824
[e697baf]1825/* Generated from spec:/acfg/if/group-eventrecord */
1826
[e812f81]1827/**
[4e5327ff]1828 * @defgroup RTEMSApplConfigEventRecordingConfiguration \
1829 *   Event Recording Configuration
[e812f81]1830 *
1831 * @ingroup RTEMSApplConfig
1832 *
1833 * This section describes configuration options related to the event recording.
1834 *
1835 * @{
1836 */
1837
[e697baf]1838/* Generated from spec:/acfg/if/record-extensions-enabled */
1839
[e812f81]1840/**
1841 * @brief This configuration option is a boolean feature define.
1842 *
1843 * In case
1844 *
1845 * * this configuration option is defined
1846 *
1847 * * and #CONFIGURE_RECORD_PER_PROCESSOR_ITEMS is properly defined,
1848 *
1849 * then the event record extensions are enabled.
1850 *
1851 * @par Default Configuration
1852 * If this configuration option is undefined, then the described feature is not
1853 * enabled.
1854 *
1855 * @par Notes
1856 * The record extensions capture thread create, start, restart, delete, switch,
1857 * begin, exitted and terminate events.
1858 */
1859#define CONFIGURE_RECORD_EXTENSIONS_ENABLED
1860
[e697baf]1861/* Generated from spec:/acfg/if/record-fatal-dump-base64 */
1862
[e812f81]1863/**
1864 * @brief This configuration option is a boolean feature define.
1865 *
1866 * In case
1867 *
1868 * * this configuration option is defined
1869 *
1870 * * and #CONFIGURE_RECORD_PER_PROCESSOR_ITEMS is properly defined,
1871 *
1872 * * and #CONFIGURE_RECORD_FATAL_DUMP_BASE64_ZLIB is undefined,
1873 *
1874 * then the event records are dumped in Base64 encoding in a fatal error
1875 * extension (see <a
1876 * href=https://docs.rtems.org/branches/master/c-user/fatal_error.html#announcing-a-fatal-error>Announcing
1877 * a Fatal Error</a>).
1878 *
1879 * @par Default Configuration
1880 * If this configuration option is undefined, then the described feature is not
1881 * enabled.
1882 *
1883 * @par Notes
1884 * This extension can be used to produce crash dumps.
1885 */
1886#define CONFIGURE_RECORD_FATAL_DUMP_BASE64
1887
[e697baf]1888/* Generated from spec:/acfg/if/record-fatal-dump-base64-zlib */
1889
[e812f81]1890/**
1891 * @brief This configuration option is a boolean feature define.
1892 *
1893 * In case
1894 *
1895 * * this configuration option is defined
1896 *
1897 * * and #CONFIGURE_RECORD_PER_PROCESSOR_ITEMS is properly defined,
1898 *
1899 * then the event records are compressed by zlib and dumped in Base64 encoding
1900 * in a fatal error extension (see <a
1901 * href=https://docs.rtems.org/branches/master/c-user/fatal_error.html#announcing-a-fatal-error>Announcing
1902 * a Fatal Error</a>).
1903 *
1904 * @par Default Configuration
1905 * If this configuration option is undefined, then the described feature is not
1906 * enabled.
1907 *
1908 * @par Notes
1909 * The zlib compression needs about 512KiB of RAM.  This extension can be used
1910 * to produce crash dumps.
1911 */
1912#define CONFIGURE_RECORD_FATAL_DUMP_BASE64_ZLIB
1913
[c46fbb9]1914/* Generated from spec:/acfg/if/record-interrupts-enabled */
1915
1916/**
1917 * @brief This configuration option is a boolean feature define.
1918 *
1919 * In case
1920 *
1921 * * this configuration option is defined
1922 *
1923 * * and #CONFIGURE_RECORD_PER_PROCESSOR_ITEMS is properly defined,
1924 *
1925 * then the interrupt event recording is enabled.
1926 *
1927 * @par Default Configuration
1928 * If this configuration option is undefined, then the described feature is not
1929 * enabled.
1930 *
1931 * @par Notes
1932 * The interrupt event recording generates interrupt entry and exit events when
1933 * interrupt entries are dispatched.
1934 */
1935#define CONFIGURE_RECORD_INTERRUPTS_ENABLED
1936
[e697baf]1937/* Generated from spec:/acfg/if/record-per-processor-items */
1938
[e812f81]1939/**
1940 * @brief This configuration option is an integer define.
1941 *
1942 * The value of this configuration option defines the event record item count
1943 * per processor.
1944 *
1945 * @par Default Value
1946 * The default value is 0.
1947 *
1948 * @par Value Constraints
1949 * @parblock
1950 * The value of this configuration option shall satisfy all of the following
1951 * constraints:
1952 *
1953 * * It shall be greater than or equal to 16.
1954 *
1955 * * It shall be less than or equal to <a
1956 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
1957 *
1958 * * It shall be a power of two.
1959 *
1960 * * It shall be less than or equal to a BSP-specific and application-specific
1961 *   value which depends on the size of the memory available to the
1962 *   application.
1963 * @endparblock
1964 *
1965 * @par Notes
1966 * The event record buffers are statically allocated for each configured
1967 * processor (#CONFIGURE_MAXIMUM_PROCESSORS).  If the value of this
1968 * configuration option is zero, then nothing is allocated.
1969 */
1970#define CONFIGURE_RECORD_PER_PROCESSOR_ITEMS
1971
1972/** @} */
1973
[b06ec5b6]1974/* Generated from spec:/acfg/if/group-face */
1975
1976/**
1977 * @defgroup RTEMSApplConfigFACETechnicalStandardRelatedConfiguration \
1978 *   FACE Technical Standard Related Configuration
1979 *
1980 * @ingroup RTEMSApplConfig
1981 *
1982 * This section describes configuration options related to adapting RTEMS
1983 * behavior to be aligned with the FACE Technical Standard. The FACE Technical
1984 * Standard is a product of the FACE Consortium which operates under the Open
1985 * Group. The FACE Consortium was founded by avionics organizations to improve
1986 * the portability of cockpit software across various platforms. It addresses
1987 * technical and business concerns.
1988 *
1989 * Most important from an RTEMS perspective, the FACE Technical Standard
1990 * defines four POSIX profiles: Security, Safety Base, Safety Extended, and the
1991 * General Purpose Profile. Each has an increasingly larger subset of POSIX
1992 * APIs. In the Security and Safety profiles, ARINC 653 is required. It is
1993 * optional in the General Purpose Profile.
1994 *
1995 * The RTEMS Project has been tracking alignment with the FACE POSIX profiles
1996 * and they are included in the "RTEMS POSIX 1003.1 Compliance Guide."
1997 *
1998 * @{
1999 */
2000
2001/* Generated from spec:/acfg/if/posix-timer-face-behavior */
2002
2003/**
2004 * @brief This configuration option is a boolean feature define.
2005 *
2006 * If this configuration option is defined, then POSIX timers may not be
2007 * created to use the CLOCK_REALTIME.  Per POSIX, this is allowed behavior but
2008 * per the FACE Technical Standard, it is not. Using POSIX timers based on
2009 * CLOCK_REALTIME (e.g., time of day) is unsafe for real-time safety systems as
2010 * setting CLOCK_REALTIME will perturb any active timers.
2011 *
2012 * If this option is not defined, POSIX timers may be created to use the
2013 * CLOCK_REALTIME in compliance with the POSIX specification.
2014 *
2015 * @par Default Configuration
2016 * If this configuration option is undefined, then the described feature is not
2017 * enabled.
2018 */
2019#define CONFIGURE_POSIX_TIMERS_FACE_BEHAVIOR
2020
2021/** @} */
2022
[e697baf]2023/* Generated from spec:/acfg/if/group-filesystem */
2024
[e812f81]2025/**
2026 * @defgroup RTEMSApplConfigFilesystemConfiguration Filesystem Configuration
2027 *
2028 * @ingroup RTEMSApplConfig
2029 *
2030 * This section describes configuration options related to filesytems. By
2031 * default, the In-Memory Filesystem (IMFS) is used as the base filesystem
2032 * (also known as root filesystem).  In order to save some memory for your
2033 * application, you can disable the filesystem support with the
2034 * #CONFIGURE_APPLICATION_DISABLE_FILESYSTEM configuration option.
2035 * Alternatively, you can strip down the features of the base filesystem with
2036 * the #CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM and
2037 * #CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM configuration options.  These three
2038 * configuration options are mutually exclusive.  They are intended for an
2039 * advanced application configuration.
2040 *
2041 * Features of the IMFS can be disabled and enabled with the following
2042 * configuration options:
2043 *
2044 * * #CONFIGURE_IMFS_DISABLE_CHMOD
2045 *
2046 * * #CONFIGURE_IMFS_DISABLE_CHOWN
2047 *
2048 * * #CONFIGURE_IMFS_DISABLE_LINK
2049 *
2050 * * #CONFIGURE_IMFS_DISABLE_MKNOD
2051 *
2052 * * #CONFIGURE_IMFS_DISABLE_MKNOD_FILE
2053 *
2054 * * #CONFIGURE_IMFS_DISABLE_MOUNT
2055 *
2056 * * #CONFIGURE_IMFS_DISABLE_READDIR
2057 *
2058 * * #CONFIGURE_IMFS_DISABLE_READLINK
2059 *
2060 * * #CONFIGURE_IMFS_DISABLE_RENAME
2061 *
2062 * * #CONFIGURE_IMFS_DISABLE_RMNOD
2063 *
2064 * * #CONFIGURE_IMFS_DISABLE_SYMLINK
2065 *
2066 * * #CONFIGURE_IMFS_DISABLE_UNMOUNT
2067 *
2068 * * #CONFIGURE_IMFS_DISABLE_UTIME
2069 *
2070 * * #CONFIGURE_IMFS_ENABLE_MKFIFO
2071 *
2072 * @{
2073 */
2074
[e697baf]2075/* Generated from spec:/acfg/if/appl-disable-filesystem */
2076
[e812f81]2077/**
2078 * @brief This configuration option is a boolean feature define.
2079 *
2080 * In case this configuration option is defined, then **no base filesystem** is
2081 * initialized during system initialization and **no filesystems** are
2082 * configured.
2083 *
2084 * @par Default Configuration
2085 * If this configuration option is undefined, then a base filesystem and the
2086 * configured filesystems are initialized during system initialization.
2087 *
2088 * @par Notes
2089 * Filesystems shall be initialized to support file descriptor based device
2090 * drivers and basic input/output functions such as printf(). Filesystems can
2091 * be disabled to reduce the memory footprint of an application.
2092 */
2093#define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
2094
[e697baf]2095/* Generated from spec:/acfg/if/filesystem-all */
2096
[e812f81]2097/**
2098 * @brief This configuration option is a boolean feature define.
2099 *
2100 * In case this configuration option is defined, then the following
2101 * configuration options will be defined as well
2102 *
2103 * * #CONFIGURE_FILESYSTEM_DOSFS,
2104 *
2105 * * #CONFIGURE_FILESYSTEM_FTPFS,
2106 *
2107 * * #CONFIGURE_FILESYSTEM_IMFS,
2108 *
2109 * * #CONFIGURE_FILESYSTEM_JFFS2,
2110 *
2111 * * #CONFIGURE_FILESYSTEM_NFS,
2112 *
2113 * * #CONFIGURE_FILESYSTEM_RFS, and
2114 *
2115 * * #CONFIGURE_FILESYSTEM_TFTPFS.
2116 *
2117 * @par Default Configuration
2118 * If this configuration option is undefined, then the described feature is not
2119 * enabled.
2120 */
2121#define CONFIGURE_FILESYSTEM_ALL
2122
[e697baf]2123/* Generated from spec:/acfg/if/filesystem-dosfs */
2124
[e812f81]2125/**
2126 * @brief This configuration option is a boolean feature define.
2127 *
2128 * In case this configuration option is defined, then the DOS (FAT) filesystem
2129 * is registered, so that instances of this filesystem can be mounted by the
2130 * application.
2131 *
2132 * @par Default Configuration
2133 * If this configuration option is undefined, then the described feature is not
2134 * enabled.
2135 *
2136 * @par Notes
2137 * This filesystem requires a Block Device Cache configuration, see
2138 * #CONFIGURE_APPLICATION_NEEDS_LIBBLOCK.
2139 */
2140#define CONFIGURE_FILESYSTEM_DOSFS
2141
[e697baf]2142/* Generated from spec:/acfg/if/filesystem-ftpfs */
2143
[e812f81]2144/**
2145 * @brief This configuration option is a boolean feature define.
2146 *
2147 * In case this configuration option is defined, then the FTP filesystem (FTP
2148 * client) is registered, so that instances of this filesystem can be mounted
2149 * by the application.
2150 *
2151 * @par Default Configuration
2152 * If this configuration option is undefined, then the described feature is not
2153 * enabled.
2154 */
2155#define CONFIGURE_FILESYSTEM_FTPFS
2156
[e697baf]2157/* Generated from spec:/acfg/if/filesystem-imfs */
2158
[e812f81]2159/**
2160 * @brief This configuration option is a boolean feature define.
2161 *
2162 * In case this configuration option is defined, then the In-Memory Filesystem
2163 * (IMFS) is registered, so that instances of this filesystem can be mounted by
2164 * the application.
2165 *
2166 * @par Default Configuration
2167 * If this configuration option is undefined, then the described feature is not
2168 * enabled.
2169 *
2170 * @par Notes
2171 * Applications will rarely need this configuration option.  This configuration
2172 * option is intended for test programs.  You do not need to define this
2173 * configuration option for the base filesystem (also known as root
2174 * filesystem).
2175 */
2176#define CONFIGURE_FILESYSTEM_IMFS
2177
[e697baf]2178/* Generated from spec:/acfg/if/filesystem-jffs2 */
2179
[e812f81]2180/**
2181 * @brief This configuration option is a boolean feature define.
2182 *
2183 * In case this configuration option is defined, then the JFFS2 filesystem is
2184 * registered, so that instances of this filesystem can be mounted by the
2185 * application.
2186 *
2187 * @par Default Configuration
2188 * If this configuration option is undefined, then the described feature is not
2189 * enabled.
2190 */
2191#define CONFIGURE_FILESYSTEM_JFFS2
2192
[e697baf]2193/* Generated from spec:/acfg/if/filesystem-nfs */
2194
[e812f81]2195/**
2196 * @brief This configuration option is a boolean feature define.
2197 *
2198 * In case this configuration option is defined, then the Network Filesystem
2199 * (NFS) client is registered, so that instances of this filesystem can be
2200 * mounted by the application.
2201 *
2202 * @par Default Configuration
2203 * If this configuration option is undefined, then the described feature is not
2204 * enabled.
2205 */
2206#define CONFIGURE_FILESYSTEM_NFS
2207
[e697baf]2208/* Generated from spec:/acfg/if/filesystem-rfs */
2209
[e812f81]2210/**
2211 * @brief This configuration option is a boolean feature define.
2212 *
2213 * In case this configuration option is defined, then the RTEMS Filesystem
2214 * (RFS) is registered, so that instances of this filesystem can be mounted by
2215 * the application.
2216 *
2217 * @par Default Configuration
2218 * If this configuration option is undefined, then the described feature is not
2219 * enabled.
2220 *
2221 * @par Notes
2222 * This filesystem requires a Block Device Cache configuration, see
2223 * #CONFIGURE_APPLICATION_NEEDS_LIBBLOCK.
2224 */
2225#define CONFIGURE_FILESYSTEM_RFS
2226
[e697baf]2227/* Generated from spec:/acfg/if/filesystem-tftpfs */
2228
[e812f81]2229/**
2230 * @brief This configuration option is a boolean feature define.
2231 *
2232 * In case this configuration option is defined, then the TFTP filesystem (TFTP
2233 * client) is registered, so that instances of this filesystem can be mounted
2234 * by the application.
2235 *
2236 * @par Default Configuration
2237 * If this configuration option is undefined, then the described feature is not
2238 * enabled.
2239 */
2240#define CONFIGURE_FILESYSTEM_TFTPFS
2241
[e697baf]2242/* Generated from spec:/acfg/if/imfs-disable-chmod */
2243
[e812f81]2244/**
2245 * @brief This configuration option is a boolean feature define.
2246 *
2247 * In case this configuration option is defined, then the root IMFS does not
2248 * support changing the mode of files (no support for chmod()).
2249 *
2250 * @par Default Configuration
2251 * If this configuration option is undefined, then the root IMFS supports
2252 * changing the mode of files.
2253 */
2254#define CONFIGURE_IMFS_DISABLE_CHMOD
2255
[e697baf]2256/* Generated from spec:/acfg/if/imfs-disable-chown */
2257
[e812f81]2258/**
2259 * @brief This configuration option is a boolean feature define.
2260 *
2261 * In case this configuration option is defined, then the root IMFS does not
2262 * support changing the ownership of files (no support for chown()).
2263 *
2264 * @par Default Configuration
2265 * If this configuration option is undefined, then the root IMFS supports
2266 * changing the ownership of files.
2267 */
2268#define CONFIGURE_IMFS_DISABLE_CHOWN
2269
[e697baf]2270/* Generated from spec:/acfg/if/imfs-disable-link */
2271
[e812f81]2272/**
2273 * @brief This configuration option is a boolean feature define.
2274 *
2275 * In case this configuration option is defined, then the root IMFS does not
2276 * support hard links (no support for link()).
2277 *
2278 * @par Default Configuration
2279 * If this configuration option is undefined, then the root IMFS supports hard
2280 * links.
2281 */
2282#define CONFIGURE_IMFS_DISABLE_LINK
2283
[e697baf]2284/* Generated from spec:/acfg/if/imfs-disable-mknod */
2285
[e812f81]2286/**
2287 * @brief This configuration option is a boolean feature define.
2288 *
2289 * In case this configuration option is defined, then the root IMFS does not
2290 * support making files (no support for mknod()).
2291 *
2292 * @par Default Configuration
2293 * If this configuration option is undefined, then the root IMFS supports
2294 * making files.
2295 */
2296#define CONFIGURE_IMFS_DISABLE_MKNOD
2297
[e697baf]2298/* Generated from spec:/acfg/if/imfs-disable-mknod-device */
2299
[e812f81]2300/**
2301 * @brief This configuration option is a boolean feature define.
2302 *
2303 * In case this configuration option is defined, then the root IMFS does not
2304 * support making device files.
2305 *
2306 * @par Default Configuration
2307 * If this configuration option is undefined, then the root IMFS supports
2308 * making device files.
2309 */
2310#define CONFIGURE_IMFS_DISABLE_MKNOD_DEVICE
2311
[e697baf]2312/* Generated from spec:/acfg/if/imfs-disable-mknod-file */
2313
[e812f81]2314/**
2315 * @brief This configuration option is a boolean feature define.
2316 *
2317 * In case this configuration option is defined, then the root IMFS does not
2318 * support making regular files.
2319 *
2320 * @par Default Configuration
2321 * If this configuration option is undefined, then the root IMFS supports
2322 * making regular files.
2323 */
2324#define CONFIGURE_IMFS_DISABLE_MKNOD_FILE
2325
[e697baf]2326/* Generated from spec:/acfg/if/imfs-disable-mount */
2327
[e812f81]2328/**
2329 * @brief This configuration option is a boolean feature define.
2330 *
2331 * In case this configuration option is defined, then the root IMFS does not
2332 * support mounting other filesystems (no support for mount()).
2333 *
2334 * @par Default Configuration
2335 * If this configuration option is undefined, then the root IMFS supports
2336 * mounting other filesystems.
2337 */
2338#define CONFIGURE_IMFS_DISABLE_MOUNT
2339
[e697baf]2340/* Generated from spec:/acfg/if/imfs-disable-readdir */
2341
[e812f81]2342/**
2343 * @brief This configuration option is a boolean feature define.
2344 *
2345 * In case this configuration option is defined, then the root IMFS does not
2346 * support reading directories (no support for readdir()).  It is still
2347 * possible to open files in a directory.
2348 *
2349 * @par Default Configuration
2350 * If this configuration option is undefined, then the root IMFS supports
2351 * reading directories.
2352 */
2353#define CONFIGURE_IMFS_DISABLE_READDIR
2354
[e697baf]2355/* Generated from spec:/acfg/if/imfs-disable-readlink */
2356
[e812f81]2357/**
2358 * @brief This configuration option is a boolean feature define.
2359 *
2360 * In case this configuration option is defined, then the root IMFS does not
2361 * support reading symbolic links (no support for readlink()).
2362 *
2363 * @par Default Configuration
2364 * If this configuration option is undefined, then the root IMFS supports
2365 * reading symbolic links.
2366 */
2367#define CONFIGURE_IMFS_DISABLE_READLINK
2368
[e697baf]2369/* Generated from spec:/acfg/if/imfs-disable-rename */
2370
[e812f81]2371/**
2372 * @brief This configuration option is a boolean feature define.
2373 *
2374 * In case this configuration option is defined, then the root IMFS does not
2375 * support renaming files (no support for rename()).
2376 *
2377 * @par Default Configuration
2378 * If this configuration option is undefined, then the root IMFS supports
2379 * renaming files.
2380 */
2381#define CONFIGURE_IMFS_DISABLE_RENAME
2382
[e697baf]2383/* Generated from spec:/acfg/if/imfs-disable-rmnod */
2384
[e812f81]2385/**
2386 * @brief This configuration option is a boolean feature define.
2387 *
2388 * In case this configuration option is defined, then the root IMFS does not
2389 * support removing files (no support for rmnod()).
2390 *
2391 * @par Default Configuration
2392 * If this configuration option is undefined, then the root IMFS supports
2393 * removing files.
2394 */
2395#define CONFIGURE_IMFS_DISABLE_RMNOD
2396
[e697baf]2397/* Generated from spec:/acfg/if/imfs-disable-symlink */
2398
[e812f81]2399/**
2400 * @brief This configuration option is a boolean feature define.
2401 *
2402 * In case this configuration option is defined, then the root IMFS does not
2403 * support creating symbolic links (no support for symlink()).
2404 *
2405 * @par Default Configuration
2406 * If this configuration option is undefined, then the root IMFS supports
2407 * creating symbolic links.
2408 */
2409#define CONFIGURE_IMFS_DISABLE_SYMLINK
2410
[e697baf]2411/* Generated from spec:/acfg/if/imfs-disable-unmount */
2412
[e812f81]2413/**
2414 * @brief This configuration option is a boolean feature define.
2415 *
2416 * In case this configuration option is defined, then the root IMFS does not
2417 * support unmounting other filesystems (no support for unmount()).
2418 *
2419 * @par Default Configuration
2420 * If this configuration option is undefined, then the root IMFS supports
2421 * unmounting other filesystems.
2422 */
2423#define CONFIGURE_IMFS_DISABLE_UNMOUNT
2424
[e697baf]2425/* Generated from spec:/acfg/if/imfs-disable-utime */
2426
[e812f81]2427/**
2428 * @brief This configuration option is a boolean feature define.
2429 *
2430 * In case this configuration option is defined, then the root IMFS does not
2431 * support changing file times (no support for utime()).
2432 *
2433 * @par Default Configuration
2434 * If this configuration option is undefined, then the root IMFS supports
2435 * changing file times.
2436 */
2437#define CONFIGURE_IMFS_DISABLE_UTIME
2438
[e697baf]2439/* Generated from spec:/acfg/if/imfs-enable-mkfifo */
2440
[e812f81]2441/**
2442 * @brief This configuration option is a boolean feature define.
2443 *
2444 * In case this configuration option is defined, then the root IMFS supports
2445 * making FIFOs.
2446 *
2447 * @par Default Configuration
2448 * If this configuration option is undefined, then the root IMFS does not
2449 * support making FIFOs (no support for mkfifo()).
2450 */
2451#define CONFIGURE_IMFS_ENABLE_MKFIFO
2452
[e697baf]2453/* Generated from spec:/acfg/if/imfs-memfile-bytes-per-block */
2454
[e812f81]2455/**
2456 * @brief This configuration option is an integer define.
2457 *
2458 * The value of this configuration option defines the block size for in-memory
2459 * files managed by the IMFS.
2460 *
2461 * @par Default Value
2462 * The default value is 128.
2463 *
2464 * @par Value Constraints
[eefe7009]2465 * The value of this configuration option shall be equal to 16, 32, 64, 128,
2466 * 256, or 512.
[e812f81]2467 *
2468 * @par Notes
2469 * @parblock
2470 * The configured block size has two impacts. The first is the average amount
2471 * of unused memory in the last block of each file.  For example, when the
2472 * block size is 512, on average one-half of the last block of each file will
2473 * remain unused and the memory is wasted. In contrast, when the block size is
2474 * 16, the average unused memory per file is only 8 bytes. However, it requires
2475 * more allocations for the same size file and thus more overhead per block for
2476 * the dynamic memory management.
2477 *
2478 * Second, the block size has an impact on the maximum size file that can be
2479 * stored in the IMFS. With smaller block size, the maximum file size is
2480 * correspondingly smaller. The following shows the maximum file size possible
2481 * based on the configured block size:
2482 *
2483 * * when the block size is 16 bytes, the maximum file size is 1,328 bytes.
2484 *
2485 * * when the block size is 32 bytes, the maximum file size is 18,656 bytes.
2486 *
2487 * * when the block size is 64 bytes, the maximum file size is 279,488 bytes.
2488 *
2489 * * when the block size is 128 bytes, the maximum file size is 4,329,344
2490 *   bytes.
2491 *
2492 * * when the block size is 256 bytes, the maximum file size is 68,173,568
2493 *   bytes.
2494 *
2495 * * when the block size is 512 bytes, the maximum file size is 1,082,195,456
2496 *   bytes.
2497 * @endparblock
2498 */
2499#define CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK
2500
[e697baf]2501/* Generated from spec:/acfg/if/use-devfs-as-base-filesystem */
2502
[e812f81]2503/**
2504 * @brief This configuration option is a boolean feature define.
2505 *
2506 * In case this configuration option is defined, then an IMFS with a reduced
2507 * feature set will be the base filesystem (also known as root filesystem).
2508 *
2509 * @par Default Configuration
2510 * If this configuration option is undefined, then the described feature is not
2511 * enabled.
2512 *
2513 * @par Notes
2514 * @parblock
2515 * In case this configuration option is defined, then the following
2516 * configuration options will be defined as well
2517 *
2518 * * #CONFIGURE_IMFS_DISABLE_CHMOD,
2519 *
2520 * * #CONFIGURE_IMFS_DISABLE_CHOWN,
2521 *
2522 * * #CONFIGURE_IMFS_DISABLE_LINK,
2523 *
2524 * * #CONFIGURE_IMFS_DISABLE_MKNOD_FILE,
2525 *
2526 * * #CONFIGURE_IMFS_DISABLE_MOUNT,
2527 *
2528 * * #CONFIGURE_IMFS_DISABLE_READDIR,
2529 *
2530 * * #CONFIGURE_IMFS_DISABLE_READLINK,
2531 *
2532 * * #CONFIGURE_IMFS_DISABLE_RENAME,
2533 *
2534 * * #CONFIGURE_IMFS_DISABLE_RMNOD,
2535 *
2536 * * #CONFIGURE_IMFS_DISABLE_SYMLINK,
2537 *
2538 * * #CONFIGURE_IMFS_DISABLE_UTIME, and
2539 *
2540 * * #CONFIGURE_IMFS_DISABLE_UNMOUNT.
2541 *
2542 * In addition, a simplified path evaluation is enabled.  It allows only a look
2543 * up of absolute paths.
2544 *
2545 * This configuration of the IMFS is basically a device-only filesystem.  It is
2546 * comparable in functionality to the pseudo-filesystem name space provided
2547 * before RTEMS release 4.5.0.
2548 * @endparblock
2549 */
2550#define CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM
2551
[e697baf]2552/* Generated from spec:/acfg/if/use-miniimfs-as-base-filesystem */
2553
[e812f81]2554/**
2555 * @brief This configuration option is a boolean feature define.
2556 *
2557 * In case this configuration option is defined, then an IMFS with a reduced
2558 * feature set will be the base filesystem (also known as root filesystem).
2559 *
2560 * @par Default Configuration
2561 * If this configuration option is undefined, then the described feature is not
2562 * enabled.
2563 *
2564 * @par Notes
2565 * @parblock
2566 * In case this configuration option is defined, then the following
2567 * configuration options will be defined as well
2568 *
2569 * * #CONFIGURE_IMFS_DISABLE_CHMOD,
2570 *
2571 * * #CONFIGURE_IMFS_DISABLE_CHOWN,
2572 *
2573 * * #CONFIGURE_IMFS_DISABLE_LINK,
2574 *
2575 * * #CONFIGURE_IMFS_DISABLE_READLINK,
2576 *
2577 * * #CONFIGURE_IMFS_DISABLE_RENAME,
2578 *
2579 * * #CONFIGURE_IMFS_DISABLE_SYMLINK,
2580 *
2581 * * #CONFIGURE_IMFS_DISABLE_UTIME, and
2582 *
2583 * * #CONFIGURE_IMFS_DISABLE_UNMOUNT.
2584 * @endparblock
2585 */
2586#define CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
2587
2588/** @} */
2589
[e697baf]2590/* Generated from spec:/acfg/if/group-general */
2591
[e812f81]2592/**
[4e5327ff]2593 * @defgroup RTEMSApplConfigGeneralSystemConfiguration \
2594 *   General System Configuration
[e812f81]2595 *
2596 * @ingroup RTEMSApplConfig
2597 *
2598 * This section describes general system configuration options.
2599 *
2600 * @{
2601 */
2602
[e697baf]2603/* Generated from spec:/acfg/if/dirty-memory */
2604
[e812f81]2605/**
2606 * @brief This configuration option is a boolean feature define.
2607 *
2608 * In case this configuration option is defined, then the memory areas used for
2609 * the RTEMS Workspace and the C Program Heap are dirtied with a ``0xCF`` byte
2610 * pattern during system initialization.
2611 *
2612 * @par Default Configuration
2613 * If this configuration option is undefined, then the described feature is not
2614 * enabled.
2615 *
2616 * @par Notes
2617 * @parblock
2618 * Dirtying memory can add significantly to system initialization time.  It may
2619 * assist in finding code that incorrectly assumes the contents of free memory
2620 * areas is cleared to zero during system initialization.  In case
2621 * #CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY is also defined, then the memory is
2622 * first dirtied and then zeroed.
2623 *
2624 * See also #CONFIGURE_MALLOC_DIRTY.
2625 * @endparblock
2626 */
2627#define CONFIGURE_DIRTY_MEMORY
2628
[e697baf]2629/* Generated from spec:/acfg/if/disable-newlib-reentrancy */
2630
[e812f81]2631/**
2632 * @brief This configuration option is a boolean feature define.
2633 *
2634 * In case this configuration option is defined, then the Newlib reentrancy
2635 * support per thread is disabled and a global reentrancy structure is used.
2636 *
2637 * @par Default Configuration
2638 * If this configuration option is undefined, then the described feature is not
2639 * enabled.
2640 *
2641 * @par Notes
2642 * You can enable this option to reduce the size of the :term:`TCB`.  Use this
2643 * option with care, since it can lead to race conditions and undefined system
2644 * behaviour.  For example, #errno is no longer a thread-local variable if this
2645 * option is enabled.
2646 */
2647#define CONFIGURE_DISABLE_NEWLIB_REENTRANCY
2648
[e697baf]2649/* Generated from spec:/acfg/if/executive-ram-size */
2650
[e812f81]2651/**
2652 * @brief This configuration option is an integer define.
2653 *
2654 * The value of this configuration option defines the RTEMS Workspace size in
2655 * bytes.
2656 *
2657 * @par Default Value
2658 * If this configuration option is undefined, then the RTEMS Workspace and task
2659 * stack space size is calculated by ``<rtems/confdefs.h>`` based on the values
2660 * configuration options.
2661 *
2662 * @par Value Constraints
2663 * @parblock
2664 * The value of this configuration option shall satisfy all of the following
2665 * constraints:
2666 *
[eefe7009]2667 * * It shall be greater than or equal to zero.
[e812f81]2668 *
2669 * * It shall be less than or equal to <a
2670 *   href="https://en.cppreference.com/w/c/types/integer">UINTPTR_MAX</a>.
2671 *
2672 * * It shall be less than or equal to a BSP-specific and application-specific
2673 *   value which depends on the size of the memory available to the
2674 *   application.
2675 * @endparblock
2676 *
2677 * @par Notes
2678 * This is an advanced configuration option.  Use it only if you know exactly
2679 * what you are doing.
2680 */
2681#define CONFIGURE_EXECUTIVE_RAM_SIZE
2682
[e697baf]2683/* Generated from spec:/acfg/if/extra-task-stacks */
2684
[e812f81]2685/**
2686 * @brief This configuration option is an integer define.
2687 *
2688 * The value of this configuration option defines the number of bytes the
2689 * applications wishes to add to the task stack requirements calculated by
2690 * ``<rtems/confdefs.h>``.
2691 *
2692 * @par Default Value
2693 * The default value is 0.
2694 *
2695 * @par Value Constraints
2696 * @parblock
2697 * The value of this configuration option shall satisfy all of the following
2698 * constraints:
2699 *
[eefe7009]2700 * * It shall be greater than or equal to zero.
[e812f81]2701 *
2702 * * It shall be small enough so that the task stack space calculation carried
2703 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
2704 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
2705 * @endparblock
2706 *
2707 * @par Notes
2708 * This parameter is very important.  If the application creates tasks with
2709 * stacks larger then the minimum, then that memory is **not** accounted for by
2710 * ``<rtems/confdefs.h>``.
2711 */
2712#define CONFIGURE_EXTRA_TASK_STACKS
2713
[e697baf]2714/* Generated from spec:/acfg/if/initial-extensions */
2715
[e812f81]2716/**
2717 * @brief This configuration option is an initializer define.
2718 *
2719 * The value of this configuration option is used to initialize the table of
2720 * initial user extensions.
2721 *
2722 * @par Default Value
2723 * The default value is the empty list.
2724 *
2725 * @par Value Constraints
2726 * The value of this configuration option shall be a list of initializers for
2727 * structures of type ::rtems_extensions_table.
2728 *
2729 * @par Notes
2730 * The value of this configuration option is placed before the entries of
2731 * #BSP_INITIAL_EXTENSION and after the entries of all other initial user
2732 * extensions.
2733 */
2734#define CONFIGURE_INITIAL_EXTENSIONS
2735
[e697baf]2736/* Generated from spec:/acfg/if/interrupt-stack-size */
2737
[e812f81]2738/**
2739 * @brief This configuration option is an integer define.
2740 *
2741 * The value of this configuration option defines the size of an interrupt
2742 * stack in bytes.
2743 *
2744 * @par Default Value
2745 * The default value is #BSP_INTERRUPT_STACK_SIZE in case it is defined,
2746 * otherwise the default value is #CPU_STACK_MINIMUM_SIZE.
2747 *
2748 * @par Value Constraints
2749 * @parblock
2750 * The value of this configuration option shall satisfy all of the following
2751 * constraints:
2752 *
2753 * * It shall be greater than or equal to a BSP-specific and
2754 *   application-specific minimum value.
2755 *
2756 * * It shall be small enough so that the interrupt stack area calculation
2757 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
2758 *   <a href="https://en.cppreference.com/w/c/types/size_t">size_t</a>.
2759 *
2760 * * It shall be aligned according to #CPU_INTERRUPT_STACK_ALIGNMENT.
2761 * @endparblock
2762 *
2763 * @par Notes
2764 * @parblock
2765 * There is one interrupt stack available for each configured processor
2766 * (#CONFIGURE_MAXIMUM_PROCESSORS).  The interrupt stack areas are statically
2767 * allocated in a special linker section (``.rtemsstack.interrupt``). The
2768 * placement of this linker section is BSP-specific.
2769 *
2770 * Some BSPs use the interrupt stack as the initialization stack which is used
2771 * to perform the sequential system initialization before the multithreading is
2772 * started.
2773 *
2774 * The interrupt stacks are covered by the stack checker, see
2775 * #CONFIGURE_STACK_CHECKER_ENABLED.  However, using a too small interrupt
2776 * stack size may still result in undefined behaviour.
2777 *
2778 * In releases before RTEMS 5.1 the default value was
2779 * #CONFIGURE_MINIMUM_TASK_STACK_SIZE instead of #CPU_STACK_MINIMUM_SIZE.
2780 * @endparblock
2781 */
2782#define CONFIGURE_INTERRUPT_STACK_SIZE
2783
[e697baf]2784/* Generated from spec:/acfg/if/malloc-dirty */
2785
[e812f81]2786/**
2787 * @brief This configuration option is a boolean feature define.
2788 *
2789 * In case this configuration option is defined, then each memory area returned
2790 * by C Program Heap allocator functions such as malloc() is dirtied with a
2791 * ``0xCF`` byte pattern before it is handed over to the application.
2792 *
2793 * @par Default Configuration
2794 * If this configuration option is undefined, then the described feature is not
2795 * enabled.
2796 *
2797 * @par Notes
2798 * The dirtying performed by this option is carried out for each successful
2799 * memory allocation from the C Program Heap in contrast to
2800 * #CONFIGURE_DIRTY_MEMORY which dirties the memory only once during the system
2801 * initialization.
2802 */
2803#define CONFIGURE_MALLOC_DIRTY
2804
[e697baf]2805/* Generated from spec:/acfg/if/max-file-descriptors */
2806
[e812f81]2807/**
2808 * @brief This configuration option is an integer define.
2809 *
2810 * The value of this configuration option defines the maximum number of file
2811 * like objects that can be concurrently open.
2812 *
2813 * @par Default Value
2814 * The default value is 3.
2815 *
2816 * @par Value Constraints
2817 * @parblock
2818 * The value of this configuration option shall satisfy all of the following
2819 * constraints:
2820 *
[eefe7009]2821 * * It shall be greater than or equal to zero.
[e812f81]2822 *
2823 * * It shall be less than or equal to <a
2824 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
2825 *
2826 * * It shall be less than or equal to a BSP-specific and application-specific
2827 *   value which depends on the size of the memory available to the
2828 *   application.
2829 * @endparblock
2830 *
2831 * @par Notes
2832 * The default value of three file descriptors allows RTEMS to support standard
2833 * input, output, and error I/O streams on ``/dev/console``.
2834 */
2835#define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS
2836
[e697baf]2837/* Generated from spec:/acfg/if/max-processors */
2838
[e812f81]2839/**
2840 * @brief This configuration option is an integer define.
2841 *
2842 * The value of this configuration option defines the maximum number of
2843 * processors an application intends to use.  The number of actually available
2844 * processors depends on the hardware and may be less.  It is recommended to
2845 * use the smallest value suitable for the application in order to save memory.
2846 * Each processor needs an IDLE task stack and interrupt stack for example.
2847 *
2848 * @par Default Value
2849 * The default value is 1.
2850 *
2851 * @par Value Constraints
[eefe7009]2852 * @parblock
2853 * The value of this configuration option shall satisfy all of the following
2854 * constraints:
2855 *
2856 * * It shall be greater than or equal to one.
2857 *
2858 * * It shall be less than or equal to #CPU_MAXIMUM_PROCESSORS.
2859 * @endparblock
[e812f81]2860 *
2861 * @par Notes
2862 * @parblock
2863 * If there are more processors available than configured, the rest will be
2864 * ignored.
2865 *
2866 * This configuration option is only evaluated in SMP configurations (e.g.
2867 * RTEMS was built with the ``--enable-smp`` build configuration option).  In
2868 * all other configurations it has no effect.
2869 * @endparblock
2870 */
2871#define CONFIGURE_MAXIMUM_PROCESSORS
2872
[0a9ba963]2873/* Generated from spec:/acfg/if/max-thread-local-storage-size */
2874
2875/**
2876 * @brief This configuration option is an integer define.
2877 *
2878 * If the value of this configuration option is greater than zero, then it
2879 * defines the maximum thread-local storage size, otherwise the thread-local
2880 * storage size is defined by the linker depending on the thread-local storage
2881 * objects used by the application in the statically-linked executable.
2882 *
2883 * @par Default Value
2884 * The default value is 0.
2885 *
2886 * @par Constraints
2887 * @parblock
2888 * The following constraints apply to this configuration option:
2889 *
2890 * * The value of the configuration option shall be greater than or equal to
2891 *   zero.
2892 *
2893 * * The value of the configuration option shall be less than or equal to <a
2894 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
2895 *
2896 * * The value of the configuration option shall be an integral multiple of
2897 *   #RTEMS_TASK_STORAGE_ALIGNMENT.
2898 * @endparblock
2899 *
2900 * @par Notes
2901 * @parblock
2902 * This configuration option can be used to reserve space for the dynamic
2903 * linking of modules with thread-local storage objects.
2904 *
2905 * If the thread-local storage size defined by the thread-local storage objects
2906 * used by the application in the statically-linked executable is greater than
2907 * a non-zero value of this configuration option, then a fatal error will occur
2908 * during system initialization.
2909 *
2910 * Use RTEMS_ALIGN_UP() and #RTEMS_TASK_STORAGE_ALIGNMENT to adjust the size to
2911 * meet the minimum alignment requirement of a thread-local storage area.
2912 *
2913 * The actual thread-local storage size is determined when the application
2914 * executable is linked.  The ``rtems-exeinfo`` command line tool included in
2915 * the RTEMS Tools can be used to obtain the thread-local storage size and
2916 * alignment of an application executable.
2917 * @endparblock
2918 */
2919#define CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE
2920
[e697baf]2921/* Generated from spec:/acfg/if/max-thread-name-size */
2922
[e812f81]2923/**
2924 * @brief This configuration option is an integer define.
2925 *
2926 * The value of this configuration option defines the maximum thread name size
2927 * including the terminating ``NUL`` character.
2928 *
2929 * @par Default Value
2930 * The default value is 16.
2931 *
2932 * @par Value Constraints
2933 * @parblock
2934 * The value of this configuration option shall satisfy all of the following
2935 * constraints:
2936 *
[eefe7009]2937 * * It shall be greater than or equal to zero.
[e812f81]2938 *
2939 * * It shall be less than or equal to <a
2940 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
2941 *
2942 * * It shall be less than or equal to a BSP-specific and application-specific
2943 *   value which depends on the size of the memory available to the
2944 *   application.
2945 * @endparblock
2946 *
2947 * @par Notes
2948 * @parblock
2949 * The default value was chosen for Linux compatibility, see <a
2950 * href=http://man7.org/linux/man-pages/man3/pthread_setname_np.3.html>PTHREAD_SETNAME_NP(3)</a>.
2951 *
2952 * The size of the thread control block is increased by the maximum thread name
2953 * size.
2954 *
2955 * This configuration option is available since RTEMS 5.1.
2956 * @endparblock
2957 */
2958#define CONFIGURE_MAXIMUM_THREAD_NAME_SIZE
2959
[e697baf]2960/* Generated from spec:/acfg/if/memory-overhead */
2961
[e812f81]2962/**
2963 * @brief This configuration option is an integer define.
2964 *
2965 * The value of this configuration option defines the number of kilobytes the
2966 * application wishes to add to the RTEMS Workspace size calculated by
2967 * ``<rtems/confdefs.h>``.
2968 *
2969 * @par Default Value
2970 * The default value is 0.
2971 *
2972 * @par Value Constraints
2973 * @parblock
2974 * The value of this configuration option shall satisfy all of the following
2975 * constraints:
2976 *
[eefe7009]2977 * * It shall be greater than or equal to zero.
[e812f81]2978 *
2979 * * It shall be less than or equal to a BSP-specific and application-specific
2980 *   value which depends on the size of the memory available to the
2981 *   application.
2982 *
2983 * * It shall be small enough so that the RTEMS Workspace size calculation
2984 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
2985 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
2986 * @endparblock
2987 *
2988 * @par Notes
2989 * This configuration option should only be used when it is suspected that a
2990 * bug in ``<rtems/confdefs.h>`` has resulted in an underestimation.  Typically
2991 * the memory allocation will be too low when an application does not account
2992 * for all message queue buffers or task stacks, see
2993 * #CONFIGURE_MESSAGE_BUFFER_MEMORY.
2994 */
2995#define CONFIGURE_MEMORY_OVERHEAD
2996
[e697baf]2997/* Generated from spec:/acfg/if/message-buffer-memory */
2998
[e812f81]2999/**
3000 * @brief This configuration option is an integer define.
3001 *
3002 * The value of this configuration option defines the number of bytes reserved
3003 * for message queue buffers in the RTEMS Workspace.
3004 *
3005 * @par Default Value
3006 * The default value is 0.
3007 *
3008 * @par Value Constraints
3009 * @parblock
3010 * The value of this configuration option shall satisfy all of the following
3011 * constraints:
3012 *
[eefe7009]3013 * * It shall be greater than or equal to zero.
[e812f81]3014 *
3015 * * It shall be less than or equal to a BSP-specific and application-specific
3016 *   value which depends on the size of the memory available to the
3017 *   application.
3018 *
3019 * * It shall be small enough so that the RTEMS Workspace size calculation
3020 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
3021 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3022 * @endparblock
3023 *
3024 * @par Notes
3025 * @parblock
3026 * The configuration options #CONFIGURE_MAXIMUM_MESSAGE_QUEUES and
3027 * #CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES define only how many message queues
3028 * can be created by the application.  The memory for the message buffers is
3029 * configured by this option.  For each message queue you have to reserve some
3030 * memory for the message buffers.  The size depends on the maximum number of
3031 * pending messages and the maximum size of the messages of a message queue.
3032 * Use the ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE()`` macro to specify the
3033 * message buffer memory for each message queue and sum them up to define the
3034 * value for ``CONFIGURE_MAXIMUM_MESSAGE_QUEUES``.
3035 *
3036 * The interface for the ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE()`` help macro
3037 * is as follows:
3038 *
3039 * @code
3040 * CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( max_messages, max_msg_size )
3041 * @endcode
3042 *
3043 * Where ``max_messages`` is the maximum number of pending messages and
3044 * ``max_msg_size`` is the maximum size in bytes of the messages of the
3045 * corresponding message queue.  Both parameters shall be compile time
3046 * constants.  Not using this help macro (e.g. just using ``max_messages *
3047 * max_msg_size``) may result in an underestimate of the RTEMS Workspace size.
3048 *
3049 * The following example illustrates how the
3050 * ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE()`` help macro can be used to assist
3051 * in calculating the message buffer memory required.  In this example, there
3052 * are two message queues used in this application.  The first message queue
3053 * has a maximum of 24 pending messages with the message structure defined by
3054 * the type ``one_message_type``.  The other message queue has a maximum of 500
3055 * pending messages with the message structure defined by the type
3056 * ``other_message_type``.
3057 *
3058 * @code
3059 * #define CONFIGURE_MESSAGE_BUFFER_MEMORY ( \
3060 *     CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( \
3061 *       24, \
3062 *       sizeof( one_message_type ) \
3063 *     ) \
3064 *     + CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( \
3065 *       500, \
3066 *       sizeof( other_message_type ) \
3067 *     ) \
3068 *   )
3069 * @endcode
3070 * @endparblock
3071 */
3072#define CONFIGURE_MESSAGE_BUFFER_MEMORY
3073
[e697baf]3074/* Generated from spec:/acfg/if/microseconds-per-tick */
3075
[e812f81]3076/**
3077 * @brief This configuration option is an integer define.
3078 *
3079 * The value of this configuration option defines the length of time in
3080 * microseconds between clock ticks (clock tick quantum).
3081 *
3082 * When the clock tick quantum value is too low, the system will spend so much
3083 * time processing clock ticks that it does not have processing time available
3084 * to perform application work. In this case, the system will become
3085 * unresponsive.
3086 *
3087 * The lowest practical time quantum varies widely based upon the speed of the
3088 * target hardware and the architectural overhead associated with interrupts.
3089 * In general terms, you do not want to configure it lower than is needed for
3090 * the application.
3091 *
3092 * The clock tick quantum should be selected such that it all blocking and
3093 * delay times in the application are evenly divisible by it. Otherwise,
3094 * rounding errors will be introduced which may negatively impact the
3095 * application.
3096 *
3097 * @par Default Value
3098 * The default value is 10000.
3099 *
3100 * @par Value Constraints
3101 * @parblock
3102 * The value of this configuration option shall satisfy all of the following
3103 * constraints:
3104 *
[eefe7009]3105 * * It shall be greater than or equal to a value defined by the Clock Driver.
[e812f81]3106 *
[eefe7009]3107 * * It shall be less than or equal to a value defined by the Clock Driver.
[e812f81]3108 *
3109 * * The resulting clock ticks per second should be an integer.
3110 * @endparblock
3111 *
3112 * @par Notes
3113 * @parblock
3114 * This configuration option has no impact if the Clock Driver is not
3115 * configured, see #CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER.
3116 *
3117 * There may be Clock Driver specific limits on the resolution or maximum value
3118 * of a clock tick quantum.
3119 * @endparblock
3120 */
3121#define CONFIGURE_MICROSECONDS_PER_TICK
3122
[e697baf]3123/* Generated from spec:/acfg/if/min-task-stack-size */
3124
[e812f81]3125/**
3126 * @brief This configuration option is an integer define.
3127 *
3128 * The value of this configuration option defines the minimum stack size in
3129 * bytes for every user task or thread in the system.
3130 *
3131 * @par Default Value
3132 * The default value is #CPU_STACK_MINIMUM_SIZE.
3133 *
3134 * @par Value Constraints
3135 * @parblock
3136 * The value of this configuration option shall satisfy all of the following
3137 * constraints:
3138 *
3139 * * It shall be small enough so that the task stack space calculation carried
3140 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
3141 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3142 *
3143 * * It shall be greater than or equal to a BSP-specific and
3144 *   application-specific minimum value.
3145 * @endparblock
3146 *
3147 * @par Notes
3148 * @parblock
3149 * Adjusting this parameter should be done with caution.  Examining the actual
3150 * stack usage using the stack checker usage reporting facility is recommended
3151 * (see also #CONFIGURE_STACK_CHECKER_ENABLED).
3152 *
3153 * This parameter can be used to lower the minimum from that recommended. This
3154 * can be used in low memory systems to reduce memory consumption for stacks.
3155 * However, this shall be done with caution as it could increase the
3156 * possibility of a blown task stack.
3157 *
3158 * This parameter can be used to increase the minimum from that recommended.
3159 * This can be used in higher memory systems to reduce the risk of stack
3160 * overflow without performing analysis on actual consumption.
3161 *
3162 * By default, this configuration parameter defines also the minimum stack size
3163 * of POSIX threads.  This can be changed with the
3164 * #CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE configuration option.
3165 *
3166 * In releases before RTEMS 5.1 the ``CONFIGURE_MINIMUM_TASK_STACK_SIZE`` was
3167 * used to define the default value of #CONFIGURE_INTERRUPT_STACK_SIZE.
3168 * @endparblock
3169 */
3170#define CONFIGURE_MINIMUM_TASK_STACK_SIZE
3171
[e697baf]3172/* Generated from spec:/acfg/if/stack-checker-enabled */
3173
[e812f81]3174/**
3175 * @brief This configuration option is a boolean feature define.
3176 *
3177 * In case this configuration option is defined, then the stack checker is
3178 * enabled.
3179 *
3180 * @par Default Configuration
3181 * If this configuration option is undefined, then the described feature is not
3182 * enabled.
3183 *
3184 * @par Notes
3185 * @parblock
3186 * The stack checker performs run-time stack bounds checking.  This increases
3187 * the time required to create tasks as well as adding overhead to each context
3188 * switch.
3189 *
3190 * In 4.9 and older, this configuration option was named ``STACK_CHECKER_ON``.
3191 * @endparblock
3192 */
3193#define CONFIGURE_STACK_CHECKER_ENABLED
3194
[e697baf]3195/* Generated from spec:/acfg/if/ticks-per-time-slice */
3196
[e812f81]3197/**
3198 * @brief This configuration option is an integer define.
3199 *
3200 * The value of this configuration option defines the length of the timeslice
3201 * quantum in ticks for each task.
3202 *
3203 * @par Default Value
3204 * The default value is 50.
3205 *
3206 * @par Value Constraints
[eefe7009]3207 * @parblock
3208 * The value of this configuration option shall satisfy all of the following
3209 * constraints:
3210 *
3211 * * It shall be greater than or equal to zero.
3212 *
3213 * * It shall be less than or equal to <a
3214 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3215 * @endparblock
[e812f81]3216 *
3217 * @par Notes
3218 * This configuration option has no impact if the Clock Driver is not
3219 * configured, see #CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER.
3220 */
3221#define CONFIGURE_TICKS_PER_TIMESLICE
3222
[e697baf]3223/* Generated from spec:/acfg/if/unified-work-areas */
3224
[e812f81]3225/**
3226 * @brief This configuration option is a boolean feature define.
3227 *
3228 * In case this configuration option is defined, then the RTEMS Workspace and
3229 * the C Program Heap will be one pool of memory.
3230 *
3231 * @par Default Configuration
3232 * If this configuration option is undefined, then there will be separate
3233 * memory pools for the RTEMS Workspace and C Program Heap.
3234 *
3235 * @par Notes
3236 * @parblock
3237 * Having separate pools does have some advantages in the event a task blows a
3238 * stack or writes outside its memory area. However, in low memory systems the
3239 * overhead of the two pools plus the potential for unused memory in either
3240 * pool is very undesirable.
3241 *
3242 * In high memory environments, this is desirable when you want to use the <a
3243 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3244 * Objects</a> option.  You will be able to create objects until you run out of
3245 * all available memory rather then just until you run out of RTEMS Workspace.
3246 * @endparblock
3247 */
3248#define CONFIGURE_UNIFIED_WORK_AREAS
3249
[e697baf]3250/* Generated from spec:/acfg/if/unlimited-allocation-size */
3251
[e812f81]3252/**
3253 * @brief This configuration option is an integer define.
3254 *
3255 * If #CONFIGURE_UNLIMITED_OBJECTS is defined, then the value of this
3256 * configuration option defines the default objects maximum of all object
3257 * classes supporting <a
3258 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3259 * Objects</a> to ``rtems_resource_unlimited(
3260 * CONFIGURE_UNLIMITED_ALLOCATION_SIZE )``.
3261 *
3262 * @par Default Value
3263 * The default value is 8.
3264 *
3265 * @par Value Constraints
3266 * The value of this configuration option shall meet the constraints of all
3267 * object classes to which it is applied.
3268 *
3269 * @par Notes
3270 * @parblock
3271 * By allowing users to declare all resources as being unlimited the user can
3272 * avoid identifying and limiting the resources used.
3273 *
3274 * The object maximum of each class can be configured also individually using
3275 * the rtems_resource_unlimited() macro.
3276 * @endparblock
3277 */
3278#define CONFIGURE_UNLIMITED_ALLOCATION_SIZE
3279
[e697baf]3280/* Generated from spec:/acfg/if/unlimited-objects */
3281
[e812f81]3282/**
3283 * @brief This configuration option is a boolean feature define.
3284 *
3285 * In case this configuration option is defined, then unlimited objects are
3286 * used by default.
3287 *
3288 * @par Default Configuration
3289 * If this configuration option is undefined, then the described feature is not
3290 * enabled.
3291 *
3292 * @par Notes
3293 * @parblock
3294 * When using unlimited objects, it is common practice to also specify
3295 * #CONFIGURE_UNIFIED_WORK_AREAS so the system operates with a single pool of
3296 * memory for both RTEMS Workspace and C Program Heap.
3297 *
3298 * This option does not override an explicit configuration for a particular
3299 * object class by the user.
3300 *
3301 * See also #CONFIGURE_UNLIMITED_ALLOCATION_SIZE.
3302 * @endparblock
3303 */
3304#define CONFIGURE_UNLIMITED_OBJECTS
3305
[e697baf]3306/* Generated from spec:/acfg/if/verbose-system-init */
3307
[e812f81]3308/**
3309 * @brief This configuration option is a boolean feature define.
3310 *
3311 * In case this configuration option is defined, then the system initialization
3312 * is verbose.
3313 *
3314 * @par Default Configuration
3315 * If this configuration option is undefined, then the described feature is not
3316 * enabled.
3317 *
3318 * @par Notes
3319 * You may use this feature to debug system initialization issues.  The
3320 * printk() function is used to print the information.
3321 */
3322#define CONFIGURE_VERBOSE_SYSTEM_INITIALIZATION
3323
[e697baf]3324/* Generated from spec:/acfg/if/zero-workspace-automatically */
3325
[e812f81]3326/**
3327 * @brief This configuration option is a boolean feature define.
3328 *
3329 * In case this configuration option is defined, then the memory areas used for
3330 * the RTEMS Workspace and the C Program Heap are zeroed with a ``0x00`` byte
3331 * pattern during system initialization.
3332 *
3333 * @par Default Configuration
3334 * If this configuration option is undefined, then the described feature is not
3335 * enabled.
3336 *
3337 * @par Notes
3338 * Zeroing memory can add significantly to the system initialization time. It
3339 * is not necessary for RTEMS but is often assumed by support libraries.  In
3340 * case #CONFIGURE_DIRTY_MEMORY is also defined, then the memory is first
3341 * dirtied and then zeroed.
3342 */
3343#define CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY
3344
3345/** @} */
3346
[e697baf]3347/* Generated from spec:/acfg/if/group-idle */
3348
[e812f81]3349/**
3350 * @defgroup RTEMSApplConfigIdleTaskConfiguration Idle Task Configuration
3351 *
3352 * @ingroup RTEMSApplConfig
3353 *
3354 * This section describes configuration options related to the idle tasks.
3355 *
3356 * @{
3357 */
3358
[e697baf]3359/* Generated from spec:/acfg/if/idle-task-body */
3360
[e812f81]3361/**
3362 * @brief This configuration option is an initializer define.
3363 *
3364 * The value of this configuration option initializes the IDLE thread body.
3365 *
3366 * @par Default Value
3367 * If #BSP_IDLE_TASK_BODY is defined, then this will be the default value,
3368 * otherwise the default value is ``_CPU_Thread_Idle_body``.
3369 *
3370 * @par Value Constraints
3371 * The value of this configuration option shall be defined to a valid function
3372 * pointer of the type ``void *( *idle_body )( uintptr_t )``.
3373 *
3374 * @par Notes
3375 * @parblock
3376 * IDLE threads shall not block.  A blocking IDLE thread results in undefined
3377 * system behaviour because the scheduler assume that at least one ready thread
3378 * exists.
3379 *
3380 * IDLE threads can be used to initialize the application, see configuration
3381 * option #CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION.
3382 * @endparblock
3383 */
3384#define CONFIGURE_IDLE_TASK_BODY
3385
[e697baf]3386/* Generated from spec:/acfg/if/idle-task-init-appl */
3387
[e812f81]3388/**
3389 * @brief This configuration option is a boolean feature define.
3390 *
3391 * This configuration option is defined to indicate that the user has
3392 * configured **no** user initialization tasks or threads and that the user
3393 * provided IDLE task will perform application initialization and then
3394 * transform itself into an IDLE task.
3395 *
3396 * @par Default Configuration
3397 * If this configuration option is undefined, then the user is assumed to
3398 * provide one or more initialization tasks.
3399 *
3400 * @par Notes
3401 * @parblock
3402 * If you use this option be careful, the user IDLE task **cannot** block at
3403 * all during the initialization sequence.  Further, once application
3404 * initialization is complete, it shall make itself preemptible and enter an
3405 * idle body loop.
3406 *
3407 * The IDLE task shall run at the lowest priority of all tasks in the system.
3408 *
3409 * If this configuration option is defined, then it is mandatory to configure a
3410 * user IDLE task with the #CONFIGURE_IDLE_TASK_BODY configuration option,
3411 * otherwise a compile time error in the configuration file will occur.
3412 *
3413 * The application shall define exactly one of the following configuration
3414 * options
3415 *
3416 * * #CONFIGURE_RTEMS_INIT_TASKS_TABLE,
3417 *
3418 * * #CONFIGURE_POSIX_INIT_THREAD_TABLE, or
3419 *
3420 * * ``CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION``
3421 *
3422 * otherwise a compile time error in the configuration file will occur.
3423 * @endparblock
3424 */
3425#define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
3426
[e697baf]3427/* Generated from spec:/acfg/if/idle-task-stack-size */
3428
[e812f81]3429/**
3430 * @brief This configuration option is an integer define.
3431 *
3432 * The value of this configuration option defines the task stack size for an
3433 * IDLE task.
3434 *
3435 * @par Default Value
3436 * The default value is #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
3437 *
3438 * @par Value Constraints
3439 * @parblock
3440 * The value of this configuration option shall satisfy all of the following
3441 * constraints:
3442 *
3443 * * It shall be greater than or equal to a BSP-specific and
3444 *   application-specific minimum value.
3445 *
3446 * * It shall be small enough so that the IDLE task stack area calculation
3447 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
3448 *   <a href="https://en.cppreference.com/w/c/types/size_t">size_t</a>.
3449 * @endparblock
3450 *
3451 * @par Notes
3452 * In SMP configurations, there is one IDLE task per configured processor, see
3453 * #CONFIGURE_MAXIMUM_PROCESSORS.
3454 */
3455#define CONFIGURE_IDLE_TASK_STACK_SIZE
3456
[45ee958]3457/* Generated from spec:/acfg/if/idle-task-storage-size */
3458
3459/**
3460 * @brief This configuration option is an integer define.
3461 *
3462 * If this configuration option is specified, then the task storage areas for
3463 * the IDLE tasks are statically allocated by <rtems/confdefs.h>.  The value of
3464 * this configuration option defines the size in bytes of the task storage area
3465 * of each IDLE task in the system.
3466 *
3467 * @par Default Value
3468 * This configuration option has no default value.  If it is not specified,
3469 * then the task storage area for each IDLE task will allocated from the RTEMS
3470 * Workspace or through a custom IDLE task stack allocator.
3471 *
3472 * @par Constraints
3473 * The value of the configuration option shall be greater than or equal to
3474 * #CONFIGURE_IDLE_TASK_STACK_SIZE.
3475 *
3476 * @par Notes
3477 * @parblock
3478 * By default, the IDLE task storage areas are allocated from the RTEMS
3479 * Workspace.  Applications which do not want to use a heap allocator can use
3480 * this configuration option to use statically allocated memory for the IDLE
3481 * task storage areas.  The task storage area contains the task stack, the
3482 * thread-local storage, and the floating-point context on architectures with a
3483 * separate floating-point context.  The size of the thread-local storage area
3484 * is defined at link time or by the
3485 * #CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE configuration option.  You have
3486 * to estimate the actual thread-local storage size if you want to use this
3487 * configuration option.  If the IDLE task stack size would be less than the
3488 * value defined by the #CONFIGURE_IDLE_TASK_STACK_SIZE configuration option,
3489 * for example because the thread-local storage size is larger than expected,
3490 * then the system terminates with the INTERNAL_ERROR_CORE fatal source and the
3491 * INTERNAL_ERROR_IDLE_THREAD_STACK_TOO_SMALL fatal code during system
3492 * initialization.
3493 *
3494 * The value of this configuration option is passed to
3495 * RTEMS_TASK_STORAGE_SIZE() by <rtems/confdefs.h> to determine the actual size
3496 * of the statically allocated area to take architecture-specific overheads
3497 * into account.
3498 *
3499 * The
3500 *
3501 * * ``CONFIGURE_IDLE_TASK_STORAGE_SIZE``, and
3502 *
3503 * * #CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE
3504 *
3505 * configuration options are mutually exclusive.
3506 * @endparblock
3507 */
3508#define CONFIGURE_IDLE_TASK_STORAGE_SIZE
3509
[e812f81]3510/** @} */
3511
[e697baf]3512/* Generated from spec:/acfg/if/group-mpci */
3513
[e812f81]3514/**
[4e5327ff]3515 * @defgroup RTEMSApplConfigMultiprocessingConfiguration \
3516 *   Multiprocessing Configuration
[e812f81]3517 *
3518 * @ingroup RTEMSApplConfig
3519 *
3520 * This section describes multiprocessing related configuration options.  The
3521 * options are only used if RTEMS was built with the
3522 * ``--enable-multiprocessing`` build configuration option.  Additionally, this
3523 * class of configuration options are only applicable if the configuration
3524 * option #CONFIGURE_MP_APPLICATION is defined.  The multiprocessing (MPCI)
3525 * support must not be confused with the SMP support.
3526 *
3527 * @{
3528 */
3529
[e697baf]3530/* Generated from spec:/acfg/if/mp-extra-server-stack */
3531
[e812f81]3532/**
3533 * @brief This configuration option is an integer define.
3534 *
3535 * The value of this configuration option defines the number of bytes the
3536 * applications wishes to add to the MPCI task stack on top of
3537 * #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
3538 *
3539 * @par Default Value
3540 * The default value is 0.
3541 *
3542 * @par Value Constraints
3543 * @parblock
3544 * The value of this configuration option shall satisfy all of the following
3545 * constraints:
3546 *
[eefe7009]3547 * * It shall be greater than or equal to zero.
[e812f81]3548 *
3549 * * It shall be less than or equal to <a
3550 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3551 *
3552 * * It shall be small enough so that the MPCI receive server stack area
3553 *   calculation carried out by ``<rtems/confdefs.h>`` does not overflow an
3554 *   integer of type <a
3555 *   href="https://en.cppreference.com/w/c/types/size_t">size_t</a>.
3556 * @endparblock
3557 *
3558 * @par Notes
3559 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3560 * defined.
3561 */
3562#define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
3563
[e697baf]3564/* Generated from spec:/acfg/if/mp-appl */
3565
[e812f81]3566/**
3567 * @brief This configuration option is a boolean feature define.
3568 *
3569 * This configuration option is defined to indicate that the application
3570 * intends to be part of a multiprocessing configuration.  Additional
3571 * configuration options are assumed to be provided.
3572 *
3573 * @par Default Configuration
3574 * If this configuration option is undefined, then the multiprocessing services
3575 * are not initialized.
3576 *
3577 * @par Notes
3578 * This configuration option shall be undefined if the multiprocessing support
3579 * is not enabled (e.g. RTEMS was built without the
3580 * ``--enable-multiprocessing`` build configuration option).  Otherwise a
3581 * compile time error in the configuration file will occur.
3582 */
3583#define CONFIGURE_MP_APPLICATION
3584
[e697baf]3585/* Generated from spec:/acfg/if/mp-max-global-objects */
3586
[e812f81]3587/**
3588 * @brief This configuration option is an integer define.
3589 *
3590 * The value of this configuration option defines the maximum number of
3591 * concurrently active global objects in a multiprocessor system.
3592 *
3593 * @par Default Value
3594 * The default value is 32.
3595 *
3596 * @par Value Constraints
[eefe7009]3597 * @parblock
3598 * The value of this configuration option shall satisfy all of the following
3599 * constraints:
3600 *
3601 * * It shall be greater than or equal to zero.
3602 *
3603 * * It shall be less than or equal to <a
3604 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3605 * @endparblock
[e812f81]3606 *
3607 * @par Notes
3608 * @parblock
3609 * This value corresponds to the total number of objects which can be created
3610 * with the #RTEMS_GLOBAL attribute.
3611 *
3612 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3613 * defined.
3614 * @endparblock
3615 */
3616#define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
3617
[e697baf]3618/* Generated from spec:/acfg/if/mp-max-nodes */
3619
[e812f81]3620/**
3621 * @brief This configuration option is an integer define.
3622 *
3623 * The value of this configuration option defines the maximum number of nodes
3624 * in a multiprocessor system.
3625 *
3626 * @par Default Value
3627 * The default value is 2.
3628 *
3629 * @par Value Constraints
[eefe7009]3630 * @parblock
3631 * The value of this configuration option shall satisfy all of the following
3632 * constraints:
3633 *
3634 * * It shall be greater than or equal to zero.
3635 *
3636 * * It shall be less than or equal to <a
3637 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3638 * @endparblock
[e812f81]3639 *
3640 * @par Notes
3641 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3642 * defined.
3643 */
3644#define CONFIGURE_MP_MAXIMUM_NODES
3645
[e697baf]3646/* Generated from spec:/acfg/if/mp-max-proxies */
3647
[e812f81]3648/**
3649 * @brief This configuration option is an integer define.
3650 *
3651 * The value of this configuration option defines the maximum number of
3652 * concurrently active thread/task proxies on this node in a multiprocessor
3653 * system.
3654 *
3655 * @par Default Value
3656 * The default value is 32.
3657 *
3658 * @par Value Constraints
[eefe7009]3659 * @parblock
3660 * The value of this configuration option shall satisfy all of the following
3661 * constraints:
3662 *
3663 * * It shall be greater than or equal to zero.
3664 *
3665 * * It shall be less than or equal to <a
3666 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3667 * @endparblock
[e812f81]3668 *
3669 * @par Notes
3670 * @parblock
3671 * Since a proxy is used to represent a remote task/thread which is blocking on
3672 * this node. This configuration parameter reflects the maximum number of
3673 * remote tasks/threads which can be blocked on objects on this node, see <a
3674 * href=https://docs.rtems.org/branches/master/c-user/multiprocessing.html#proxies>Proxies</a>.
3675 *
3676 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3677 * defined.
3678 * @endparblock
3679 */
3680#define CONFIGURE_MP_MAXIMUM_PROXIES
3681
[e697baf]3682/* Generated from spec:/acfg/if/mp-mpci-table-pointer */
3683
[e812f81]3684/**
3685 * @brief This configuration option is an initializer define.
3686 *
3687 * The value of this configuration option initializes the MPCI Configuration
3688 * Table.
3689 *
3690 * @par Default Value
3691 * The default value is ``&MPCI_table``.
3692 *
3693 * @par Value Constraints
3694 * The value of this configuration option shall be a pointer to
3695 * ::rtems_mpci_table.
3696 *
3697 * @par Notes
3698 * @parblock
3699 * RTEMS provides a Shared Memory MPCI Device Driver which can be used on any
3700 * Multiprocessor System assuming the BSP provides the proper set of supporting
3701 * methods.
3702 *
3703 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3704 * defined.
3705 * @endparblock
3706 */
3707#define CONFIGURE_MP_MPCI_TABLE_POINTER
3708
[e697baf]3709/* Generated from spec:/acfg/if/mp-node-number */
3710
[e812f81]3711/**
3712 * @brief This configuration option is an integer define.
3713 *
3714 * The value of this configuration option defines the node number of this node
3715 * in a multiprocessor system.
3716 *
3717 * @par Default Value
3718 * The default value is ``NODE_NUMBER``.
3719 *
3720 * @par Value Constraints
[eefe7009]3721 * @parblock
3722 * The value of this configuration option shall satisfy all of the following
3723 * constraints:
3724 *
3725 * * It shall be greater than or equal to zero.
3726 *
3727 * * It shall be less than or equal to <a
3728 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3729 * @endparblock
[e812f81]3730 *
3731 * @par Notes
3732 * @parblock
3733 * In the RTEMS Multiprocessing Test Suite, the node number is derived from the
3734 * Makefile variable ``NODE_NUMBER``. The same code is compiled with the
3735 * ``NODE_NUMBER`` set to different values. The test programs behave
3736 * differently based upon their node number.
3737 *
3738 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3739 * defined.
3740 * @endparblock
3741 */
3742#define CONFIGURE_MP_NODE_NUMBER
3743
3744/** @} */
3745
[e697baf]3746/* Generated from spec:/acfg/if/group-posix */
3747
[e812f81]3748/**
3749 * @defgroup RTEMSApplConfigPOSIXAPIConfiguration POSIX API Configuration
3750 *
3751 * @ingroup RTEMSApplConfig
3752 *
3753 * This section describes configuration options related to the POSIX API.  Most
3754 * POSIX API objects are available by default since RTEMS 5.1.  The queued
3755 * signals and timers are only available if RTEMS was built with the
3756 * ``--enable-posix`` build configuration option.
3757 *
3758 * @{
3759 */
3760
[e697baf]3761/* Generated from spec:/acfg/if/max-posix-keys */
3762
[e812f81]3763/**
3764 * @brief This configuration option is an integer define.
3765 *
3766 * The value of this configuration option defines the maximum number of POSIX
3767 * API Keys that can be concurrently active.
3768 *
3769 * @par Default Value
3770 * The default value is 0.
3771 *
3772 * @par Value Constraints
3773 * @parblock
3774 * The value of this configuration option shall satisfy all of the following
3775 * constraints:
3776 *
[eefe7009]3777 * * It shall be greater than or equal to zero.
[e812f81]3778 *
3779 * * It shall be less than or equal to 65535.
3780 *
3781 * * It shall be less than or equal to a BSP-specific and application-specific
3782 *   value which depends on the size of the memory available to the
3783 *   application.
3784 *
3785 * * It may be defined through rtems_resource_unlimited() the enable unlimited
[eefe7009]3786 *   objects for the object class, if the value passed to
3787 *   rtems_resource_unlimited() satisfies all other constraints of the
[e812f81]3788 *   configuration option.
3789 * @endparblock
3790 *
3791 * @par Notes
3792 * This object class can be configured in unlimited allocation mode, see <a
3793 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3794 * Objects</a>.
3795 */
3796#define CONFIGURE_MAXIMUM_POSIX_KEYS
3797
[e697baf]3798/* Generated from spec:/acfg/if/max-posix-key-value-pairs */
3799
[e812f81]3800/**
3801 * @brief This configuration option is an integer define.
3802 *
3803 * The value of this configuration option defines the maximum number of key
3804 * value pairs used by POSIX API Keys that can be concurrently active.
3805 *
3806 * @par Default Value
3807 * The default value is #CONFIGURE_MAXIMUM_POSIX_KEYS *
3808 * #CONFIGURE_MAXIMUM_TASKS + #CONFIGURE_MAXIMUM_POSIX_THREADS.
3809 *
3810 * @par Value Constraints
3811 * @parblock
3812 * The value of this configuration option shall satisfy all of the following
3813 * constraints:
3814 *
[eefe7009]3815 * * It shall be greater than or equal to zero.
[e812f81]3816 *
3817 * * It shall be less than or equal to 65535.
3818 *
3819 * * It shall be less than or equal to a BSP-specific and application-specific
3820 *   value which depends on the size of the memory available to the
3821 *   application.
3822 *
3823 * * It may be defined through rtems_resource_unlimited() the enable unlimited
[eefe7009]3824 *   objects for the object class, if the value passed to
3825 *   rtems_resource_unlimited() satisfies all other constraints of the
[e812f81]3826 *   configuration option.
3827 * @endparblock
3828 *
3829 * @par Notes
3830 * @parblock
3831 * This object class can be configured in unlimited allocation mode, see <a
3832 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3833 * Objects</a>.
3834 *
3835 * A key value pair is created by pthread_setspecific() if the value is not <a
3836 * href="https://en.cppreference.com/w/c/types/NULL">NULL</a>, otherwise it is
3837 * deleted.
3838 * @endparblock
3839 */
3840#define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS
3841
[e697baf]3842/* Generated from spec:/acfg/if/max-posix-message-queues */
3843
[e812f81]3844/**
3845 * @brief This configuration option is an integer define.
3846 *
3847 * The value of this configuration option defines the maximum number of POSIX
3848 * API Message Queues that can be concurrently active.
3849 *
3850 * @par Default Value
3851 * The default value is 0.
3852 *
3853 * @par Value Constraints
3854 * @parblock
3855 * The value of this configuration option shall satisfy all of the following
3856 * constraints:
3857 *
[eefe7009]3858 * * It shall be greater than or equal to zero.
[e812f81]3859 *
3860 * * It shall be less than or equal to 65535.
3861 *
3862 * * It shall be less than or equal to a BSP-specific and application-specific
3863 *   value which depends on the size of the memory available to the
3864 *   application.
3865 *
3866 * * It shall be small enough so that the RTEMS Workspace size calculation
3867 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
3868 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3869 *
3870 * * It may be defined through rtems_resource_unlimited() the enable unlimited
[eefe7009]3871 *   objects for the object class, if the value passed to
3872 *   rtems_resource_unlimited() satisfies all other constraints of the
[e812f81]3873 *   configuration option.
3874 * @endparblock
3875 *
3876 * @par Notes
3877 * This object class can be configured in unlimited allocation mode, see <a
3878 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3879 * Objects</a>.  You have to account for the memory used to store the messages
3880 * of each message queue, see #CONFIGURE_MESSAGE_BUFFER_MEMORY.
3881 */
3882#define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES
3883
[e697baf]3884/* Generated from spec:/acfg/if/max-posix-queued-signals */
3885
[e812f81]3886/**
3887 * @brief This configuration option is an integer define.
3888 *
3889 * The value of this configuration option defines the maximum number of POSIX
3890 * API Queued Signals that can be concurrently active.
3891 *
3892 * @par Default Value
3893 * The default value is 0.
3894 *
3895 * @par Value Constraints
3896 * @parblock
3897 * The value of this configuration option shall satisfy all of the following
3898 * constraints:
3899 *
[eefe7009]3900 * * It shall be greater than or equal to zero.
[e812f81]3901 *
3902 * * It shall be less than or equal to a BSP-specific and application-specific
3903 *   value which depends on the size of the memory available to the
3904 *   application.
3905 *
3906 * * It shall be small enough so that the RTEMS Workspace size calculation
3907 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
3908 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3909 *
3910 * * It shall be zero if the POSIX API is not enabled (e.g. RTEMS was built
[eefe7009]3911 *   without the ``RTEMS_POSIX_API = True`` build configuration option).
3912 *   Otherwise a compile time error in the configuration file will occur.
[e812f81]3913 * @endparblock
3914 *
3915 * @par Notes
3916 * @parblock
3917 * Unlimited objects are not available for queued signals.
3918 *
3919 * Queued signals are only available if RTEMS was built with the
3920 * ``--enable-posix`` build configuration option.
3921 * @endparblock
3922 */
3923#define CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS
3924
[e697baf]3925/* Generated from spec:/acfg/if/max-posix-semaphores */
3926
[e812f81]3927/**
3928 * @brief This configuration option is an integer define.
3929 *
3930 * The value of this configuration option defines the maximum number of POSIX
3931 * API Named Semaphores that can be concurrently active.
3932 *
3933 * @par Default Value
3934 * The default value is 0.
3935 *
3936 * @par Value Constraints
3937 * @parblock
3938 * The value of this configuration option shall satisfy all of the following
3939 * constraints:
3940 *
[eefe7009]3941 * * It shall be greater than or equal to zero.
[e812f81]3942 *
3943 * * It shall be less than or equal to 65535.
3944 *
3945 * * It shall be less than or equal to a BSP-specific and application-specific
3946 *   value which depends on the size of the memory available to the
3947 *   application.
3948 *
3949 * * It shall be small enough so that the RTEMS Workspace size calculation
3950 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
3951 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3952 *
3953 * * It may be defined through rtems_resource_unlimited() the enable unlimited
[eefe7009]3954 *   objects for the object class, if the value passed to
3955 *   rtems_resource_unlimited() satisfies all other constraints of the
[e812f81]3956 *   configuration option.
3957 * @endparblock
3958 *
3959 * @par Notes
3960 * @parblock
3961 * This object class can be configured in unlimited allocation mode, see <a
3962 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3963 * Objects</a>.
3964 *
3965 * Named semaphores are created with sem_open().  Semaphores initialized with
3966 * sem_init() are not affected by this configuration option since the storage
3967 * space for these semaphores is user-provided.
3968 * @endparblock
3969 */
3970#define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
3971
[e697baf]3972/* Generated from spec:/acfg/if/max-posix-shms */
3973
[e812f81]3974/**
3975 * @brief This configuration option is an integer define.
3976 *
3977 * The value of this configuration option defines the maximum number of POSIX
3978 * API Shared Memory objects that can be concurrently active.
3979 *
3980 * @par Default Value
3981 * The default value is 0.
3982 *
3983 * @par Value Constraints
3984 * @parblock
3985 * The value of this configuration option shall satisfy all of the following
3986 * constraints:
3987 *
[eefe7009]3988 * * It shall be greater than or equal to zero.
[e812f81]3989 *
3990 * * It shall be less than or equal to 65535.
3991 *
3992 * * It shall be less than or equal to a BSP-specific and application-specific
3993 *   value which depends on the size of the memory available to the
3994 *   application.
3995 *
3996 * * It shall be small enough so that the RTEMS Workspace size calculation
3997 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
3998 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3999 *
4000 * * It may be defined through rtems_resource_unlimited() the enable unlimited
[eefe7009]4001 *   objects for the object class, if the value passed to
4002 *   rtems_resource_unlimited() satisfies all other constraints of the
[e812f81]4003 *   configuration option.
4004 * @endparblock
4005 *
4006 * @par Notes
4007 * This object class can be configured in unlimited allocation mode, see <a
4008 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
4009 * Objects</a>.
4010 */
4011#define CONFIGURE_MAXIMUM_POSIX_SHMS
4012
[e697baf]4013/* Generated from spec:/acfg/if/max-posix-threads */
4014
[e812f81]4015/**
4016 * @brief This configuration option is an integer define.
4017 *
4018 * The value of this configuration option defines the maximum number of POSIX
4019 * API Threads that can be concurrently active.
4020 *
4021 * @par Default Value
4022 * The default value is 0.
4023 *
4024 * @par Value Constraints
4025 * @parblock
4026 * The value of this configuration option shall satisfy all of the following
4027 * constraints:
4028 *
[eefe7009]4029 * * It shall be greater than or equal to zero.
[e812f81]4030 *
4031 * * It shall be less than or equal to 65535.
4032 *
4033 * * It shall be less than or equal to a BSP-specific and application-specific
4034 *   value which depends on the size of the memory available to the
4035 *   application.
4036 *
4037 * * It shall be small enough so that the task stack space calculation carried
4038 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
4039 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
4040 * @endparblock
4041 *
4042 * @par Notes
4043 * @parblock
4044 * This object class can be configured in unlimited allocation mode, see <a
4045 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
4046 * Objects</a>.
4047 *
4048 * This calculations for the required memory in the RTEMS Workspace for threads
4049 * assume that each thread has a minimum stack size and has floating point
4050 * support enabled.  The configuration option #CONFIGURE_EXTRA_TASK_STACKS is
4051 * used to specify thread stack requirements **above** the minimum size
4052 * required.
4053 *
4054 * The maximum number of Classic API Tasks is specified by
4055 * #CONFIGURE_MAXIMUM_TASKS.
4056 *
4057 * All POSIX threads have floating point enabled.
4058 * @endparblock
4059 */
4060#define CONFIGURE_MAXIMUM_POSIX_THREADS
4061
[e697baf]4062/* Generated from spec:/acfg/if/max-posix-timers */
4063
[e812f81]4064/**
4065 * @brief This configuration option is an integer define.
4066 *
4067 * The value of this configuration option defines the maximum number of POSIX
4068 * API Timers that can be concurrently active.
4069 *
4070 * @par Default Value
4071 * The default value is 0.
4072 *
4073 * @par Value Constraints
4074 * @parblock
4075 * The value of this configuration option shall satisfy all of the following
4076 * constraints:
4077 *
[eefe7009]4078 * * It shall be greater than or equal to zero.
[e812f81]4079 *
4080 * * It shall be less than or equal to 65535.
4081 *
4082 * * It shall be less than or equal to a BSP-specific and application-specific
4083 *   value which depends on the size of the memory available to the
4084 *   application.
4085 *
4086 * * It may be defined through rtems_resource_unlimited() the enable unlimited
[eefe7009]4087 *   objects for the object class, if the value passed to
4088 *   rtems_resource_unlimited() satisfies all other constraints of the
[e812f81]4089 *   configuration option.
4090 *
4091 * * It shall be zero if the POSIX API is not enabled (e.g. RTEMS was built
[eefe7009]4092 *   without the ``RTEMS_POSIX_API = True`` build configuration option).
4093 *   Otherwise a compile time error in the configuration file will occur.
[e812f81]4094 * @endparblock
4095 *
4096 * @par Notes
4097 * @parblock
4098 * This object class can be configured in unlimited allocation mode, see <a
4099 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
4100 * Objects</a>.
4101 *
4102 * Timers are only available if RTEMS was built with the ``--enable-posix``
4103 * build configuration option.
4104 * @endparblock
4105 */
4106#define CONFIGURE_MAXIMUM_POSIX_TIMERS
4107
[e697baf]4108/* Generated from spec:/acfg/if/min-posix-thread-stack-size */
4109
[e812f81]4110/**
4111 * @brief This configuration option is an integer define.
4112 *
4113 * The value of this configuration option defines the minimum stack size in
4114 * bytes for every POSIX thread in the system.
4115 *
4116 * @par Default Value
4117 * The default value is two times the value of
4118 * #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
4119 *
4120 * @par Value Constraints
4121 * @parblock
4122 * The value of this configuration option shall satisfy all of the following
4123 * constraints:
4124 *
4125 * * It shall be small enough so that the task stack space calculation carried
4126 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
4127 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
4128 *
4129 * * It shall be greater than or equal to a BSP-specific and
4130 *   application-specific minimum value.
4131 * @endparblock
4132 */
4133#define CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
4134
4135/** @} */
4136
[e697baf]4137/* Generated from spec:/acfg/if/group-posixinit */
4138
[e812f81]4139/**
[4e5327ff]4140 * @defgroup RTEMSApplConfigPOSIXInitializationThreadConfiguration \
4141 *   POSIX Initialization Thread Configuration
[e812f81]4142 *
4143 * @ingroup RTEMSApplConfig
4144 *
4145 * This section describes configuration options related to the POSIX
4146 * initialization thread.
4147 *
4148 * @{
4149 */
4150
[e697baf]4151/* Generated from spec:/acfg/if/posix-init-thread-entry-point */
4152
[e812f81]4153/**
4154 * @brief This configuration option is an initializer define.
4155 *
4156 * The value of this configuration option initializes the entry point of the
4157 * POSIX API initialization thread.
4158 *
4159 * @par Default Value
4160 * The default value is ``POSIX_Init``.
4161 *
4162 * @par Value Constraints
4163 * The value of this configuration option shall be defined to a valid function
4164 * pointer of the type ``void *( *entry_point )( void * )``.
4165 *
4166 * @par Notes
4167 * The application shall provide the function referenced by this configuration
4168 * option.
4169 */
4170#define CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT
4171
[e697baf]4172/* Generated from spec:/acfg/if/posix-init-thread-stack-size */
4173
[e812f81]4174/**
4175 * @brief This configuration option is an integer define.
4176 *
4177 * The value of this configuration option defines the thread stack size of the
4178 * POSIX API initialization thread.
4179 *
4180 * @par Default Value
4181 * The default value is #CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE.
4182 *
4183 * @par Value Constraints
4184 * @parblock
4185 * The value of this configuration option shall satisfy all of the following
4186 * constraints:
4187 *
4188 * * It shall be greater than or equal to #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
4189 *
4190 * * It shall be small enough so that the task stack space calculation carried
4191 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
4192 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
4193 * @endparblock
4194 */
4195#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
4196
[e697baf]4197/* Generated from spec:/acfg/if/posix-init-thread-table */
4198
[e812f81]4199/**
4200 * @brief This configuration option is a boolean feature define.
4201 *
4202 * In case this configuration option is defined, then exactly one POSIX
4203 * initialization thread is configured.
4204 *
4205 * @par Default Configuration
4206 * If this configuration option is undefined, then the described feature is not
4207 * enabled.
4208 *
4209 * @par Notes
4210 * @parblock
4211 * The application shall define exactly one of the following configuration
4212 * options
4213 *
4214 * * #CONFIGURE_RTEMS_INIT_TASKS_TABLE,
4215 *
4216 * * ``CONFIGURE_POSIX_INIT_THREAD_TABLE``, or
4217 *
4218 * * #CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
4219 *
4220 * otherwise a compile time error in the configuration file will occur.
4221 * @endparblock
4222 */
4223#define CONFIGURE_POSIX_INIT_THREAD_TABLE
4224
4225/** @} */
4226
[e697baf]4227/* Generated from spec:/acfg/if/group-schedgeneral */
4228
[e812f81]4229/**
[4e5327ff]4230 * @defgroup RTEMSApplConfigGeneralSchedulerConfiguration \
4231 *   General Scheduler Configuration
[e812f81]4232 *
4233 * @ingroup RTEMSApplConfig
4234 *
4235 * This section describes configuration options related to selecting a
4236 * scheduling algorithm for an application.  A scheduler configuration is
4237 * optional and only necessary in very specific circumstances.  A normal
4238 * application configuration does not need any of the configuration options
4239 * described in this section.
4240 *
4241 * By default, the <a
4242 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-scheduler>Deterministic
4243 * Priority Scheduler</a> algorithm is used in uniprocessor configurations.  In
4244 * case SMP is enabled and the configured maximum processors
4245 * (#CONFIGURE_MAXIMUM_PROCESSORS) is greater than one, then the <a
4246 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#earliest-deadline-first-smp-scheduler>Earliest
4247 * Deadline First SMP Scheduler</a> is selected as the default scheduler
4248 * algorithm.
4249 *
4250 * For the schedulers provided by RTEMS (see <a
4251 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html>Scheduling
4252 * Concepts</a>), the configuration is straightforward.  All that is required
4253 * is to define the configuration option which specifies which scheduler you
4254 * want for in your application.
4255 *
4256 * The pluggable scheduler interface also enables the user to provide their own
4257 * scheduling algorithm.  If you choose to do this, you must define multiple
4258 * configuration option.
4259 *
4260 * @{
4261 */
4262
[e697baf]4263/* Generated from spec:/acfg/if/cbs-max-servers */
4264
[e812f81]4265/**
4266 * @brief This configuration option is an integer define.
4267 *
4268 * The value of this configuration option defines the maximum number Constant
4269 * Bandwidth Servers that can be concurrently active.
4270 *
4271 * @par Default Value
4272 * The default value is #CONFIGURE_MAXIMUM_TASKS.
4273 *
4274 * @par Value Constraints
4275 * @parblock
4276 * The value of this configuration option shall satisfy all of the following
4277 * constraints:
4278 *
[eefe7009]4279 * * It shall be greater than or equal to zero.
[e812f81]4280 *
4281 * * It shall be less than or equal to <a
4282 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
4283 *
4284 * * It shall be less than or equal to a BSP-specific and application-specific
4285 *   value which depends on the size of the memory available to the
4286 *   application.
4287 * @endparblock
4288 *
4289 * @par Notes
4290 * This configuration option is only evaluated if the configuration option
4291 * #CONFIGURE_SCHEDULER_CBS is defined.
4292 */
4293#define CONFIGURE_CBS_MAXIMUM_SERVERS
4294
[e697baf]4295/* Generated from spec:/acfg/if/max-priority */
4296
[e812f81]4297/**
4298 * @brief This configuration option is an integer define.
4299 *
4300 * For the following schedulers
4301 *
4302 * * <a
4303 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-scheduler>Deterministic
4304 *   Priority Scheduler</a>, which is the default in uniprocessor
4305 *   configurations and can be configured through the
4306 *   #CONFIGURE_SCHEDULER_PRIORITY configuration option,
4307 *
4308 * * <a
4309 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-smp-scheduler>Deterministic
4310 *   Priority SMP Scheduler</a> which can be configured through the
4311 *   #CONFIGURE_SCHEDULER_PRIORITY_SMP configuration option, and
4312 *
4313 * * <a
4314 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#arbitrary-processor-affinity-priority-smp-scheduler>Arbitrary
4315 *   Processor Affinity Priority SMP Scheduler</a> which can be configured
4316 *   through the #CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP configuration
4317 *   option
4318 *
4319 * this configuration option specifies the maximum numeric priority of any task
4320 * for these schedulers and one less that the number of priority levels for
4321 * these schedulers.  For all other schedulers provided by RTEMS, this
4322 * configuration option has no effect.
4323 *
4324 * @par Default Value
4325 * The default value is 255.
4326 *
4327 * @par Value Constraints
[eefe7009]4328 * The value of this configuration option shall be equal to 3, 7, 31, 63, 127,
4329 * or 255.
[e812f81]4330 *
4331 * @par Notes
4332 * @parblock
4333 * The numerically greatest priority is the logically lowest priority in the
4334 * system and will thus be used by the IDLE task.
4335 *
4336 * Priority zero is reserved for internal use by RTEMS and is not available to
4337 * applications.
4338 *
4339 * Reducing the number of priorities through this configuration option reduces
4340 * the amount of memory allocated by the schedulers listed above.  These
4341 * schedulers use a chain control structure per priority and this structure
4342 * consists of three pointers.  On a 32-bit architecture, the allocated memory
4343 * is 12 bytes * (``CONFIGURE_MAXIMUM_PRIORITY`` + 1), e.g. 3072 bytes for 256
4344 * priority levels (default), 48 bytes for 4 priority levels
4345 * (``CONFIGURE_MAXIMUM_PRIORITY == 3``).
4346 *
4347 * The default value is 255, because RTEMS shall support 256 priority levels to
4348 * be compliant with various standards.  These priorities range from 0 to 255.
4349 * @endparblock
4350 */
4351#define CONFIGURE_MAXIMUM_PRIORITY
4352
[e697baf]4353/* Generated from spec:/acfg/if/scheduler-assignments */
4354
[e812f81]4355/**
4356 * @brief This configuration option is an initializer define.
4357 *
4358 * The value of this configuration option is used to initialize the initial
4359 * scheduler to processor assignments.
4360 *
4361 * @par Default Value
4362 * The default value of this configuration option is computed so that the
4363 * default scheduler is assigned to each configured processor (up to 32).
4364 *
4365 * @par Value Constraints
4366 * @parblock
4367 * The value of this configuration option shall satisfy all of the following
4368 * constraints:
4369 *
4370 * * It shall be a list of the following macros:
4371 *
[fa65ad7f]4372 *   * ``RTEMS_SCHEDULER_ASSIGN( scheduler_index, attributes )``
[e812f81]4373 *
4374 *   * ``RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER``
4375 *
[fa65ad7f]4376 *   The ``scheduler_index`` macro parameter shall be a valid index of the
4377 *   scheduler table defined by the #CONFIGURE_SCHEDULER_TABLE_ENTRIES
4378 *   configuration option.
4379 *
4380 *   The ``attributes`` macro parameter shall be set to exactly one of the
4381 *   following constants:
4382 *
4383 *   * ``RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY``
4384 *
4385 *   * ``RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL``
4386 *
4387 * * The value of the configuration option shall be a list of exactly
4388 *   #CONFIGURE_MAXIMUM_PROCESSORS elements.
[e812f81]4389 * @endparblock
4390 *
4391 * @par Notes
4392 * @parblock
[fa65ad7f]4393 * Where the system was built with SMP support enabled, this configuration
4394 * option is evaluated, otherwise it is ignored.
[e812f81]4395 *
4396 * This is an advanced configuration option, see <a
4397 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4398 * Scheduler Configuration</a>.
4399 * @endparblock
4400 */
4401#define CONFIGURE_SCHEDULER_ASSIGNMENTS
4402
[e697baf]4403/* Generated from spec:/acfg/if/scheduler-cbs */
4404
[e812f81]4405/**
4406 * @brief This configuration option is a boolean feature define.
4407 *
[0906321]4408 * In case this configuration option is defined, then the <a
[e812f81]4409 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#constant-bandwidth-server-scheduling-cbs>Constant
4410 * Bandwidth Server Scheduling (CBS)</a> algorithm is made available to the
4411 * application.
4412 *
4413 * @par Default Configuration
4414 * If this configuration option is undefined, then the described feature is not
4415 * enabled.
4416 *
4417 * @par Notes
4418 * @parblock
4419 * This scheduler configuration option is an advanced configuration option.
4420 * Think twice before you use it.
4421 *
4422 * In case no explicit <a
4423 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4424 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4425 * exactly one processor.
4426 * @endparblock
4427 */
4428#define CONFIGURE_SCHEDULER_CBS
4429
[e697baf]4430/* Generated from spec:/acfg/if/scheduler-edf */
4431
[e812f81]4432/**
4433 * @brief This configuration option is a boolean feature define.
4434 *
[0906321]4435 * In case this configuration option is defined, then the <a
[e812f81]4436 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#earliest-deadline-first-scheduler>Earliest
4437 * Deadline First Scheduler</a> algorithm is made available to the application.
4438 *
4439 * @par Default Configuration
4440 * If this configuration option is undefined, then the described feature is not
4441 * enabled.
4442 *
4443 * @par Notes
4444 * @parblock
4445 * This scheduler configuration option is an advanced configuration option.
4446 * Think twice before you use it.
4447 *
4448 * In case no explicit <a
4449 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4450 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4451 * exactly one processor.
4452 * @endparblock
4453 */
4454#define CONFIGURE_SCHEDULER_EDF
4455
[e697baf]4456/* Generated from spec:/acfg/if/scheduler-edf-smp */
4457
[e812f81]4458/**
4459 * @brief This configuration option is a boolean feature define.
4460 *
[0906321]4461 * In case this configuration option is defined, then the <a
[e812f81]4462 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#earliest-deadline-first-smp-scheduler>Earliest
4463 * Deadline First SMP Scheduler</a> algorithm is made available to the
4464 * application.
4465 *
4466 * @par Default Configuration
4467 * If this configuration option is undefined, then the described feature is not
4468 * enabled.
4469 *
4470 * @par Notes
4471 * @parblock
4472 * This scheduler configuration option is an advanced configuration option.
4473 * Think twice before you use it.
4474 *
4475 * This scheduler algorithm is only available when RTEMS is built with SMP
4476 * support enabled.
4477 *
4478 * In case no explicit <a
4479 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4480 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4481 * up to 32 processors.
4482 *
4483 * This scheduler algorithm is the default in SMP configurations if
4484 * #CONFIGURE_MAXIMUM_PROCESSORS is greater than one.
4485 * @endparblock
4486 */
4487#define CONFIGURE_SCHEDULER_EDF_SMP
4488
[e697baf]4489/* Generated from spec:/acfg/if/scheduler-name */
4490
[e812f81]4491/**
4492 * @brief This configuration option is an integer define.
4493 *
4494 * The value of this configuration option defines the name of the default
4495 * scheduler.
4496 *
4497 * @par Default Value
4498 * @parblock
4499 * The default value is
4500 *
4501 * * ``"MEDF"`` for the <a
4502 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#earliest-deadline-first-smp-scheduler>Earliest
4503 *   Deadline First SMP Scheduler</a>,
4504 *
4505 * * ``"MPA "`` for the <a
4506 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#arbitrary-processor-affinity-priority-smp-scheduler>Arbitrary
4507 *   Processor Affinity Priority SMP Scheduler</a>,
4508 *
4509 * * ``"MPD "`` for the <a
4510 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-smp-scheduler>Deterministic
4511 *   Priority SMP Scheduler</a>,
4512 *
4513 * * ``"MPS "`` for the <a
4514 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#simple-priority-smp-scheduler>Simple
4515 *   Priority SMP Scheduler</a>,
4516 *
4517 * * ``"UCBS"`` for the <a
4518 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#constant-bandwidth-server-scheduling-cbs>Constant
4519 *   Bandwidth Server Scheduling (CBS)</a>,
4520 *
4521 * * ``"UEDF"`` for the <a
4522 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#earliest-deadline-first-scheduler>Earliest
4523 *   Deadline First Scheduler</a>,
4524 *
4525 * * ``"UPD "`` for the <a
4526 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-scheduler>Deterministic
4527 *   Priority Scheduler</a>, and
4528 *
4529 * * ``"UPS "`` for the <a
4530 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#simple-priority-scheduler>Simple
4531 *   Priority Scheduler</a>.
4532 * @endparblock
4533 *
4534 * @par Value Constraints
[eefe7009]4535 * The value of this configuration option shall be convertible to an integer of
4536 * type ::rtems_name.
[e812f81]4537 *
4538 * @par Notes
4539 * @parblock
4540 * This scheduler configuration option is an advanced configuration option.
4541 * Think twice before you use it.
4542 *
4543 * Schedulers can be identified via rtems_scheduler_ident().
4544 *
4545 * Use rtems_build_name() to define the scheduler name.
4546 * @endparblock
4547 */
4548#define CONFIGURE_SCHEDULER_NAME
4549
[e697baf]4550/* Generated from spec:/acfg/if/scheduler-priority */
4551
[e812f81]4552/**
4553 * @brief This configuration option is a boolean feature define.
4554 *
[0906321]4555 * In case this configuration option is defined, then the <a
[e812f81]4556 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-scheduler>Deterministic
4557 * Priority Scheduler</a> algorithm is made available to the application.
4558 *
4559 * @par Default Configuration
4560 * If this configuration option is undefined, then the described feature is not
4561 * enabled.
4562 *
4563 * @par Notes
4564 * @parblock
4565 * This scheduler configuration option is an advanced configuration option.
4566 * Think twice before you use it.
4567 *
4568 * In case no explicit <a
4569 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4570 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4571 * exactly one processor.
4572 *
4573 * This scheduler algorithm is the default when #CONFIGURE_MAXIMUM_PROCESSORS
4574 * is exactly one.
4575 *
4576 * The memory allocated for this scheduler depends on the
4577 * #CONFIGURE_MAXIMUM_PRIORITY configuration option.
4578 * @endparblock
4579 */
4580#define CONFIGURE_SCHEDULER_PRIORITY
4581
[e697baf]4582/* Generated from spec:/acfg/if/scheduler-priority-affinity-smp */
4583
[e812f81]4584/**
4585 * @brief This configuration option is a boolean feature define.
4586 *
[0906321]4587 * In case this configuration option is defined, then the <a
[e812f81]4588 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#arbitrary-processor-affinity-priority-smp-scheduler>Arbitrary
4589 * Processor Affinity Priority SMP Scheduler</a> algorithm is made available to
4590 * the application.
4591 *
4592 * @par Default Configuration
4593 * If this configuration option is undefined, then the described feature is not
4594 * enabled.
4595 *
4596 * @par Notes
4597 * @parblock
4598 * This scheduler configuration option is an advanced configuration option.
4599 * Think twice before you use it.
4600 *
4601 * This scheduler algorithm is only available when RTEMS is built with SMP
4602 * support enabled.
4603 *
4604 * In case no explicit <a
4605 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4606 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4607 * up to 32 processors.
4608 *
4609 * The memory allocated for this scheduler depends on the
4610 * #CONFIGURE_MAXIMUM_PRIORITY configuration option.
4611 * @endparblock
4612 */
4613#define CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP
4614
[e697baf]4615/* Generated from spec:/acfg/if/scheduler-priority-smp */
4616
[e812f81]4617/**
4618 * @brief This configuration option is a boolean feature define.
4619 *
[0906321]4620 * In case this configuration option is defined, then the <a
[e812f81]4621 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-smp-scheduler>Deterministic
4622 * Priority SMP Scheduler</a> algorithm is made available to the application.
4623 *
4624 * @par Default Configuration
4625 * If this configuration option is undefined, then the described feature is not
4626 * enabled.
4627 *
4628 * @par Notes
4629 * @parblock
4630 * This scheduler configuration option is an advanced configuration option.
4631 * Think twice before you use it.
4632 *
4633 * This scheduler algorithm is only available when RTEMS is built with SMP
4634 * support enabled.
4635 *
4636 * In case no explicit <a
4637 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4638 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4639 * up to 32 processors.
4640 *
4641 * The memory allocated for this scheduler depends on the
4642 * #CONFIGURE_MAXIMUM_PRIORITY configuration option.
4643 * @endparblock
4644 */
4645#define CONFIGURE_SCHEDULER_PRIORITY_SMP
4646
[e697baf]4647/* Generated from spec:/acfg/if/scheduler-simple */
4648
[e812f81]4649/**
4650 * @brief This configuration option is a boolean feature define.
4651 *
[0906321]4652 * In case this configuration option is defined, then the <a
[e812f81]4653 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#simple-priority-scheduler>Simple
4654 * Priority Scheduler</a> algorithm is made available to the application.
4655 *
4656 * @par Default Configuration
4657 * If this configuration option is undefined, then the described feature is not
4658 * enabled.
4659 *
4660 * @par Notes
4661 * @parblock
4662 * This scheduler configuration option is an advanced configuration option.
4663 * Think twice before you use it.
4664 *
4665 * In case no explicit <a
4666 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4667 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4668 * exactly one processor.
4669 * @endparblock
4670 */
4671#define CONFIGURE_SCHEDULER_SIMPLE
4672
[e697baf]4673/* Generated from spec:/acfg/if/scheduler-simple-smp */
4674
[e812f81]4675/**
4676 * @brief This configuration option is a boolean feature define.
4677 *
[0906321]4678 * In case this configuration option is defined, then the <a
[e812f81]4679 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#simple-priority-smp-scheduler>Simple
4680 * Priority SMP Scheduler</a> algorithm is made available to the application.
4681 *
4682 * @par Default Configuration
4683 * If this configuration option is undefined, then the described feature is not
4684 * enabled.
4685 *
4686 * @par Notes
4687 * @parblock
4688 * This scheduler configuration option is an advanced configuration option.
4689 * Think twice before you use it.
4690 *
4691 * This scheduler algorithm is only available when RTEMS is built with SMP
4692 * support enabled.
4693 *
4694 * In case no explicit <a
4695 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4696 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4697 * up to 32 processors.
4698 * @endparblock
4699 */
4700#define CONFIGURE_SCHEDULER_SIMPLE_SMP
4701
[e697baf]4702/* Generated from spec:/acfg/if/scheduler-strong-apa */
4703
[e812f81]4704/**
4705 * @brief This configuration option is a boolean feature define.
4706 *
[0906321]4707 * In case this configuration option is defined, then the Strong APA algorithm
4708 * is made available to the application.
[e812f81]4709 *
4710 * @par Default Configuration
4711 * If this configuration option is undefined, then the described feature is not
4712 * enabled.
4713 *
4714 * @par Notes
4715 * @parblock
4716 * This scheduler configuration option is an advanced configuration option.
4717 * Think twice before you use it.
4718 *
4719 * This scheduler algorithm is only available when RTEMS is built with SMP
4720 * support enabled.
4721 *
4722 * This scheduler algorithm is not correctly implemented.  Do not use it.
4723 * @endparblock
4724 */
4725#define CONFIGURE_SCHEDULER_STRONG_APA
4726
[fa65ad7f]4727/* Generated from spec:/acfg/if/scheduler-table-entries */
4728
4729/**
4730 * @brief This configuration option is an initializer define.
4731 *
4732 * The value of this configuration option is used to initialize the table of
4733 * configured schedulers.
4734 *
4735 * @par Default Value
4736 * The default value of this configuration option is the definition of exactly
4737 * one table entry for the configured scheduler.
4738 *
4739 * @par Constraints
4740 * @parblock
4741 * The following constraints apply to this configuration option:
4742 *
4743 * * The value of the configuration option shall be a list of the following
4744 *   macros:
4745 *
4746 *   * ``RTEMS_SCHEDULER_TABLE_CBS( name, obj_name )``
4747 *
4748 *   * ``RTEMS_SCHEDULER_TABLE_EDF( name, obj_name )``
4749 *
4750 *   * ``RTEMS_SCHEDULER_TABLE_EDF_SMP( name, obj_name )``
4751 *
4752 *   * ``RTEMS_SCHEDULER_TABLE_PRIORITY_AFFINITY_SMP( name, obj_name )``
4753 *
4754 *   * ``RTEMS_SCHEDULER_TABLE_PRIORITY( name, obj_name )``
4755 *
4756 *   * ``RTEMS_SCHEDULER_TABLE_PRIORITY_SMP( name, obj_name )``
4757 *
4758 *   * ``RTEMS_SCHEDULER_TABLE_SIMPLE( name, obj_name )``
4759 *
4760 *   * ``RTEMS_SCHEDULER_TABLE_SIMPLE_SMP( name, obj_name )``
4761 *
4762 *   * ``RTEMS_SCHEDULER_TABLE_STRONG_APA( name, obj_name )``
4763 *
4764 *   The ``name`` macro parameter shall be the name associated with the
4765 *   scheduler data structures, see <a
4766 *   href="https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html">Clustered
4767 *   Scheduler Configuration</a>.
4768 *
4769 *   The ``obj_name`` macro parameter shall be the scheduler object name.  It
4770 *   is recommended to define the scheduler object name through
4771 *   rtems_build_name().
4772 *
4773 * * Where the system was build with SMP support enabled, the table shall have
4774 *   one or more entries, otherwise it shall have exactly one entry.
4775 * @endparblock
4776 *
4777 * @par Notes
4778 * @parblock
4779 * Schedulers registered in the scheduler table by this configuration option
4780 * are available to the application.  The scheduler table entry index defines
4781 * the index of the scheduler.
4782 *
4783 * This is an advanced configuration option, see <a
4784 * href="https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html">Clustered
4785 * Scheduler Configuration</a>.
4786 * @endparblock
4787 */
4788#define CONFIGURE_SCHEDULER_TABLE_ENTRIES
4789
[e697baf]4790/* Generated from spec:/acfg/if/scheduler-user */
4791
[e812f81]4792/**
4793 * @brief This configuration option is a boolean feature define.
4794 *
4795 * In case this configuration option is defined, then the user shall provide a
4796 * scheduler algorithm to the application.
4797 *
4798 * @par Default Configuration
4799 * If this configuration option is undefined, then the described feature is not
4800 * enabled.
4801 *
4802 * @par Notes
4803 * @parblock
4804 * This scheduler configuration option is an advanced configuration option.
4805 * Think twice before you use it.
4806 *
4807 * RTEMS allows the application to provide its own task/thread scheduling
4808 * algorithm. In order to do this, one shall define
4809 * ``CONFIGURE_SCHEDULER_USER`` to indicate the application provides its own
4810 * scheduling algorithm. If ``CONFIGURE_SCHEDULER_USER`` is defined then the
4811 * following additional macros shall be defined:
4812 *
4813 * * ``CONFIGURE_SCHEDULER`` shall be defined to a static definition of the
4814 *   scheduler data structures of the user scheduler.
4815 *
4816 * * ``CONFIGURE_SCHEDULER_TABLE_ENTRIES`` shall be defined to a scheduler
4817 *   table entry initializer for the user scheduler.
4818 *
4819 * * ``CONFIGURE_SCHEDULER_USER_PER_THREAD`` shall be defined to the type of
4820 *   the per-thread information of the user scheduler.
4821 *
4822 * At this time, the mechanics and requirements for writing a new scheduler are
4823 * evolving and not fully documented.  It is recommended that you look at the
4824 * existing Deterministic Priority Scheduler in
4825 * ``cpukit/score/src/schedulerpriority*.c`` for guidance.  For guidance on the
4826 * configuration macros, please examine ``cpukit/sapi/include/confdefs.h`` for
4827 * how these are defined for the Deterministic Priority Scheduler.
4828 * @endparblock
4829 */
4830#define CONFIGURE_SCHEDULER_USER
4831
4832/** @} */
4833
[e697baf]4834/* Generated from spec:/acfg/if/group-stackalloc */
4835
[e812f81]4836/**
[4e5327ff]4837 * @defgroup RTEMSApplConfigTaskStackAllocatorConfiguration \
4838 *   Task Stack Allocator Configuration
[e812f81]4839 *
4840 * @ingroup RTEMSApplConfig
4841 *
4842 * This section describes configuration options related to the task stack
4843 * allocator.  RTEMS allows the application or BSP to define its own allocation
4844 * and deallocation methods for task stacks. This can be used to place task
4845 * stacks in special areas of memory or to utilize a Memory Management Unit so
4846 * that stack overflows are detected in hardware.
4847 *
4848 * @{
4849 */
4850
[e697baf]4851/* Generated from spec:/acfg/if/task-stack-allocator */
4852
[e812f81]4853/**
4854 * @brief This configuration option is an initializer define.
4855 *
4856 * The value of this configuration option initializes the stack allocator
4857 * allocate handler.
4858 *
4859 * @par Default Value
4860 * The default value is ``_Workspace_Allocate``, which indicates that task
4861 * stacks will be allocated from the RTEMS Workspace.
4862 *
4863 * @par Value Constraints
4864 * The value of this configuration option shall be defined to a valid function
4865 * pointer of the type ``void *( *allocate )( size_t )``.
4866 *
4867 * @par Notes
4868 * @parblock
4869 * A correctly configured system shall configure the following to be
4870 * consistent:
4871 *
4872 * * #CONFIGURE_TASK_STACK_ALLOCATOR_INIT
4873 *
4874 * * ``CONFIGURE_TASK_STACK_ALLOCATOR``
4875 *
4876 * * #CONFIGURE_TASK_STACK_DEALLOCATOR
4877 * @endparblock
4878 */
4879#define CONFIGURE_TASK_STACK_ALLOCATOR
4880
[e697baf]4881/* Generated from spec:/acfg/if/task-stack-no-workspace */
4882
[e812f81]4883/**
4884 * @brief This configuration option is a boolean feature define.
4885 *
4886 * In case this configuration option is defined, then the system is informed
4887 * that the task stack allocator does not use the RTEMS Workspace.
4888 *
4889 * @par Default Configuration
4890 * If this configuration option is undefined, then the described feature is not
4891 * enabled.
4892 *
4893 * @par Notes
4894 * This configuration option may be used if a custom task stack allocator is
4895 * configured, see #CONFIGURE_TASK_STACK_ALLOCATOR.
4896 */
4897#define CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE
4898
[f1723d12]4899/* Generated from spec:/acfg/if/task-stack-allocator-for-idle */
4900
4901/**
4902 * @brief This configuration option is an initializer define.
4903 *
4904 * The value of this configuration option is the address for the stack
[45ee958]4905 * allocator allocate handler used to allocate the task storage area of each
4906 * IDLE task.
[f1723d12]4907 *
4908 * @par Default Value
[45ee958]4909 * By default, the IDLE task storage area will be allocated from the RTEMS
4910 * Workspace.
[f1723d12]4911 *
4912 * @par Value Constraints
[45ee958]4913 * @parblock
4914 * The following constraints apply to this configuration option:
4915 *
4916 * * The value of the configuration option shall be defined to a valid function
4917 *   pointer of the type ``void *( *allocate )( uint32_t, size_t * )``.
4918 *
4919 * * The IDLE task stack allocator shall return a pointer to the allocated
4920 *   memory area or terminate the system with a fatal error if the allocation
4921 *   request cannot be satisfied.
4922 *
4923 * * The IDLE task stack allocator may increase the size of the allocated
4924 *   memory area.
4925 * @endparblock
[f1723d12]4926 *
4927 * @par Notes
[45ee958]4928 * @parblock
[f1723d12]4929 * This configuration option is independent of the other thread stack allocator
[45ee958]4930 * configuration options.  It is assumed that any memory allocated for the task
4931 * storage area of an IDLE task will not be from the RTEMS Workspace.
4932 *
4933 * The IDLE task stack allocator may increase the size of the allocated memory
4934 * area to account for the actually allocated memory area.
4935 *
4936 * The
4937 *
4938 * * #CONFIGURE_IDLE_TASK_STORAGE_SIZE, and
4939 *
4940 * * ``CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE``
4941 *
4942 * configuration options are mutually exclusive.
4943 * @endparblock
[f1723d12]4944 */
4945#define CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE
4946
[e697baf]4947/* Generated from spec:/acfg/if/task-stack-allocator-init */
4948
[e812f81]4949/**
4950 * @brief This configuration option is an initializer define.
4951 *
4952 * The value of this configuration option initializes the stack allocator
4953 * initialization handler.
4954 *
4955 * @par Default Value
4956 * The default value is <a
4957 * href="https://en.cppreference.com/w/c/types/NULL">NULL</a>.
4958 *
4959 * @par Value Constraints
4960 * The value of this configuration option shall be defined to a valid function
4961 * pointer of the type ``void ( *initialize )( size_t )`` or to <a
4962 * href="https://en.cppreference.com/w/c/types/NULL">NULL</a>.
4963 *
4964 * @par Notes
4965 * @parblock
4966 * A correctly configured system shall configure the following to be
4967 * consistent:
4968 *
4969 * * ``CONFIGURE_TASK_STACK_ALLOCATOR_INIT``
4970 *
4971 * * #CONFIGURE_TASK_STACK_ALLOCATOR
4972 *
4973 * * #CONFIGURE_TASK_STACK_DEALLOCATOR
4974 * @endparblock
4975 */
4976#define CONFIGURE_TASK_STACK_ALLOCATOR_INIT
4977
[e697baf]4978/* Generated from spec:/acfg/if/task-stack-deallocator */
4979
[e812f81]4980/**
4981 * @brief This configuration option is an initializer define.
4982 *
4983 * The value of this configuration option initializes the stack allocator
4984 * deallocate handler.
4985 *
4986 * @par Default Value
4987 * The default value is ``_Workspace_Free``, which indicates that task stacks
4988 * will be allocated from the RTEMS Workspace.
4989 *
4990 * @par Value Constraints
4991 * The value of this configuration option shall be defined to a valid function
4992 * pointer of the type ``void ( *deallocate )( void * )``.
4993 *
4994 * @par Notes
4995 * @parblock
4996 * A correctly configured system shall configure the following to be
4997 * consistent:
4998 *
4999 * * #CONFIGURE_TASK_STACK_ALLOCATOR_INIT
5000 *
5001 * * #CONFIGURE_TASK_STACK_ALLOCATOR
5002 *
5003 * * ``CONFIGURE_TASK_STACK_DEALLOCATOR``
5004 * @endparblock
5005 */
5006#define CONFIGURE_TASK_STACK_DEALLOCATOR
5007
[e697baf]5008/* Generated from spec:/acfg/if/task-stack-from-alloc */
5009
[e812f81]5010/**
5011 * @brief This configuration option is an initializer define.
5012 *
5013 * The value of this configuration option is used to calculate the task stack
5014 * space size.
5015 *
5016 * @par Default Value
5017 * The default value is a macro which supports the system heap allocator.
5018 *
5019 * @par Value Constraints
5020 * The value of this configuration option shall be defined to a macro which
5021 * accepts exactly one parameter and returns an unsigned integer.  The
5022 * parameter will be an allocation size and the macro shall return this size
5023 * plus the overhead of the allocator to manage an allocation request for this
5024 * size.
5025 *
5026 * @par Notes
5027 * This configuration option may be used if a custom task stack allocator is
5028 * configured, see #CONFIGURE_TASK_STACK_ALLOCATOR.
5029 */
5030#define CONFIGURE_TASK_STACK_FROM_ALLOCATOR
5031
5032/** @} */
Note: See TracBrowser for help on using the repository browser.