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

Last change on this file since 0a9ba963 was 0a9ba963, checked in by Sebastian Huber <sebastian.huber@…>, on 10/06/22 at 07:15:22

config: CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE

Move CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE to the general configuration
options.

  • Property mode set to 100644
File size: 157.1 KB
Line 
1/* SPDX-License-Identifier: BSD-2-Clause */
2
3/*
4 * Copyright (C) 2019, 2022 embedded brains GmbH (http://www.embedded-brains.de)
5 * Copyright (C) 2010 Gedare Bloom
6 * Copyright (C) 1988, 2021 On-Line Applications Research Corporation (OAR)
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/*
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:
35 *
36 * https://www.rtems.org/bugs.html
37 *
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:
43 *
44 * https://docs.rtems.org
45 */
46
47/**
48 * @defgroup RTEMSApplConfig Application Configuration Options
49 *
50 * @ingroup RTEMSAPI
51 */
52
53/* Generated from spec:/acfg/if/group-bdbuf */
54
55/**
56 * @defgroup RTEMSApplConfigBlockDeviceCacheConfiguration \
57 *   Block Device Cache Configuration
58 *
59 * @ingroup RTEMSApplConfig
60 *
61 * This section describes configuration options related to the Block Device
62 * Cache (bdbuf).
63 *
64 * @{
65 */
66
67/* Generated from spec:/acfg/if/appl-needs-libblock */
68
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
86/* Generated from spec:/acfg/if/bdbuf-buffer-max-size */
87
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 *
102 * * It shall be greater than or equal to zero.
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
109/* Generated from spec:/acfg/if/bdbuf-buffer-min-size */
110
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
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
130 */
131#define CONFIGURE_BDBUF_BUFFER_MIN_SIZE
132
133/* Generated from spec:/acfg/if/bdbuf-cache-memory-size */
134
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
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
154 */
155#define CONFIGURE_BDBUF_CACHE_MEMORY_SIZE
156
157/* Generated from spec:/acfg/if/bdbuf-max-read-ahead-blocks */
158
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
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
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
186/* Generated from spec:/acfg/if/bdbuf-max-write-blocks */
187
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
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
207 */
208#define CONFIGURE_BDBUF_MAX_WRITE_BLOCKS
209
210/* Generated from spec:/acfg/if/bdbuf-read-ahead-task-priority */
211
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
222 * priority.  The set of valid task priorities depends on the scheduler
223 * configuration.
224 */
225#define CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY
226
227/* Generated from spec:/acfg/if/bdbuf-task-stack-size */
228
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
256/* Generated from spec:/acfg/if/bdbuf-swapout-block-hold */
257
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
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
277 */
278#define CONFIGURE_SWAPOUT_BLOCK_HOLD
279
280/* Generated from spec:/acfg/if/bdbuf-swapout-swap-period */
281
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
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
301 */
302#define CONFIGURE_SWAPOUT_SWAP_PERIOD
303
304/* Generated from spec:/acfg/if/bdbuf-swapout-task-priority */
305
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
316 * priority.  The set of valid task priorities depends on the scheduler
317 * configuration.
318 */
319#define CONFIGURE_SWAPOUT_TASK_PRIORITY
320
321/* Generated from spec:/acfg/if/bdbuf-swapout-worker-tasks */
322
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
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
342 */
343#define CONFIGURE_SWAPOUT_WORKER_TASKS
344
345/* Generated from spec:/acfg/if/bdbuf-swapout-worker-taskp-riority */
346
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
358 * priority.  The set of valid task priorities depends on the scheduler
359 * configuration.
360 */
361#define CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY
362
363/** @} */
364
365/* Generated from spec:/acfg/if/group-bsp */
366
367/**
368 * @defgroup RTEMSApplConfigBSPRelatedConfigurationOptions \
369 *   BSP Related Configuration Options
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
381/* Generated from spec:/acfg/if/bsp-idle-task-body */
382
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
409/* Generated from spec:/acfg/if/bsp-idle-task-stack-size */
410
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
441/* Generated from spec:/acfg/if/bsp-initial-extension */
442
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
468/* Generated from spec:/acfg/if/bsp-interrupt-stack-size */
469
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
502/* Generated from spec:/acfg/if/bsp-prerequisite-drivers */
503
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 *
513 * then the value of this configuration option is used to add BSP-provided
514 * prerequisite drivers to the Device Driver Table.
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
530/* Generated from spec:/acfg/if/disable-bsp-settings */
531
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
556/* Generated from spec:/acfg/if/malloc-bsp-supports-sbrk */
557
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
584/* Generated from spec:/acfg/if/group-classic */
585
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
596/* Generated from spec:/acfg/if/max-barriers */
597
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 *
612 * * It shall be greater than or equal to zero.
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
621 *   objects for the object class, if the value passed to
622 *   rtems_resource_unlimited() satisfies all other constraints of the
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
633/* Generated from spec:/acfg/if/max-message-queues */
634
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 *
649 * * It shall be greater than or equal to zero.
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
658 *   objects for the object class, if the value passed to
659 *   rtems_resource_unlimited() satisfies all other constraints of the
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
671/* Generated from spec:/acfg/if/max-partitions */
672
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 *
687 * * It shall be greater than or equal to zero.
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
696 *   objects for the object class, if the value passed to
697 *   rtems_resource_unlimited() satisfies all other constraints of the
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
708/* Generated from spec:/acfg/if/max-periods */
709
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 *
724 * * It shall be greater than or equal to zero.
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
733 *   objects for the object class, if the value passed to
734 *   rtems_resource_unlimited() satisfies all other constraints of the
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
745/* Generated from spec:/acfg/if/max-ports */
746
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 *
761 * * It shall be greater than or equal to zero.
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
770 *   objects for the object class, if the value passed to
771 *   rtems_resource_unlimited() satisfies all other constraints of the
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
782/* Generated from spec:/acfg/if/max-regions */
783
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 *
798 * * It shall be greater than or equal to zero.
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
807 *   objects for the object class, if the value passed to
808 *   rtems_resource_unlimited() satisfies all other constraints of the
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
819/* Generated from spec:/acfg/if/max-semaphores */
820
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 *
835 * * It shall be greater than or equal to zero.
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
844 *   objects for the object class, if the value passed to
845 *   rtems_resource_unlimited() satisfies all other constraints of the
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
865/* Generated from spec:/acfg/if/max-tasks */
866
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 *
881 * * It shall be greater than or equal to zero.
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
894 *   objects for the object class, if the value passed to
895 *   rtems_resource_unlimited() satisfies all other constraints of the
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
921/* Generated from spec:/acfg/if/max-timers */
922
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 *
937 * * It shall be greater than or equal to zero.
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
946 *   objects for the object class, if the value passed to
947 *   rtems_resource_unlimited() satisfies all other constraints of the
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
958/* Generated from spec:/acfg/if/max-user-extensions */
959
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 *
974 * * It shall be greater than or equal to zero.
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
988/* Generated from spec:/acfg/if/min-tasks-with-user-provided-storage */
989
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
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
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
1018/** @} */
1019
1020/* Generated from spec:/acfg/if/group-classicinit */
1021
1022/**
1023 * @defgroup RTEMSApplConfigClassicAPIInitializationTaskConfiguration \
1024 *   Classic API Initialization Task Configuration
1025 *
1026 * @ingroup RTEMSApplConfig
1027 *
1028 * This section describes configuration options related to the Classic API
1029 * initialization task.
1030 *
1031 * @{
1032 */
1033
1034/* Generated from spec:/acfg/if/init-task-arguments */
1035
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
1046 * The value of this configuration option shall be convertible to an integer of
1047 * type ::rtems_task_argument.
1048 */
1049#define CONFIGURE_INIT_TASK_ARGUMENTS
1050
1051/* Generated from spec:/acfg/if/init-task-attributes */
1052
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
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
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.
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
1108 *   reclaimed by the system if the task is deleted.
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
1121/* Generated from spec:/acfg/if/init-task-entrypoint */
1122
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
1142/* Generated from spec:/acfg/if/init-task-initial-modes */
1143
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
1159/* Generated from spec:/acfg/if/init-task-name */
1160
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
1171 * The value of this configuration option shall be convertible to an integer of
1172 * type ::rtems_name.
1173 *
1174 * @par Notes
1175 * Use rtems_build_name() to define the task name.
1176 */
1177#define CONFIGURE_INIT_TASK_NAME
1178
1179/* Generated from spec:/acfg/if/init-task-priority */
1180
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
1192 * priority.  The set of valid task priorities depends on the scheduler
1193 * configuration.
1194 */
1195#define CONFIGURE_INIT_TASK_PRIORITY
1196
1197/* Generated from spec:/acfg/if/init-task-stack-size */
1198
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
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
1230 */
1231#define CONFIGURE_INIT_TASK_STACK_SIZE
1232
1233/* Generated from spec:/acfg/if/rtems-init-tasks-table */
1234
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
1263/* Generated from spec:/acfg/if/group-devdrv */
1264
1265/**
1266 * @defgroup RTEMSApplConfigDeviceDriverConfiguration \
1267 *   Device Driver Configuration
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
1277/* Generated from spec:/acfg/if/appl-does-not-need-clock-driver */
1278
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
1309/* Generated from spec:/acfg/if/appl-extra-drivers */
1310
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
1335/* Generated from spec:/acfg/if/appl-needs-ata-driver */
1336
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
1357/* Generated from spec:/acfg/if/appl-needs-clock-driver */
1358
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
1388/* Generated from spec:/acfg/if/appl-needs-console-driver */
1389
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
1422/* Generated from spec:/acfg/if/appl-needs-framebuffer-driver */
1423
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
1445/* Generated from spec:/acfg/if/appl-needs-ide-driver */
1446
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
1467/* Generated from spec:/acfg/if/appl-needs-null-driver */
1468
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
1484/* Generated from spec:/acfg/if/appl-needs-rtc-driver */
1485
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
1507/* Generated from spec:/acfg/if/appl-needs-simple-console-driver */
1508
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 *
1525 * This device driver reads via getchark().
1526 *
1527 * This device driver writes via rtems_putc().
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
1545/* Generated from spec:/acfg/if/appl-needs-simple-task-console-driver */
1546
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 *
1563 * This device driver reads via getchark().
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
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.
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
1592/* Generated from spec:/acfg/if/appl-needs-stub-driver */
1593
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
1610/* Generated from spec:/acfg/if/appl-needs-timer-driver */
1611
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
1641/* Generated from spec:/acfg/if/appl-needs-watchdog-driver */
1642
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
1664/* Generated from spec:/acfg/if/appl-needs-zero-driver */
1665
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
1681/* Generated from spec:/acfg/if/appl-prerequisite-drivers */
1682
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
1708/* Generated from spec:/acfg/if/ata-driver-task-priority */
1709
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
1720 * priority.  The set of valid task priorities depends on the scheduler
1721 * configuration.
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
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
1752/* Generated from spec:/acfg/if/max-drivers */
1753
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
1825/* Generated from spec:/acfg/if/group-eventrecord */
1826
1827/**
1828 * @defgroup RTEMSApplConfigEventRecordingConfiguration \
1829 *   Event Recording Configuration
1830 *
1831 * @ingroup RTEMSApplConfig
1832 *
1833 * This section describes configuration options related to the event recording.
1834 *
1835 * @{
1836 */
1837
1838/* Generated from spec:/acfg/if/record-extensions-enabled */
1839
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
1861/* Generated from spec:/acfg/if/record-fatal-dump-base64 */
1862
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
1888/* Generated from spec:/acfg/if/record-fatal-dump-base64-zlib */
1889
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
1914/* Generated from spec:/acfg/if/record-per-processor-items */
1915
1916/**
1917 * @brief This configuration option is an integer define.
1918 *
1919 * The value of this configuration option defines the event record item count
1920 * per processor.
1921 *
1922 * @par Default Value
1923 * The default value is 0.
1924 *
1925 * @par Value Constraints
1926 * @parblock
1927 * The value of this configuration option shall satisfy all of the following
1928 * constraints:
1929 *
1930 * * It shall be greater than or equal to 16.
1931 *
1932 * * It shall be less than or equal to <a
1933 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
1934 *
1935 * * It shall be a power of two.
1936 *
1937 * * It shall be less than or equal to a BSP-specific and application-specific
1938 *   value which depends on the size of the memory available to the
1939 *   application.
1940 * @endparblock
1941 *
1942 * @par Notes
1943 * The event record buffers are statically allocated for each configured
1944 * processor (#CONFIGURE_MAXIMUM_PROCESSORS).  If the value of this
1945 * configuration option is zero, then nothing is allocated.
1946 */
1947#define CONFIGURE_RECORD_PER_PROCESSOR_ITEMS
1948
1949/** @} */
1950
1951/* Generated from spec:/acfg/if/group-face */
1952
1953/**
1954 * @defgroup RTEMSApplConfigFACETechnicalStandardRelatedConfiguration \
1955 *   FACE Technical Standard Related Configuration
1956 *
1957 * @ingroup RTEMSApplConfig
1958 *
1959 * This section describes configuration options related to adapting RTEMS
1960 * behavior to be aligned with the FACE Technical Standard. The FACE Technical
1961 * Standard is a product of the FACE Consortium which operates under the Open
1962 * Group. The FACE Consortium was founded by avionics organizations to improve
1963 * the portability of cockpit software across various platforms. It addresses
1964 * technical and business concerns.
1965 *
1966 * Most important from an RTEMS perspective, the FACE Technical Standard
1967 * defines four POSIX profiles: Security, Safety Base, Safety Extended, and the
1968 * General Purpose Profile. Each has an increasingly larger subset of POSIX
1969 * APIs. In the Security and Safety profiles, ARINC 653 is required. It is
1970 * optional in the General Purpose Profile.
1971 *
1972 * The RTEMS Project has been tracking alignment with the FACE POSIX profiles
1973 * and they are included in the "RTEMS POSIX 1003.1 Compliance Guide."
1974 *
1975 * @{
1976 */
1977
1978/* Generated from spec:/acfg/if/posix-timer-face-behavior */
1979
1980/**
1981 * @brief This configuration option is a boolean feature define.
1982 *
1983 * If this configuration option is defined, then POSIX timers may not be
1984 * created to use the CLOCK_REALTIME.  Per POSIX, this is allowed behavior but
1985 * per the FACE Technical Standard, it is not. Using POSIX timers based on
1986 * CLOCK_REALTIME (e.g., time of day) is unsafe for real-time safety systems as
1987 * setting CLOCK_REALTIME will perturb any active timers.
1988 *
1989 * If this option is not defined, POSIX timers may be created to use the
1990 * CLOCK_REALTIME in compliance with the POSIX specification.
1991 *
1992 * @par Default Configuration
1993 * If this configuration option is undefined, then the described feature is not
1994 * enabled.
1995 */
1996#define CONFIGURE_POSIX_TIMERS_FACE_BEHAVIOR
1997
1998/** @} */
1999
2000/* Generated from spec:/acfg/if/group-filesystem */
2001
2002/**
2003 * @defgroup RTEMSApplConfigFilesystemConfiguration Filesystem Configuration
2004 *
2005 * @ingroup RTEMSApplConfig
2006 *
2007 * This section describes configuration options related to filesytems. By
2008 * default, the In-Memory Filesystem (IMFS) is used as the base filesystem
2009 * (also known as root filesystem).  In order to save some memory for your
2010 * application, you can disable the filesystem support with the
2011 * #CONFIGURE_APPLICATION_DISABLE_FILESYSTEM configuration option.
2012 * Alternatively, you can strip down the features of the base filesystem with
2013 * the #CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM and
2014 * #CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM configuration options.  These three
2015 * configuration options are mutually exclusive.  They are intended for an
2016 * advanced application configuration.
2017 *
2018 * Features of the IMFS can be disabled and enabled with the following
2019 * configuration options:
2020 *
2021 * * #CONFIGURE_IMFS_DISABLE_CHMOD
2022 *
2023 * * #CONFIGURE_IMFS_DISABLE_CHOWN
2024 *
2025 * * #CONFIGURE_IMFS_DISABLE_LINK
2026 *
2027 * * #CONFIGURE_IMFS_DISABLE_MKNOD
2028 *
2029 * * #CONFIGURE_IMFS_DISABLE_MKNOD_FILE
2030 *
2031 * * #CONFIGURE_IMFS_DISABLE_MOUNT
2032 *
2033 * * #CONFIGURE_IMFS_DISABLE_READDIR
2034 *
2035 * * #CONFIGURE_IMFS_DISABLE_READLINK
2036 *
2037 * * #CONFIGURE_IMFS_DISABLE_RENAME
2038 *
2039 * * #CONFIGURE_IMFS_DISABLE_RMNOD
2040 *
2041 * * #CONFIGURE_IMFS_DISABLE_SYMLINK
2042 *
2043 * * #CONFIGURE_IMFS_DISABLE_UNMOUNT
2044 *
2045 * * #CONFIGURE_IMFS_DISABLE_UTIME
2046 *
2047 * * #CONFIGURE_IMFS_ENABLE_MKFIFO
2048 *
2049 * @{
2050 */
2051
2052/* Generated from spec:/acfg/if/appl-disable-filesystem */
2053
2054/**
2055 * @brief This configuration option is a boolean feature define.
2056 *
2057 * In case this configuration option is defined, then **no base filesystem** is
2058 * initialized during system initialization and **no filesystems** are
2059 * configured.
2060 *
2061 * @par Default Configuration
2062 * If this configuration option is undefined, then a base filesystem and the
2063 * configured filesystems are initialized during system initialization.
2064 *
2065 * @par Notes
2066 * Filesystems shall be initialized to support file descriptor based device
2067 * drivers and basic input/output functions such as printf(). Filesystems can
2068 * be disabled to reduce the memory footprint of an application.
2069 */
2070#define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
2071
2072/* Generated from spec:/acfg/if/filesystem-all */
2073
2074/**
2075 * @brief This configuration option is a boolean feature define.
2076 *
2077 * In case this configuration option is defined, then the following
2078 * configuration options will be defined as well
2079 *
2080 * * #CONFIGURE_FILESYSTEM_DOSFS,
2081 *
2082 * * #CONFIGURE_FILESYSTEM_FTPFS,
2083 *
2084 * * #CONFIGURE_FILESYSTEM_IMFS,
2085 *
2086 * * #CONFIGURE_FILESYSTEM_JFFS2,
2087 *
2088 * * #CONFIGURE_FILESYSTEM_NFS,
2089 *
2090 * * #CONFIGURE_FILESYSTEM_RFS, and
2091 *
2092 * * #CONFIGURE_FILESYSTEM_TFTPFS.
2093 *
2094 * @par Default Configuration
2095 * If this configuration option is undefined, then the described feature is not
2096 * enabled.
2097 */
2098#define CONFIGURE_FILESYSTEM_ALL
2099
2100/* Generated from spec:/acfg/if/filesystem-dosfs */
2101
2102/**
2103 * @brief This configuration option is a boolean feature define.
2104 *
2105 * In case this configuration option is defined, then the DOS (FAT) filesystem
2106 * is registered, so that instances of this filesystem can be mounted by the
2107 * application.
2108 *
2109 * @par Default Configuration
2110 * If this configuration option is undefined, then the described feature is not
2111 * enabled.
2112 *
2113 * @par Notes
2114 * This filesystem requires a Block Device Cache configuration, see
2115 * #CONFIGURE_APPLICATION_NEEDS_LIBBLOCK.
2116 */
2117#define CONFIGURE_FILESYSTEM_DOSFS
2118
2119/* Generated from spec:/acfg/if/filesystem-ftpfs */
2120
2121/**
2122 * @brief This configuration option is a boolean feature define.
2123 *
2124 * In case this configuration option is defined, then the FTP filesystem (FTP
2125 * client) is registered, so that instances of this filesystem can be mounted
2126 * by the application.
2127 *
2128 * @par Default Configuration
2129 * If this configuration option is undefined, then the described feature is not
2130 * enabled.
2131 */
2132#define CONFIGURE_FILESYSTEM_FTPFS
2133
2134/* Generated from spec:/acfg/if/filesystem-imfs */
2135
2136/**
2137 * @brief This configuration option is a boolean feature define.
2138 *
2139 * In case this configuration option is defined, then the In-Memory Filesystem
2140 * (IMFS) is registered, so that instances of this filesystem can be mounted by
2141 * the application.
2142 *
2143 * @par Default Configuration
2144 * If this configuration option is undefined, then the described feature is not
2145 * enabled.
2146 *
2147 * @par Notes
2148 * Applications will rarely need this configuration option.  This configuration
2149 * option is intended for test programs.  You do not need to define this
2150 * configuration option for the base filesystem (also known as root
2151 * filesystem).
2152 */
2153#define CONFIGURE_FILESYSTEM_IMFS
2154
2155/* Generated from spec:/acfg/if/filesystem-jffs2 */
2156
2157/**
2158 * @brief This configuration option is a boolean feature define.
2159 *
2160 * In case this configuration option is defined, then the JFFS2 filesystem is
2161 * registered, so that instances of this filesystem can be mounted by the
2162 * application.
2163 *
2164 * @par Default Configuration
2165 * If this configuration option is undefined, then the described feature is not
2166 * enabled.
2167 */
2168#define CONFIGURE_FILESYSTEM_JFFS2
2169
2170/* Generated from spec:/acfg/if/filesystem-nfs */
2171
2172/**
2173 * @brief This configuration option is a boolean feature define.
2174 *
2175 * In case this configuration option is defined, then the Network Filesystem
2176 * (NFS) client is registered, so that instances of this filesystem can be
2177 * mounted by the application.
2178 *
2179 * @par Default Configuration
2180 * If this configuration option is undefined, then the described feature is not
2181 * enabled.
2182 */
2183#define CONFIGURE_FILESYSTEM_NFS
2184
2185/* Generated from spec:/acfg/if/filesystem-rfs */
2186
2187/**
2188 * @brief This configuration option is a boolean feature define.
2189 *
2190 * In case this configuration option is defined, then the RTEMS Filesystem
2191 * (RFS) is registered, so that instances of this filesystem can be mounted by
2192 * the application.
2193 *
2194 * @par Default Configuration
2195 * If this configuration option is undefined, then the described feature is not
2196 * enabled.
2197 *
2198 * @par Notes
2199 * This filesystem requires a Block Device Cache configuration, see
2200 * #CONFIGURE_APPLICATION_NEEDS_LIBBLOCK.
2201 */
2202#define CONFIGURE_FILESYSTEM_RFS
2203
2204/* Generated from spec:/acfg/if/filesystem-tftpfs */
2205
2206/**
2207 * @brief This configuration option is a boolean feature define.
2208 *
2209 * In case this configuration option is defined, then the TFTP filesystem (TFTP
2210 * client) is registered, so that instances of this filesystem can be mounted
2211 * by the application.
2212 *
2213 * @par Default Configuration
2214 * If this configuration option is undefined, then the described feature is not
2215 * enabled.
2216 */
2217#define CONFIGURE_FILESYSTEM_TFTPFS
2218
2219/* Generated from spec:/acfg/if/imfs-disable-chmod */
2220
2221/**
2222 * @brief This configuration option is a boolean feature define.
2223 *
2224 * In case this configuration option is defined, then the root IMFS does not
2225 * support changing the mode of files (no support for chmod()).
2226 *
2227 * @par Default Configuration
2228 * If this configuration option is undefined, then the root IMFS supports
2229 * changing the mode of files.
2230 */
2231#define CONFIGURE_IMFS_DISABLE_CHMOD
2232
2233/* Generated from spec:/acfg/if/imfs-disable-chown */
2234
2235/**
2236 * @brief This configuration option is a boolean feature define.
2237 *
2238 * In case this configuration option is defined, then the root IMFS does not
2239 * support changing the ownership of files (no support for chown()).
2240 *
2241 * @par Default Configuration
2242 * If this configuration option is undefined, then the root IMFS supports
2243 * changing the ownership of files.
2244 */
2245#define CONFIGURE_IMFS_DISABLE_CHOWN
2246
2247/* Generated from spec:/acfg/if/imfs-disable-link */
2248
2249/**
2250 * @brief This configuration option is a boolean feature define.
2251 *
2252 * In case this configuration option is defined, then the root IMFS does not
2253 * support hard links (no support for link()).
2254 *
2255 * @par Default Configuration
2256 * If this configuration option is undefined, then the root IMFS supports hard
2257 * links.
2258 */
2259#define CONFIGURE_IMFS_DISABLE_LINK
2260
2261/* Generated from spec:/acfg/if/imfs-disable-mknod */
2262
2263/**
2264 * @brief This configuration option is a boolean feature define.
2265 *
2266 * In case this configuration option is defined, then the root IMFS does not
2267 * support making files (no support for mknod()).
2268 *
2269 * @par Default Configuration
2270 * If this configuration option is undefined, then the root IMFS supports
2271 * making files.
2272 */
2273#define CONFIGURE_IMFS_DISABLE_MKNOD
2274
2275/* Generated from spec:/acfg/if/imfs-disable-mknod-device */
2276
2277/**
2278 * @brief This configuration option is a boolean feature define.
2279 *
2280 * In case this configuration option is defined, then the root IMFS does not
2281 * support making device files.
2282 *
2283 * @par Default Configuration
2284 * If this configuration option is undefined, then the root IMFS supports
2285 * making device files.
2286 */
2287#define CONFIGURE_IMFS_DISABLE_MKNOD_DEVICE
2288
2289/* Generated from spec:/acfg/if/imfs-disable-mknod-file */
2290
2291/**
2292 * @brief This configuration option is a boolean feature define.
2293 *
2294 * In case this configuration option is defined, then the root IMFS does not
2295 * support making regular files.
2296 *
2297 * @par Default Configuration
2298 * If this configuration option is undefined, then the root IMFS supports
2299 * making regular files.
2300 */
2301#define CONFIGURE_IMFS_DISABLE_MKNOD_FILE
2302
2303/* Generated from spec:/acfg/if/imfs-disable-mount */
2304
2305/**
2306 * @brief This configuration option is a boolean feature define.
2307 *
2308 * In case this configuration option is defined, then the root IMFS does not
2309 * support mounting other filesystems (no support for mount()).
2310 *
2311 * @par Default Configuration
2312 * If this configuration option is undefined, then the root IMFS supports
2313 * mounting other filesystems.
2314 */
2315#define CONFIGURE_IMFS_DISABLE_MOUNT
2316
2317/* Generated from spec:/acfg/if/imfs-disable-readdir */
2318
2319/**
2320 * @brief This configuration option is a boolean feature define.
2321 *
2322 * In case this configuration option is defined, then the root IMFS does not
2323 * support reading directories (no support for readdir()).  It is still
2324 * possible to open files in a directory.
2325 *
2326 * @par Default Configuration
2327 * If this configuration option is undefined, then the root IMFS supports
2328 * reading directories.
2329 */
2330#define CONFIGURE_IMFS_DISABLE_READDIR
2331
2332/* Generated from spec:/acfg/if/imfs-disable-readlink */
2333
2334/**
2335 * @brief This configuration option is a boolean feature define.
2336 *
2337 * In case this configuration option is defined, then the root IMFS does not
2338 * support reading symbolic links (no support for readlink()).
2339 *
2340 * @par Default Configuration
2341 * If this configuration option is undefined, then the root IMFS supports
2342 * reading symbolic links.
2343 */
2344#define CONFIGURE_IMFS_DISABLE_READLINK
2345
2346/* Generated from spec:/acfg/if/imfs-disable-rename */
2347
2348/**
2349 * @brief This configuration option is a boolean feature define.
2350 *
2351 * In case this configuration option is defined, then the root IMFS does not
2352 * support renaming files (no support for rename()).
2353 *
2354 * @par Default Configuration
2355 * If this configuration option is undefined, then the root IMFS supports
2356 * renaming files.
2357 */
2358#define CONFIGURE_IMFS_DISABLE_RENAME
2359
2360/* Generated from spec:/acfg/if/imfs-disable-rmnod */
2361
2362/**
2363 * @brief This configuration option is a boolean feature define.
2364 *
2365 * In case this configuration option is defined, then the root IMFS does not
2366 * support removing files (no support for rmnod()).
2367 *
2368 * @par Default Configuration
2369 * If this configuration option is undefined, then the root IMFS supports
2370 * removing files.
2371 */
2372#define CONFIGURE_IMFS_DISABLE_RMNOD
2373
2374/* Generated from spec:/acfg/if/imfs-disable-symlink */
2375
2376/**
2377 * @brief This configuration option is a boolean feature define.
2378 *
2379 * In case this configuration option is defined, then the root IMFS does not
2380 * support creating symbolic links (no support for symlink()).
2381 *
2382 * @par Default Configuration
2383 * If this configuration option is undefined, then the root IMFS supports
2384 * creating symbolic links.
2385 */
2386#define CONFIGURE_IMFS_DISABLE_SYMLINK
2387
2388/* Generated from spec:/acfg/if/imfs-disable-unmount */
2389
2390/**
2391 * @brief This configuration option is a boolean feature define.
2392 *
2393 * In case this configuration option is defined, then the root IMFS does not
2394 * support unmounting other filesystems (no support for unmount()).
2395 *
2396 * @par Default Configuration
2397 * If this configuration option is undefined, then the root IMFS supports
2398 * unmounting other filesystems.
2399 */
2400#define CONFIGURE_IMFS_DISABLE_UNMOUNT
2401
2402/* Generated from spec:/acfg/if/imfs-disable-utime */
2403
2404/**
2405 * @brief This configuration option is a boolean feature define.
2406 *
2407 * In case this configuration option is defined, then the root IMFS does not
2408 * support changing file times (no support for utime()).
2409 *
2410 * @par Default Configuration
2411 * If this configuration option is undefined, then the root IMFS supports
2412 * changing file times.
2413 */
2414#define CONFIGURE_IMFS_DISABLE_UTIME
2415
2416/* Generated from spec:/acfg/if/imfs-enable-mkfifo */
2417
2418/**
2419 * @brief This configuration option is a boolean feature define.
2420 *
2421 * In case this configuration option is defined, then the root IMFS supports
2422 * making FIFOs.
2423 *
2424 * @par Default Configuration
2425 * If this configuration option is undefined, then the root IMFS does not
2426 * support making FIFOs (no support for mkfifo()).
2427 */
2428#define CONFIGURE_IMFS_ENABLE_MKFIFO
2429
2430/* Generated from spec:/acfg/if/imfs-memfile-bytes-per-block */
2431
2432/**
2433 * @brief This configuration option is an integer define.
2434 *
2435 * The value of this configuration option defines the block size for in-memory
2436 * files managed by the IMFS.
2437 *
2438 * @par Default Value
2439 * The default value is 128.
2440 *
2441 * @par Value Constraints
2442 * The value of this configuration option shall be equal to 16, 32, 64, 128,
2443 * 256, or 512.
2444 *
2445 * @par Notes
2446 * @parblock
2447 * The configured block size has two impacts. The first is the average amount
2448 * of unused memory in the last block of each file.  For example, when the
2449 * block size is 512, on average one-half of the last block of each file will
2450 * remain unused and the memory is wasted. In contrast, when the block size is
2451 * 16, the average unused memory per file is only 8 bytes. However, it requires
2452 * more allocations for the same size file and thus more overhead per block for
2453 * the dynamic memory management.
2454 *
2455 * Second, the block size has an impact on the maximum size file that can be
2456 * stored in the IMFS. With smaller block size, the maximum file size is
2457 * correspondingly smaller. The following shows the maximum file size possible
2458 * based on the configured block size:
2459 *
2460 * * when the block size is 16 bytes, the maximum file size is 1,328 bytes.
2461 *
2462 * * when the block size is 32 bytes, the maximum file size is 18,656 bytes.
2463 *
2464 * * when the block size is 64 bytes, the maximum file size is 279,488 bytes.
2465 *
2466 * * when the block size is 128 bytes, the maximum file size is 4,329,344
2467 *   bytes.
2468 *
2469 * * when the block size is 256 bytes, the maximum file size is 68,173,568
2470 *   bytes.
2471 *
2472 * * when the block size is 512 bytes, the maximum file size is 1,082,195,456
2473 *   bytes.
2474 * @endparblock
2475 */
2476#define CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK
2477
2478/* Generated from spec:/acfg/if/use-devfs-as-base-filesystem */
2479
2480/**
2481 * @brief This configuration option is a boolean feature define.
2482 *
2483 * In case this configuration option is defined, then an IMFS with a reduced
2484 * feature set will be the base filesystem (also known as root filesystem).
2485 *
2486 * @par Default Configuration
2487 * If this configuration option is undefined, then the described feature is not
2488 * enabled.
2489 *
2490 * @par Notes
2491 * @parblock
2492 * In case this configuration option is defined, then the following
2493 * configuration options will be defined as well
2494 *
2495 * * #CONFIGURE_IMFS_DISABLE_CHMOD,
2496 *
2497 * * #CONFIGURE_IMFS_DISABLE_CHOWN,
2498 *
2499 * * #CONFIGURE_IMFS_DISABLE_LINK,
2500 *
2501 * * #CONFIGURE_IMFS_DISABLE_MKNOD_FILE,
2502 *
2503 * * #CONFIGURE_IMFS_DISABLE_MOUNT,
2504 *
2505 * * #CONFIGURE_IMFS_DISABLE_READDIR,
2506 *
2507 * * #CONFIGURE_IMFS_DISABLE_READLINK,
2508 *
2509 * * #CONFIGURE_IMFS_DISABLE_RENAME,
2510 *
2511 * * #CONFIGURE_IMFS_DISABLE_RMNOD,
2512 *
2513 * * #CONFIGURE_IMFS_DISABLE_SYMLINK,
2514 *
2515 * * #CONFIGURE_IMFS_DISABLE_UTIME, and
2516 *
2517 * * #CONFIGURE_IMFS_DISABLE_UNMOUNT.
2518 *
2519 * In addition, a simplified path evaluation is enabled.  It allows only a look
2520 * up of absolute paths.
2521 *
2522 * This configuration of the IMFS is basically a device-only filesystem.  It is
2523 * comparable in functionality to the pseudo-filesystem name space provided
2524 * before RTEMS release 4.5.0.
2525 * @endparblock
2526 */
2527#define CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM
2528
2529/* Generated from spec:/acfg/if/use-miniimfs-as-base-filesystem */
2530
2531/**
2532 * @brief This configuration option is a boolean feature define.
2533 *
2534 * In case this configuration option is defined, then an IMFS with a reduced
2535 * feature set will be the base filesystem (also known as root filesystem).
2536 *
2537 * @par Default Configuration
2538 * If this configuration option is undefined, then the described feature is not
2539 * enabled.
2540 *
2541 * @par Notes
2542 * @parblock
2543 * In case this configuration option is defined, then the following
2544 * configuration options will be defined as well
2545 *
2546 * * #CONFIGURE_IMFS_DISABLE_CHMOD,
2547 *
2548 * * #CONFIGURE_IMFS_DISABLE_CHOWN,
2549 *
2550 * * #CONFIGURE_IMFS_DISABLE_LINK,
2551 *
2552 * * #CONFIGURE_IMFS_DISABLE_READLINK,
2553 *
2554 * * #CONFIGURE_IMFS_DISABLE_RENAME,
2555 *
2556 * * #CONFIGURE_IMFS_DISABLE_SYMLINK,
2557 *
2558 * * #CONFIGURE_IMFS_DISABLE_UTIME, and
2559 *
2560 * * #CONFIGURE_IMFS_DISABLE_UNMOUNT.
2561 * @endparblock
2562 */
2563#define CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
2564
2565/** @} */
2566
2567/* Generated from spec:/acfg/if/group-general */
2568
2569/**
2570 * @defgroup RTEMSApplConfigGeneralSystemConfiguration \
2571 *   General System Configuration
2572 *
2573 * @ingroup RTEMSApplConfig
2574 *
2575 * This section describes general system configuration options.
2576 *
2577 * @{
2578 */
2579
2580/* Generated from spec:/acfg/if/dirty-memory */
2581
2582/**
2583 * @brief This configuration option is a boolean feature define.
2584 *
2585 * In case this configuration option is defined, then the memory areas used for
2586 * the RTEMS Workspace and the C Program Heap are dirtied with a ``0xCF`` byte
2587 * pattern during system initialization.
2588 *
2589 * @par Default Configuration
2590 * If this configuration option is undefined, then the described feature is not
2591 * enabled.
2592 *
2593 * @par Notes
2594 * @parblock
2595 * Dirtying memory can add significantly to system initialization time.  It may
2596 * assist in finding code that incorrectly assumes the contents of free memory
2597 * areas is cleared to zero during system initialization.  In case
2598 * #CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY is also defined, then the memory is
2599 * first dirtied and then zeroed.
2600 *
2601 * See also #CONFIGURE_MALLOC_DIRTY.
2602 * @endparblock
2603 */
2604#define CONFIGURE_DIRTY_MEMORY
2605
2606/* Generated from spec:/acfg/if/disable-newlib-reentrancy */
2607
2608/**
2609 * @brief This configuration option is a boolean feature define.
2610 *
2611 * In case this configuration option is defined, then the Newlib reentrancy
2612 * support per thread is disabled and a global reentrancy structure is used.
2613 *
2614 * @par Default Configuration
2615 * If this configuration option is undefined, then the described feature is not
2616 * enabled.
2617 *
2618 * @par Notes
2619 * You can enable this option to reduce the size of the :term:`TCB`.  Use this
2620 * option with care, since it can lead to race conditions and undefined system
2621 * behaviour.  For example, #errno is no longer a thread-local variable if this
2622 * option is enabled.
2623 */
2624#define CONFIGURE_DISABLE_NEWLIB_REENTRANCY
2625
2626/* Generated from spec:/acfg/if/executive-ram-size */
2627
2628/**
2629 * @brief This configuration option is an integer define.
2630 *
2631 * The value of this configuration option defines the RTEMS Workspace size in
2632 * bytes.
2633 *
2634 * @par Default Value
2635 * If this configuration option is undefined, then the RTEMS Workspace and task
2636 * stack space size is calculated by ``<rtems/confdefs.h>`` based on the values
2637 * configuration options.
2638 *
2639 * @par Value Constraints
2640 * @parblock
2641 * The value of this configuration option shall satisfy all of the following
2642 * constraints:
2643 *
2644 * * It shall be greater than or equal to zero.
2645 *
2646 * * It shall be less than or equal to <a
2647 *   href="https://en.cppreference.com/w/c/types/integer">UINTPTR_MAX</a>.
2648 *
2649 * * It shall be less than or equal to a BSP-specific and application-specific
2650 *   value which depends on the size of the memory available to the
2651 *   application.
2652 * @endparblock
2653 *
2654 * @par Notes
2655 * This is an advanced configuration option.  Use it only if you know exactly
2656 * what you are doing.
2657 */
2658#define CONFIGURE_EXECUTIVE_RAM_SIZE
2659
2660/* Generated from spec:/acfg/if/extra-task-stacks */
2661
2662/**
2663 * @brief This configuration option is an integer define.
2664 *
2665 * The value of this configuration option defines the number of bytes the
2666 * applications wishes to add to the task stack requirements calculated by
2667 * ``<rtems/confdefs.h>``.
2668 *
2669 * @par Default Value
2670 * The default value is 0.
2671 *
2672 * @par Value Constraints
2673 * @parblock
2674 * The value of this configuration option shall satisfy all of the following
2675 * constraints:
2676 *
2677 * * It shall be greater than or equal to zero.
2678 *
2679 * * It shall be small enough so that the task stack space calculation carried
2680 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
2681 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
2682 * @endparblock
2683 *
2684 * @par Notes
2685 * This parameter is very important.  If the application creates tasks with
2686 * stacks larger then the minimum, then that memory is **not** accounted for by
2687 * ``<rtems/confdefs.h>``.
2688 */
2689#define CONFIGURE_EXTRA_TASK_STACKS
2690
2691/* Generated from spec:/acfg/if/initial-extensions */
2692
2693/**
2694 * @brief This configuration option is an initializer define.
2695 *
2696 * The value of this configuration option is used to initialize the table of
2697 * initial user extensions.
2698 *
2699 * @par Default Value
2700 * The default value is the empty list.
2701 *
2702 * @par Value Constraints
2703 * The value of this configuration option shall be a list of initializers for
2704 * structures of type ::rtems_extensions_table.
2705 *
2706 * @par Notes
2707 * The value of this configuration option is placed before the entries of
2708 * #BSP_INITIAL_EXTENSION and after the entries of all other initial user
2709 * extensions.
2710 */
2711#define CONFIGURE_INITIAL_EXTENSIONS
2712
2713/* Generated from spec:/acfg/if/interrupt-stack-size */
2714
2715/**
2716 * @brief This configuration option is an integer define.
2717 *
2718 * The value of this configuration option defines the size of an interrupt
2719 * stack in bytes.
2720 *
2721 * @par Default Value
2722 * The default value is #BSP_INTERRUPT_STACK_SIZE in case it is defined,
2723 * otherwise the default value is #CPU_STACK_MINIMUM_SIZE.
2724 *
2725 * @par Value Constraints
2726 * @parblock
2727 * The value of this configuration option shall satisfy all of the following
2728 * constraints:
2729 *
2730 * * It shall be greater than or equal to a BSP-specific and
2731 *   application-specific minimum value.
2732 *
2733 * * It shall be small enough so that the interrupt stack area calculation
2734 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
2735 *   <a href="https://en.cppreference.com/w/c/types/size_t">size_t</a>.
2736 *
2737 * * It shall be aligned according to #CPU_INTERRUPT_STACK_ALIGNMENT.
2738 * @endparblock
2739 *
2740 * @par Notes
2741 * @parblock
2742 * There is one interrupt stack available for each configured processor
2743 * (#CONFIGURE_MAXIMUM_PROCESSORS).  The interrupt stack areas are statically
2744 * allocated in a special linker section (``.rtemsstack.interrupt``). The
2745 * placement of this linker section is BSP-specific.
2746 *
2747 * Some BSPs use the interrupt stack as the initialization stack which is used
2748 * to perform the sequential system initialization before the multithreading is
2749 * started.
2750 *
2751 * The interrupt stacks are covered by the stack checker, see
2752 * #CONFIGURE_STACK_CHECKER_ENABLED.  However, using a too small interrupt
2753 * stack size may still result in undefined behaviour.
2754 *
2755 * In releases before RTEMS 5.1 the default value was
2756 * #CONFIGURE_MINIMUM_TASK_STACK_SIZE instead of #CPU_STACK_MINIMUM_SIZE.
2757 * @endparblock
2758 */
2759#define CONFIGURE_INTERRUPT_STACK_SIZE
2760
2761/* Generated from spec:/acfg/if/malloc-dirty */
2762
2763/**
2764 * @brief This configuration option is a boolean feature define.
2765 *
2766 * In case this configuration option is defined, then each memory area returned
2767 * by C Program Heap allocator functions such as malloc() is dirtied with a
2768 * ``0xCF`` byte pattern before it is handed over to the application.
2769 *
2770 * @par Default Configuration
2771 * If this configuration option is undefined, then the described feature is not
2772 * enabled.
2773 *
2774 * @par Notes
2775 * The dirtying performed by this option is carried out for each successful
2776 * memory allocation from the C Program Heap in contrast to
2777 * #CONFIGURE_DIRTY_MEMORY which dirties the memory only once during the system
2778 * initialization.
2779 */
2780#define CONFIGURE_MALLOC_DIRTY
2781
2782/* Generated from spec:/acfg/if/max-file-descriptors */
2783
2784/**
2785 * @brief This configuration option is an integer define.
2786 *
2787 * The value of this configuration option defines the maximum number of file
2788 * like objects that can be concurrently open.
2789 *
2790 * @par Default Value
2791 * The default value is 3.
2792 *
2793 * @par Value Constraints
2794 * @parblock
2795 * The value of this configuration option shall satisfy all of the following
2796 * constraints:
2797 *
2798 * * It shall be greater than or equal to zero.
2799 *
2800 * * It shall be less than or equal to <a
2801 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
2802 *
2803 * * It shall be less than or equal to a BSP-specific and application-specific
2804 *   value which depends on the size of the memory available to the
2805 *   application.
2806 * @endparblock
2807 *
2808 * @par Notes
2809 * The default value of three file descriptors allows RTEMS to support standard
2810 * input, output, and error I/O streams on ``/dev/console``.
2811 */
2812#define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS
2813
2814/* Generated from spec:/acfg/if/max-processors */
2815
2816/**
2817 * @brief This configuration option is an integer define.
2818 *
2819 * The value of this configuration option defines the maximum number of
2820 * processors an application intends to use.  The number of actually available
2821 * processors depends on the hardware and may be less.  It is recommended to
2822 * use the smallest value suitable for the application in order to save memory.
2823 * Each processor needs an IDLE task stack and interrupt stack for example.
2824 *
2825 * @par Default Value
2826 * The default value is 1.
2827 *
2828 * @par Value Constraints
2829 * @parblock
2830 * The value of this configuration option shall satisfy all of the following
2831 * constraints:
2832 *
2833 * * It shall be greater than or equal to one.
2834 *
2835 * * It shall be less than or equal to #CPU_MAXIMUM_PROCESSORS.
2836 * @endparblock
2837 *
2838 * @par Notes
2839 * @parblock
2840 * If there are more processors available than configured, the rest will be
2841 * ignored.
2842 *
2843 * This configuration option is only evaluated in SMP configurations (e.g.
2844 * RTEMS was built with the ``--enable-smp`` build configuration option).  In
2845 * all other configurations it has no effect.
2846 * @endparblock
2847 */
2848#define CONFIGURE_MAXIMUM_PROCESSORS
2849
2850/* Generated from spec:/acfg/if/max-thread-local-storage-size */
2851
2852/**
2853 * @brief This configuration option is an integer define.
2854 *
2855 * If the value of this configuration option is greater than zero, then it
2856 * defines the maximum thread-local storage size, otherwise the thread-local
2857 * storage size is defined by the linker depending on the thread-local storage
2858 * objects used by the application in the statically-linked executable.
2859 *
2860 * @par Default Value
2861 * The default value is 0.
2862 *
2863 * @par Constraints
2864 * @parblock
2865 * The following constraints apply to this configuration option:
2866 *
2867 * * The value of the configuration option shall be greater than or equal to
2868 *   zero.
2869 *
2870 * * The value of the configuration option shall be less than or equal to <a
2871 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
2872 *
2873 * * The value of the configuration option shall be an integral multiple of
2874 *   #RTEMS_TASK_STORAGE_ALIGNMENT.
2875 * @endparblock
2876 *
2877 * @par Notes
2878 * @parblock
2879 * This configuration option can be used to reserve space for the dynamic
2880 * linking of modules with thread-local storage objects.
2881 *
2882 * If the thread-local storage size defined by the thread-local storage objects
2883 * used by the application in the statically-linked executable is greater than
2884 * a non-zero value of this configuration option, then a fatal error will occur
2885 * during system initialization.
2886 *
2887 * Use RTEMS_ALIGN_UP() and #RTEMS_TASK_STORAGE_ALIGNMENT to adjust the size to
2888 * meet the minimum alignment requirement of a thread-local storage area.
2889 *
2890 * The actual thread-local storage size is determined when the application
2891 * executable is linked.  The ``rtems-exeinfo`` command line tool included in
2892 * the RTEMS Tools can be used to obtain the thread-local storage size and
2893 * alignment of an application executable.
2894 * @endparblock
2895 */
2896#define CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE
2897
2898/* Generated from spec:/acfg/if/max-thread-name-size */
2899
2900/**
2901 * @brief This configuration option is an integer define.
2902 *
2903 * The value of this configuration option defines the maximum thread name size
2904 * including the terminating ``NUL`` character.
2905 *
2906 * @par Default Value
2907 * The default value is 16.
2908 *
2909 * @par Value Constraints
2910 * @parblock
2911 * The value of this configuration option shall satisfy all of the following
2912 * constraints:
2913 *
2914 * * It shall be greater than or equal to zero.
2915 *
2916 * * It shall be less than or equal to <a
2917 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
2918 *
2919 * * It shall be less than or equal to a BSP-specific and application-specific
2920 *   value which depends on the size of the memory available to the
2921 *   application.
2922 * @endparblock
2923 *
2924 * @par Notes
2925 * @parblock
2926 * The default value was chosen for Linux compatibility, see <a
2927 * href=http://man7.org/linux/man-pages/man3/pthread_setname_np.3.html>PTHREAD_SETNAME_NP(3)</a>.
2928 *
2929 * The size of the thread control block is increased by the maximum thread name
2930 * size.
2931 *
2932 * This configuration option is available since RTEMS 5.1.
2933 * @endparblock
2934 */
2935#define CONFIGURE_MAXIMUM_THREAD_NAME_SIZE
2936
2937/* Generated from spec:/acfg/if/memory-overhead */
2938
2939/**
2940 * @brief This configuration option is an integer define.
2941 *
2942 * The value of this configuration option defines the number of kilobytes the
2943 * application wishes to add to the RTEMS Workspace size calculated by
2944 * ``<rtems/confdefs.h>``.
2945 *
2946 * @par Default Value
2947 * The default value is 0.
2948 *
2949 * @par Value Constraints
2950 * @parblock
2951 * The value of this configuration option shall satisfy all of the following
2952 * constraints:
2953 *
2954 * * It shall be greater than or equal to zero.
2955 *
2956 * * It shall be less than or equal to a BSP-specific and application-specific
2957 *   value which depends on the size of the memory available to the
2958 *   application.
2959 *
2960 * * It shall be small enough so that the RTEMS Workspace size calculation
2961 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
2962 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
2963 * @endparblock
2964 *
2965 * @par Notes
2966 * This configuration option should only be used when it is suspected that a
2967 * bug in ``<rtems/confdefs.h>`` has resulted in an underestimation.  Typically
2968 * the memory allocation will be too low when an application does not account
2969 * for all message queue buffers or task stacks, see
2970 * #CONFIGURE_MESSAGE_BUFFER_MEMORY.
2971 */
2972#define CONFIGURE_MEMORY_OVERHEAD
2973
2974/* Generated from spec:/acfg/if/message-buffer-memory */
2975
2976/**
2977 * @brief This configuration option is an integer define.
2978 *
2979 * The value of this configuration option defines the number of bytes reserved
2980 * for message queue buffers in the RTEMS Workspace.
2981 *
2982 * @par Default Value
2983 * The default value is 0.
2984 *
2985 * @par Value Constraints
2986 * @parblock
2987 * The value of this configuration option shall satisfy all of the following
2988 * constraints:
2989 *
2990 * * It shall be greater than or equal to zero.
2991 *
2992 * * It shall be less than or equal to a BSP-specific and application-specific
2993 *   value which depends on the size of the memory available to the
2994 *   application.
2995 *
2996 * * It shall be small enough so that the RTEMS Workspace size calculation
2997 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
2998 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
2999 * @endparblock
3000 *
3001 * @par Notes
3002 * @parblock
3003 * The configuration options #CONFIGURE_MAXIMUM_MESSAGE_QUEUES and
3004 * #CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES define only how many message queues
3005 * can be created by the application.  The memory for the message buffers is
3006 * configured by this option.  For each message queue you have to reserve some
3007 * memory for the message buffers.  The size depends on the maximum number of
3008 * pending messages and the maximum size of the messages of a message queue.
3009 * Use the ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE()`` macro to specify the
3010 * message buffer memory for each message queue and sum them up to define the
3011 * value for ``CONFIGURE_MAXIMUM_MESSAGE_QUEUES``.
3012 *
3013 * The interface for the ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE()`` help macro
3014 * is as follows:
3015 *
3016 * @code
3017 * CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( max_messages, max_msg_size )
3018 * @endcode
3019 *
3020 * Where ``max_messages`` is the maximum number of pending messages and
3021 * ``max_msg_size`` is the maximum size in bytes of the messages of the
3022 * corresponding message queue.  Both parameters shall be compile time
3023 * constants.  Not using this help macro (e.g. just using ``max_messages *
3024 * max_msg_size``) may result in an underestimate of the RTEMS Workspace size.
3025 *
3026 * The following example illustrates how the
3027 * ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE()`` help macro can be used to assist
3028 * in calculating the message buffer memory required.  In this example, there
3029 * are two message queues used in this application.  The first message queue
3030 * has a maximum of 24 pending messages with the message structure defined by
3031 * the type ``one_message_type``.  The other message queue has a maximum of 500
3032 * pending messages with the message structure defined by the type
3033 * ``other_message_type``.
3034 *
3035 * @code
3036 * #define CONFIGURE_MESSAGE_BUFFER_MEMORY ( \
3037 *     CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( \
3038 *       24, \
3039 *       sizeof( one_message_type ) \
3040 *     ) \
3041 *     + CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( \
3042 *       500, \
3043 *       sizeof( other_message_type ) \
3044 *     ) \
3045 *   )
3046 * @endcode
3047 * @endparblock
3048 */
3049#define CONFIGURE_MESSAGE_BUFFER_MEMORY
3050
3051/* Generated from spec:/acfg/if/microseconds-per-tick */
3052
3053/**
3054 * @brief This configuration option is an integer define.
3055 *
3056 * The value of this configuration option defines the length of time in
3057 * microseconds between clock ticks (clock tick quantum).
3058 *
3059 * When the clock tick quantum value is too low, the system will spend so much
3060 * time processing clock ticks that it does not have processing time available
3061 * to perform application work. In this case, the system will become
3062 * unresponsive.
3063 *
3064 * The lowest practical time quantum varies widely based upon the speed of the
3065 * target hardware and the architectural overhead associated with interrupts.
3066 * In general terms, you do not want to configure it lower than is needed for
3067 * the application.
3068 *
3069 * The clock tick quantum should be selected such that it all blocking and
3070 * delay times in the application are evenly divisible by it. Otherwise,
3071 * rounding errors will be introduced which may negatively impact the
3072 * application.
3073 *
3074 * @par Default Value
3075 * The default value is 10000.
3076 *
3077 * @par Value Constraints
3078 * @parblock
3079 * The value of this configuration option shall satisfy all of the following
3080 * constraints:
3081 *
3082 * * It shall be greater than or equal to a value defined by the Clock Driver.
3083 *
3084 * * It shall be less than or equal to a value defined by the Clock Driver.
3085 *
3086 * * The resulting clock ticks per second should be an integer.
3087 * @endparblock
3088 *
3089 * @par Notes
3090 * @parblock
3091 * This configuration option has no impact if the Clock Driver is not
3092 * configured, see #CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER.
3093 *
3094 * There may be Clock Driver specific limits on the resolution or maximum value
3095 * of a clock tick quantum.
3096 * @endparblock
3097 */
3098#define CONFIGURE_MICROSECONDS_PER_TICK
3099
3100/* Generated from spec:/acfg/if/min-task-stack-size */
3101
3102/**
3103 * @brief This configuration option is an integer define.
3104 *
3105 * The value of this configuration option defines the minimum stack size in
3106 * bytes for every user task or thread in the system.
3107 *
3108 * @par Default Value
3109 * The default value is #CPU_STACK_MINIMUM_SIZE.
3110 *
3111 * @par Value Constraints
3112 * @parblock
3113 * The value of this configuration option shall satisfy all of the following
3114 * constraints:
3115 *
3116 * * It shall be small enough so that the task stack space calculation carried
3117 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
3118 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3119 *
3120 * * It shall be greater than or equal to a BSP-specific and
3121 *   application-specific minimum value.
3122 * @endparblock
3123 *
3124 * @par Notes
3125 * @parblock
3126 * Adjusting this parameter should be done with caution.  Examining the actual
3127 * stack usage using the stack checker usage reporting facility is recommended
3128 * (see also #CONFIGURE_STACK_CHECKER_ENABLED).
3129 *
3130 * This parameter can be used to lower the minimum from that recommended. This
3131 * can be used in low memory systems to reduce memory consumption for stacks.
3132 * However, this shall be done with caution as it could increase the
3133 * possibility of a blown task stack.
3134 *
3135 * This parameter can be used to increase the minimum from that recommended.
3136 * This can be used in higher memory systems to reduce the risk of stack
3137 * overflow without performing analysis on actual consumption.
3138 *
3139 * By default, this configuration parameter defines also the minimum stack size
3140 * of POSIX threads.  This can be changed with the
3141 * #CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE configuration option.
3142 *
3143 * In releases before RTEMS 5.1 the ``CONFIGURE_MINIMUM_TASK_STACK_SIZE`` was
3144 * used to define the default value of #CONFIGURE_INTERRUPT_STACK_SIZE.
3145 * @endparblock
3146 */
3147#define CONFIGURE_MINIMUM_TASK_STACK_SIZE
3148
3149/* Generated from spec:/acfg/if/stack-checker-enabled */
3150
3151/**
3152 * @brief This configuration option is a boolean feature define.
3153 *
3154 * In case this configuration option is defined, then the stack checker is
3155 * enabled.
3156 *
3157 * @par Default Configuration
3158 * If this configuration option is undefined, then the described feature is not
3159 * enabled.
3160 *
3161 * @par Notes
3162 * @parblock
3163 * The stack checker performs run-time stack bounds checking.  This increases
3164 * the time required to create tasks as well as adding overhead to each context
3165 * switch.
3166 *
3167 * In 4.9 and older, this configuration option was named ``STACK_CHECKER_ON``.
3168 * @endparblock
3169 */
3170#define CONFIGURE_STACK_CHECKER_ENABLED
3171
3172/* Generated from spec:/acfg/if/ticks-per-time-slice */
3173
3174/**
3175 * @brief This configuration option is an integer define.
3176 *
3177 * The value of this configuration option defines the length of the timeslice
3178 * quantum in ticks for each task.
3179 *
3180 * @par Default Value
3181 * The default value is 50.
3182 *
3183 * @par Value Constraints
3184 * @parblock
3185 * The value of this configuration option shall satisfy all of the following
3186 * constraints:
3187 *
3188 * * It shall be greater than or equal to zero.
3189 *
3190 * * It shall be less than or equal to <a
3191 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3192 * @endparblock
3193 *
3194 * @par Notes
3195 * This configuration option has no impact if the Clock Driver is not
3196 * configured, see #CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER.
3197 */
3198#define CONFIGURE_TICKS_PER_TIMESLICE
3199
3200/* Generated from spec:/acfg/if/unified-work-areas */
3201
3202/**
3203 * @brief This configuration option is a boolean feature define.
3204 *
3205 * In case this configuration option is defined, then the RTEMS Workspace and
3206 * the C Program Heap will be one pool of memory.
3207 *
3208 * @par Default Configuration
3209 * If this configuration option is undefined, then there will be separate
3210 * memory pools for the RTEMS Workspace and C Program Heap.
3211 *
3212 * @par Notes
3213 * @parblock
3214 * Having separate pools does have some advantages in the event a task blows a
3215 * stack or writes outside its memory area. However, in low memory systems the
3216 * overhead of the two pools plus the potential for unused memory in either
3217 * pool is very undesirable.
3218 *
3219 * In high memory environments, this is desirable when you want to use the <a
3220 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3221 * Objects</a> option.  You will be able to create objects until you run out of
3222 * all available memory rather then just until you run out of RTEMS Workspace.
3223 * @endparblock
3224 */
3225#define CONFIGURE_UNIFIED_WORK_AREAS
3226
3227/* Generated from spec:/acfg/if/unlimited-allocation-size */
3228
3229/**
3230 * @brief This configuration option is an integer define.
3231 *
3232 * If #CONFIGURE_UNLIMITED_OBJECTS is defined, then the value of this
3233 * configuration option defines the default objects maximum of all object
3234 * classes supporting <a
3235 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3236 * Objects</a> to ``rtems_resource_unlimited(
3237 * CONFIGURE_UNLIMITED_ALLOCATION_SIZE )``.
3238 *
3239 * @par Default Value
3240 * The default value is 8.
3241 *
3242 * @par Value Constraints
3243 * The value of this configuration option shall meet the constraints of all
3244 * object classes to which it is applied.
3245 *
3246 * @par Notes
3247 * @parblock
3248 * By allowing users to declare all resources as being unlimited the user can
3249 * avoid identifying and limiting the resources used.
3250 *
3251 * The object maximum of each class can be configured also individually using
3252 * the rtems_resource_unlimited() macro.
3253 * @endparblock
3254 */
3255#define CONFIGURE_UNLIMITED_ALLOCATION_SIZE
3256
3257/* Generated from spec:/acfg/if/unlimited-objects */
3258
3259/**
3260 * @brief This configuration option is a boolean feature define.
3261 *
3262 * In case this configuration option is defined, then unlimited objects are
3263 * used by default.
3264 *
3265 * @par Default Configuration
3266 * If this configuration option is undefined, then the described feature is not
3267 * enabled.
3268 *
3269 * @par Notes
3270 * @parblock
3271 * When using unlimited objects, it is common practice to also specify
3272 * #CONFIGURE_UNIFIED_WORK_AREAS so the system operates with a single pool of
3273 * memory for both RTEMS Workspace and C Program Heap.
3274 *
3275 * This option does not override an explicit configuration for a particular
3276 * object class by the user.
3277 *
3278 * See also #CONFIGURE_UNLIMITED_ALLOCATION_SIZE.
3279 * @endparblock
3280 */
3281#define CONFIGURE_UNLIMITED_OBJECTS
3282
3283/* Generated from spec:/acfg/if/verbose-system-init */
3284
3285/**
3286 * @brief This configuration option is a boolean feature define.
3287 *
3288 * In case this configuration option is defined, then the system initialization
3289 * is verbose.
3290 *
3291 * @par Default Configuration
3292 * If this configuration option is undefined, then the described feature is not
3293 * enabled.
3294 *
3295 * @par Notes
3296 * You may use this feature to debug system initialization issues.  The
3297 * printk() function is used to print the information.
3298 */
3299#define CONFIGURE_VERBOSE_SYSTEM_INITIALIZATION
3300
3301/* Generated from spec:/acfg/if/zero-workspace-automatically */
3302
3303/**
3304 * @brief This configuration option is a boolean feature define.
3305 *
3306 * In case this configuration option is defined, then the memory areas used for
3307 * the RTEMS Workspace and the C Program Heap are zeroed with a ``0x00`` byte
3308 * pattern during system initialization.
3309 *
3310 * @par Default Configuration
3311 * If this configuration option is undefined, then the described feature is not
3312 * enabled.
3313 *
3314 * @par Notes
3315 * Zeroing memory can add significantly to the system initialization time. It
3316 * is not necessary for RTEMS but is often assumed by support libraries.  In
3317 * case #CONFIGURE_DIRTY_MEMORY is also defined, then the memory is first
3318 * dirtied and then zeroed.
3319 */
3320#define CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY
3321
3322/** @} */
3323
3324/* Generated from spec:/acfg/if/group-idle */
3325
3326/**
3327 * @defgroup RTEMSApplConfigIdleTaskConfiguration Idle Task Configuration
3328 *
3329 * @ingroup RTEMSApplConfig
3330 *
3331 * This section describes configuration options related to the idle tasks.
3332 *
3333 * @{
3334 */
3335
3336/* Generated from spec:/acfg/if/idle-task-body */
3337
3338/**
3339 * @brief This configuration option is an initializer define.
3340 *
3341 * The value of this configuration option initializes the IDLE thread body.
3342 *
3343 * @par Default Value
3344 * If #BSP_IDLE_TASK_BODY is defined, then this will be the default value,
3345 * otherwise the default value is ``_CPU_Thread_Idle_body``.
3346 *
3347 * @par Value Constraints
3348 * The value of this configuration option shall be defined to a valid function
3349 * pointer of the type ``void *( *idle_body )( uintptr_t )``.
3350 *
3351 * @par Notes
3352 * @parblock
3353 * IDLE threads shall not block.  A blocking IDLE thread results in undefined
3354 * system behaviour because the scheduler assume that at least one ready thread
3355 * exists.
3356 *
3357 * IDLE threads can be used to initialize the application, see configuration
3358 * option #CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION.
3359 * @endparblock
3360 */
3361#define CONFIGURE_IDLE_TASK_BODY
3362
3363/* Generated from spec:/acfg/if/idle-task-init-appl */
3364
3365/**
3366 * @brief This configuration option is a boolean feature define.
3367 *
3368 * This configuration option is defined to indicate that the user has
3369 * configured **no** user initialization tasks or threads and that the user
3370 * provided IDLE task will perform application initialization and then
3371 * transform itself into an IDLE task.
3372 *
3373 * @par Default Configuration
3374 * If this configuration option is undefined, then the user is assumed to
3375 * provide one or more initialization tasks.
3376 *
3377 * @par Notes
3378 * @parblock
3379 * If you use this option be careful, the user IDLE task **cannot** block at
3380 * all during the initialization sequence.  Further, once application
3381 * initialization is complete, it shall make itself preemptible and enter an
3382 * idle body loop.
3383 *
3384 * The IDLE task shall run at the lowest priority of all tasks in the system.
3385 *
3386 * If this configuration option is defined, then it is mandatory to configure a
3387 * user IDLE task with the #CONFIGURE_IDLE_TASK_BODY configuration option,
3388 * otherwise a compile time error in the configuration file will occur.
3389 *
3390 * The application shall define exactly one of the following configuration
3391 * options
3392 *
3393 * * #CONFIGURE_RTEMS_INIT_TASKS_TABLE,
3394 *
3395 * * #CONFIGURE_POSIX_INIT_THREAD_TABLE, or
3396 *
3397 * * ``CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION``
3398 *
3399 * otherwise a compile time error in the configuration file will occur.
3400 * @endparblock
3401 */
3402#define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
3403
3404/* Generated from spec:/acfg/if/idle-task-stack-size */
3405
3406/**
3407 * @brief This configuration option is an integer define.
3408 *
3409 * The value of this configuration option defines the task stack size for an
3410 * IDLE task.
3411 *
3412 * @par Default Value
3413 * The default value is #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
3414 *
3415 * @par Value Constraints
3416 * @parblock
3417 * The value of this configuration option shall satisfy all of the following
3418 * constraints:
3419 *
3420 * * It shall be greater than or equal to a BSP-specific and
3421 *   application-specific minimum value.
3422 *
3423 * * It shall be small enough so that the IDLE task stack area calculation
3424 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
3425 *   <a href="https://en.cppreference.com/w/c/types/size_t">size_t</a>.
3426 * @endparblock
3427 *
3428 * @par Notes
3429 * In SMP configurations, there is one IDLE task per configured processor, see
3430 * #CONFIGURE_MAXIMUM_PROCESSORS.
3431 */
3432#define CONFIGURE_IDLE_TASK_STACK_SIZE
3433
3434/** @} */
3435
3436/* Generated from spec:/acfg/if/group-mpci */
3437
3438/**
3439 * @defgroup RTEMSApplConfigMultiprocessingConfiguration \
3440 *   Multiprocessing Configuration
3441 *
3442 * @ingroup RTEMSApplConfig
3443 *
3444 * This section describes multiprocessing related configuration options.  The
3445 * options are only used if RTEMS was built with the
3446 * ``--enable-multiprocessing`` build configuration option.  Additionally, this
3447 * class of configuration options are only applicable if the configuration
3448 * option #CONFIGURE_MP_APPLICATION is defined.  The multiprocessing (MPCI)
3449 * support must not be confused with the SMP support.
3450 *
3451 * @{
3452 */
3453
3454/* Generated from spec:/acfg/if/mp-extra-server-stack */
3455
3456/**
3457 * @brief This configuration option is an integer define.
3458 *
3459 * The value of this configuration option defines the number of bytes the
3460 * applications wishes to add to the MPCI task stack on top of
3461 * #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
3462 *
3463 * @par Default Value
3464 * The default value is 0.
3465 *
3466 * @par Value Constraints
3467 * @parblock
3468 * The value of this configuration option shall satisfy all of the following
3469 * constraints:
3470 *
3471 * * It shall be greater than or equal to zero.
3472 *
3473 * * It shall be less than or equal to <a
3474 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3475 *
3476 * * It shall be small enough so that the MPCI receive server stack area
3477 *   calculation carried out by ``<rtems/confdefs.h>`` does not overflow an
3478 *   integer of type <a
3479 *   href="https://en.cppreference.com/w/c/types/size_t">size_t</a>.
3480 * @endparblock
3481 *
3482 * @par Notes
3483 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3484 * defined.
3485 */
3486#define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
3487
3488/* Generated from spec:/acfg/if/mp-appl */
3489
3490/**
3491 * @brief This configuration option is a boolean feature define.
3492 *
3493 * This configuration option is defined to indicate that the application
3494 * intends to be part of a multiprocessing configuration.  Additional
3495 * configuration options are assumed to be provided.
3496 *
3497 * @par Default Configuration
3498 * If this configuration option is undefined, then the multiprocessing services
3499 * are not initialized.
3500 *
3501 * @par Notes
3502 * This configuration option shall be undefined if the multiprocessing support
3503 * is not enabled (e.g. RTEMS was built without the
3504 * ``--enable-multiprocessing`` build configuration option).  Otherwise a
3505 * compile time error in the configuration file will occur.
3506 */
3507#define CONFIGURE_MP_APPLICATION
3508
3509/* Generated from spec:/acfg/if/mp-max-global-objects */
3510
3511/**
3512 * @brief This configuration option is an integer define.
3513 *
3514 * The value of this configuration option defines the maximum number of
3515 * concurrently active global objects in a multiprocessor system.
3516 *
3517 * @par Default Value
3518 * The default value is 32.
3519 *
3520 * @par Value Constraints
3521 * @parblock
3522 * The value of this configuration option shall satisfy all of the following
3523 * constraints:
3524 *
3525 * * It shall be greater than or equal to zero.
3526 *
3527 * * It shall be less than or equal to <a
3528 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3529 * @endparblock
3530 *
3531 * @par Notes
3532 * @parblock
3533 * This value corresponds to the total number of objects which can be created
3534 * with the #RTEMS_GLOBAL attribute.
3535 *
3536 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3537 * defined.
3538 * @endparblock
3539 */
3540#define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
3541
3542/* Generated from spec:/acfg/if/mp-max-nodes */
3543
3544/**
3545 * @brief This configuration option is an integer define.
3546 *
3547 * The value of this configuration option defines the maximum number of nodes
3548 * in a multiprocessor system.
3549 *
3550 * @par Default Value
3551 * The default value is 2.
3552 *
3553 * @par Value Constraints
3554 * @parblock
3555 * The value of this configuration option shall satisfy all of the following
3556 * constraints:
3557 *
3558 * * It shall be greater than or equal to zero.
3559 *
3560 * * It shall be less than or equal to <a
3561 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3562 * @endparblock
3563 *
3564 * @par Notes
3565 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3566 * defined.
3567 */
3568#define CONFIGURE_MP_MAXIMUM_NODES
3569
3570/* Generated from spec:/acfg/if/mp-max-proxies */
3571
3572/**
3573 * @brief This configuration option is an integer define.
3574 *
3575 * The value of this configuration option defines the maximum number of
3576 * concurrently active thread/task proxies on this node in a multiprocessor
3577 * system.
3578 *
3579 * @par Default Value
3580 * The default value is 32.
3581 *
3582 * @par Value Constraints
3583 * @parblock
3584 * The value of this configuration option shall satisfy all of the following
3585 * constraints:
3586 *
3587 * * It shall be greater than or equal to zero.
3588 *
3589 * * It shall be less than or equal to <a
3590 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3591 * @endparblock
3592 *
3593 * @par Notes
3594 * @parblock
3595 * Since a proxy is used to represent a remote task/thread which is blocking on
3596 * this node. This configuration parameter reflects the maximum number of
3597 * remote tasks/threads which can be blocked on objects on this node, see <a
3598 * href=https://docs.rtems.org/branches/master/c-user/multiprocessing.html#proxies>Proxies</a>.
3599 *
3600 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3601 * defined.
3602 * @endparblock
3603 */
3604#define CONFIGURE_MP_MAXIMUM_PROXIES
3605
3606/* Generated from spec:/acfg/if/mp-mpci-table-pointer */
3607
3608/**
3609 * @brief This configuration option is an initializer define.
3610 *
3611 * The value of this configuration option initializes the MPCI Configuration
3612 * Table.
3613 *
3614 * @par Default Value
3615 * The default value is ``&MPCI_table``.
3616 *
3617 * @par Value Constraints
3618 * The value of this configuration option shall be a pointer to
3619 * ::rtems_mpci_table.
3620 *
3621 * @par Notes
3622 * @parblock
3623 * RTEMS provides a Shared Memory MPCI Device Driver which can be used on any
3624 * Multiprocessor System assuming the BSP provides the proper set of supporting
3625 * methods.
3626 *
3627 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3628 * defined.
3629 * @endparblock
3630 */
3631#define CONFIGURE_MP_MPCI_TABLE_POINTER
3632
3633/* Generated from spec:/acfg/if/mp-node-number */
3634
3635/**
3636 * @brief This configuration option is an integer define.
3637 *
3638 * The value of this configuration option defines the node number of this node
3639 * in a multiprocessor system.
3640 *
3641 * @par Default Value
3642 * The default value is ``NODE_NUMBER``.
3643 *
3644 * @par Value Constraints
3645 * @parblock
3646 * The value of this configuration option shall satisfy all of the following
3647 * constraints:
3648 *
3649 * * It shall be greater than or equal to zero.
3650 *
3651 * * It shall be less than or equal to <a
3652 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3653 * @endparblock
3654 *
3655 * @par Notes
3656 * @parblock
3657 * In the RTEMS Multiprocessing Test Suite, the node number is derived from the
3658 * Makefile variable ``NODE_NUMBER``. The same code is compiled with the
3659 * ``NODE_NUMBER`` set to different values. The test programs behave
3660 * differently based upon their node number.
3661 *
3662 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3663 * defined.
3664 * @endparblock
3665 */
3666#define CONFIGURE_MP_NODE_NUMBER
3667
3668/** @} */
3669
3670/* Generated from spec:/acfg/if/group-posix */
3671
3672/**
3673 * @defgroup RTEMSApplConfigPOSIXAPIConfiguration POSIX API Configuration
3674 *
3675 * @ingroup RTEMSApplConfig
3676 *
3677 * This section describes configuration options related to the POSIX API.  Most
3678 * POSIX API objects are available by default since RTEMS 5.1.  The queued
3679 * signals and timers are only available if RTEMS was built with the
3680 * ``--enable-posix`` build configuration option.
3681 *
3682 * @{
3683 */
3684
3685/* Generated from spec:/acfg/if/max-posix-keys */
3686
3687/**
3688 * @brief This configuration option is an integer define.
3689 *
3690 * The value of this configuration option defines the maximum number of POSIX
3691 * API Keys that can be concurrently active.
3692 *
3693 * @par Default Value
3694 * The default value is 0.
3695 *
3696 * @par Value Constraints
3697 * @parblock
3698 * The value of this configuration option shall satisfy all of the following
3699 * constraints:
3700 *
3701 * * It shall be greater than or equal to zero.
3702 *
3703 * * It shall be less than or equal to 65535.
3704 *
3705 * * It shall be less than or equal to a BSP-specific and application-specific
3706 *   value which depends on the size of the memory available to the
3707 *   application.
3708 *
3709 * * It may be defined through rtems_resource_unlimited() the enable unlimited
3710 *   objects for the object class, if the value passed to
3711 *   rtems_resource_unlimited() satisfies all other constraints of the
3712 *   configuration option.
3713 * @endparblock
3714 *
3715 * @par Notes
3716 * This object class can be configured in unlimited allocation mode, see <a
3717 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3718 * Objects</a>.
3719 */
3720#define CONFIGURE_MAXIMUM_POSIX_KEYS
3721
3722/* Generated from spec:/acfg/if/max-posix-key-value-pairs */
3723
3724/**
3725 * @brief This configuration option is an integer define.
3726 *
3727 * The value of this configuration option defines the maximum number of key
3728 * value pairs used by POSIX API Keys that can be concurrently active.
3729 *
3730 * @par Default Value
3731 * The default value is #CONFIGURE_MAXIMUM_POSIX_KEYS *
3732 * #CONFIGURE_MAXIMUM_TASKS + #CONFIGURE_MAXIMUM_POSIX_THREADS.
3733 *
3734 * @par Value Constraints
3735 * @parblock
3736 * The value of this configuration option shall satisfy all of the following
3737 * constraints:
3738 *
3739 * * It shall be greater than or equal to zero.
3740 *
3741 * * It shall be less than or equal to 65535.
3742 *
3743 * * It shall be less than or equal to a BSP-specific and application-specific
3744 *   value which depends on the size of the memory available to the
3745 *   application.
3746 *
3747 * * It may be defined through rtems_resource_unlimited() the enable unlimited
3748 *   objects for the object class, if the value passed to
3749 *   rtems_resource_unlimited() satisfies all other constraints of the
3750 *   configuration option.
3751 * @endparblock
3752 *
3753 * @par Notes
3754 * @parblock
3755 * This object class can be configured in unlimited allocation mode, see <a
3756 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3757 * Objects</a>.
3758 *
3759 * A key value pair is created by pthread_setspecific() if the value is not <a
3760 * href="https://en.cppreference.com/w/c/types/NULL">NULL</a>, otherwise it is
3761 * deleted.
3762 * @endparblock
3763 */
3764#define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS
3765
3766/* Generated from spec:/acfg/if/max-posix-message-queues */
3767
3768/**
3769 * @brief This configuration option is an integer define.
3770 *
3771 * The value of this configuration option defines the maximum number of POSIX
3772 * API Message Queues that can be concurrently active.
3773 *
3774 * @par Default Value
3775 * The default value is 0.
3776 *
3777 * @par Value Constraints
3778 * @parblock
3779 * The value of this configuration option shall satisfy all of the following
3780 * constraints:
3781 *
3782 * * It shall be greater than or equal to zero.
3783 *
3784 * * It shall be less than or equal to 65535.
3785 *
3786 * * It shall be less than or equal to a BSP-specific and application-specific
3787 *   value which depends on the size of the memory available to the
3788 *   application.
3789 *
3790 * * It shall be small enough so that the RTEMS Workspace size calculation
3791 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
3792 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3793 *
3794 * * It may be defined through rtems_resource_unlimited() the enable unlimited
3795 *   objects for the object class, if the value passed to
3796 *   rtems_resource_unlimited() satisfies all other constraints of the
3797 *   configuration option.
3798 * @endparblock
3799 *
3800 * @par Notes
3801 * This object class can be configured in unlimited allocation mode, see <a
3802 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3803 * Objects</a>.  You have to account for the memory used to store the messages
3804 * of each message queue, see #CONFIGURE_MESSAGE_BUFFER_MEMORY.
3805 */
3806#define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES
3807
3808/* Generated from spec:/acfg/if/max-posix-queued-signals */
3809
3810/**
3811 * @brief This configuration option is an integer define.
3812 *
3813 * The value of this configuration option defines the maximum number of POSIX
3814 * API Queued Signals that can be concurrently active.
3815 *
3816 * @par Default Value
3817 * The default value is 0.
3818 *
3819 * @par Value Constraints
3820 * @parblock
3821 * The value of this configuration option shall satisfy all of the following
3822 * constraints:
3823 *
3824 * * It shall be greater than or equal to zero.
3825 *
3826 * * It shall be less than or equal to a BSP-specific and application-specific
3827 *   value which depends on the size of the memory available to the
3828 *   application.
3829 *
3830 * * It shall be small enough so that the RTEMS Workspace size calculation
3831 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
3832 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3833 *
3834 * * It shall be zero if the POSIX API is not enabled (e.g. RTEMS was built
3835 *   without the ``RTEMS_POSIX_API = True`` build configuration option).
3836 *   Otherwise a compile time error in the configuration file will occur.
3837 * @endparblock
3838 *
3839 * @par Notes
3840 * @parblock
3841 * Unlimited objects are not available for queued signals.
3842 *
3843 * Queued signals are only available if RTEMS was built with the
3844 * ``--enable-posix`` build configuration option.
3845 * @endparblock
3846 */
3847#define CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS
3848
3849/* Generated from spec:/acfg/if/max-posix-semaphores */
3850
3851/**
3852 * @brief This configuration option is an integer define.
3853 *
3854 * The value of this configuration option defines the maximum number of POSIX
3855 * API Named Semaphores that can be concurrently active.
3856 *
3857 * @par Default Value
3858 * The default value is 0.
3859 *
3860 * @par Value Constraints
3861 * @parblock
3862 * The value of this configuration option shall satisfy all of the following
3863 * constraints:
3864 *
3865 * * It shall be greater than or equal to zero.
3866 *
3867 * * It shall be less than or equal to 65535.
3868 *
3869 * * It shall be less than or equal to a BSP-specific and application-specific
3870 *   value which depends on the size of the memory available to the
3871 *   application.
3872 *
3873 * * It shall be small enough so that the RTEMS Workspace size calculation
3874 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
3875 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3876 *
3877 * * It may be defined through rtems_resource_unlimited() the enable unlimited
3878 *   objects for the object class, if the value passed to
3879 *   rtems_resource_unlimited() satisfies all other constraints of the
3880 *   configuration option.
3881 * @endparblock
3882 *
3883 * @par Notes
3884 * @parblock
3885 * This object class can be configured in unlimited allocation mode, see <a
3886 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3887 * Objects</a>.
3888 *
3889 * Named semaphores are created with sem_open().  Semaphores initialized with
3890 * sem_init() are not affected by this configuration option since the storage
3891 * space for these semaphores is user-provided.
3892 * @endparblock
3893 */
3894#define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
3895
3896/* Generated from spec:/acfg/if/max-posix-shms */
3897
3898/**
3899 * @brief This configuration option is an integer define.
3900 *
3901 * The value of this configuration option defines the maximum number of POSIX
3902 * API Shared Memory objects that can be concurrently active.
3903 *
3904 * @par Default Value
3905 * The default value is 0.
3906 *
3907 * @par Value Constraints
3908 * @parblock
3909 * The value of this configuration option shall satisfy all of the following
3910 * constraints:
3911 *
3912 * * It shall be greater than or equal to zero.
3913 *
3914 * * It shall be less than or equal to 65535.
3915 *
3916 * * It shall be less than or equal to a BSP-specific and application-specific
3917 *   value which depends on the size of the memory available to the
3918 *   application.
3919 *
3920 * * It shall be small enough so that the RTEMS Workspace size calculation
3921 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
3922 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3923 *
3924 * * It may be defined through rtems_resource_unlimited() the enable unlimited
3925 *   objects for the object class, if the value passed to
3926 *   rtems_resource_unlimited() satisfies all other constraints of the
3927 *   configuration option.
3928 * @endparblock
3929 *
3930 * @par Notes
3931 * This object class can be configured in unlimited allocation mode, see <a
3932 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3933 * Objects</a>.
3934 */
3935#define CONFIGURE_MAXIMUM_POSIX_SHMS
3936
3937/* Generated from spec:/acfg/if/max-posix-threads */
3938
3939/**
3940 * @brief This configuration option is an integer define.
3941 *
3942 * The value of this configuration option defines the maximum number of POSIX
3943 * API Threads that can be concurrently active.
3944 *
3945 * @par Default Value
3946 * The default value is 0.
3947 *
3948 * @par Value Constraints
3949 * @parblock
3950 * The value of this configuration option shall satisfy all of the following
3951 * constraints:
3952 *
3953 * * It shall be greater than or equal to zero.
3954 *
3955 * * It shall be less than or equal to 65535.
3956 *
3957 * * It shall be less than or equal to a BSP-specific and application-specific
3958 *   value which depends on the size of the memory available to the
3959 *   application.
3960 *
3961 * * It shall be small enough so that the task stack space calculation carried
3962 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
3963 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3964 * @endparblock
3965 *
3966 * @par Notes
3967 * @parblock
3968 * This object class can be configured in unlimited allocation mode, see <a
3969 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3970 * Objects</a>.
3971 *
3972 * This calculations for the required memory in the RTEMS Workspace for threads
3973 * assume that each thread has a minimum stack size and has floating point
3974 * support enabled.  The configuration option #CONFIGURE_EXTRA_TASK_STACKS is
3975 * used to specify thread stack requirements **above** the minimum size
3976 * required.
3977 *
3978 * The maximum number of Classic API Tasks is specified by
3979 * #CONFIGURE_MAXIMUM_TASKS.
3980 *
3981 * All POSIX threads have floating point enabled.
3982 * @endparblock
3983 */
3984#define CONFIGURE_MAXIMUM_POSIX_THREADS
3985
3986/* Generated from spec:/acfg/if/max-posix-timers */
3987
3988/**
3989 * @brief This configuration option is an integer define.
3990 *
3991 * The value of this configuration option defines the maximum number of POSIX
3992 * API Timers that can be concurrently active.
3993 *
3994 * @par Default Value
3995 * The default value is 0.
3996 *
3997 * @par Value Constraints
3998 * @parblock
3999 * The value of this configuration option shall satisfy all of the following
4000 * constraints:
4001 *
4002 * * It shall be greater than or equal to zero.
4003 *
4004 * * It shall be less than or equal to 65535.
4005 *
4006 * * It shall be less than or equal to a BSP-specific and application-specific
4007 *   value which depends on the size of the memory available to the
4008 *   application.
4009 *
4010 * * It may be defined through rtems_resource_unlimited() the enable unlimited
4011 *   objects for the object class, if the value passed to
4012 *   rtems_resource_unlimited() satisfies all other constraints of the
4013 *   configuration option.
4014 *
4015 * * It shall be zero if the POSIX API is not enabled (e.g. RTEMS was built
4016 *   without the ``RTEMS_POSIX_API = True`` build configuration option).
4017 *   Otherwise a compile time error in the configuration file will occur.
4018 * @endparblock
4019 *
4020 * @par Notes
4021 * @parblock
4022 * This object class can be configured in unlimited allocation mode, see <a
4023 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
4024 * Objects</a>.
4025 *
4026 * Timers are only available if RTEMS was built with the ``--enable-posix``
4027 * build configuration option.
4028 * @endparblock
4029 */
4030#define CONFIGURE_MAXIMUM_POSIX_TIMERS
4031
4032/* Generated from spec:/acfg/if/min-posix-thread-stack-size */
4033
4034/**
4035 * @brief This configuration option is an integer define.
4036 *
4037 * The value of this configuration option defines the minimum stack size in
4038 * bytes for every POSIX thread in the system.
4039 *
4040 * @par Default Value
4041 * The default value is two times the value of
4042 * #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
4043 *
4044 * @par Value Constraints
4045 * @parblock
4046 * The value of this configuration option shall satisfy all of the following
4047 * constraints:
4048 *
4049 * * It shall be small enough so that the task stack space calculation carried
4050 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
4051 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
4052 *
4053 * * It shall be greater than or equal to a BSP-specific and
4054 *   application-specific minimum value.
4055 * @endparblock
4056 */
4057#define CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
4058
4059/** @} */
4060
4061/* Generated from spec:/acfg/if/group-posixinit */
4062
4063/**
4064 * @defgroup RTEMSApplConfigPOSIXInitializationThreadConfiguration \
4065 *   POSIX Initialization Thread Configuration
4066 *
4067 * @ingroup RTEMSApplConfig
4068 *
4069 * This section describes configuration options related to the POSIX
4070 * initialization thread.
4071 *
4072 * @{
4073 */
4074
4075/* Generated from spec:/acfg/if/posix-init-thread-entry-point */
4076
4077/**
4078 * @brief This configuration option is an initializer define.
4079 *
4080 * The value of this configuration option initializes the entry point of the
4081 * POSIX API initialization thread.
4082 *
4083 * @par Default Value
4084 * The default value is ``POSIX_Init``.
4085 *
4086 * @par Value Constraints
4087 * The value of this configuration option shall be defined to a valid function
4088 * pointer of the type ``void *( *entry_point )( void * )``.
4089 *
4090 * @par Notes
4091 * The application shall provide the function referenced by this configuration
4092 * option.
4093 */
4094#define CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT
4095
4096/* Generated from spec:/acfg/if/posix-init-thread-stack-size */
4097
4098/**
4099 * @brief This configuration option is an integer define.
4100 *
4101 * The value of this configuration option defines the thread stack size of the
4102 * POSIX API initialization thread.
4103 *
4104 * @par Default Value
4105 * The default value is #CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE.
4106 *
4107 * @par Value Constraints
4108 * @parblock
4109 * The value of this configuration option shall satisfy all of the following
4110 * constraints:
4111 *
4112 * * It shall be greater than or equal to #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
4113 *
4114 * * It shall be small enough so that the task stack space calculation carried
4115 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
4116 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
4117 * @endparblock
4118 */
4119#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
4120
4121/* Generated from spec:/acfg/if/posix-init-thread-table */
4122
4123/**
4124 * @brief This configuration option is a boolean feature define.
4125 *
4126 * In case this configuration option is defined, then exactly one POSIX
4127 * initialization thread is configured.
4128 *
4129 * @par Default Configuration
4130 * If this configuration option is undefined, then the described feature is not
4131 * enabled.
4132 *
4133 * @par Notes
4134 * @parblock
4135 * The application shall define exactly one of the following configuration
4136 * options
4137 *
4138 * * #CONFIGURE_RTEMS_INIT_TASKS_TABLE,
4139 *
4140 * * ``CONFIGURE_POSIX_INIT_THREAD_TABLE``, or
4141 *
4142 * * #CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
4143 *
4144 * otherwise a compile time error in the configuration file will occur.
4145 * @endparblock
4146 */
4147#define CONFIGURE_POSIX_INIT_THREAD_TABLE
4148
4149/** @} */
4150
4151/* Generated from spec:/acfg/if/group-schedgeneral */
4152
4153/**
4154 * @defgroup RTEMSApplConfigGeneralSchedulerConfiguration \
4155 *   General Scheduler Configuration
4156 *
4157 * @ingroup RTEMSApplConfig
4158 *
4159 * This section describes configuration options related to selecting a
4160 * scheduling algorithm for an application.  A scheduler configuration is
4161 * optional and only necessary in very specific circumstances.  A normal
4162 * application configuration does not need any of the configuration options
4163 * described in this section.
4164 *
4165 * By default, the <a
4166 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-scheduler>Deterministic
4167 * Priority Scheduler</a> algorithm is used in uniprocessor configurations.  In
4168 * case SMP is enabled and the configured maximum processors
4169 * (#CONFIGURE_MAXIMUM_PROCESSORS) is greater than one, then the <a
4170 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#earliest-deadline-first-smp-scheduler>Earliest
4171 * Deadline First SMP Scheduler</a> is selected as the default scheduler
4172 * algorithm.
4173 *
4174 * For the schedulers provided by RTEMS (see <a
4175 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html>Scheduling
4176 * Concepts</a>), the configuration is straightforward.  All that is required
4177 * is to define the configuration option which specifies which scheduler you
4178 * want for in your application.
4179 *
4180 * The pluggable scheduler interface also enables the user to provide their own
4181 * scheduling algorithm.  If you choose to do this, you must define multiple
4182 * configuration option.
4183 *
4184 * @{
4185 */
4186
4187/* Generated from spec:/acfg/if/cbs-max-servers */
4188
4189/**
4190 * @brief This configuration option is an integer define.
4191 *
4192 * The value of this configuration option defines the maximum number Constant
4193 * Bandwidth Servers that can be concurrently active.
4194 *
4195 * @par Default Value
4196 * The default value is #CONFIGURE_MAXIMUM_TASKS.
4197 *
4198 * @par Value Constraints
4199 * @parblock
4200 * The value of this configuration option shall satisfy all of the following
4201 * constraints:
4202 *
4203 * * It shall be greater than or equal to zero.
4204 *
4205 * * It shall be less than or equal to <a
4206 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
4207 *
4208 * * It shall be less than or equal to a BSP-specific and application-specific
4209 *   value which depends on the size of the memory available to the
4210 *   application.
4211 * @endparblock
4212 *
4213 * @par Notes
4214 * This configuration option is only evaluated if the configuration option
4215 * #CONFIGURE_SCHEDULER_CBS is defined.
4216 */
4217#define CONFIGURE_CBS_MAXIMUM_SERVERS
4218
4219/* Generated from spec:/acfg/if/max-priority */
4220
4221/**
4222 * @brief This configuration option is an integer define.
4223 *
4224 * For the following schedulers
4225 *
4226 * * <a
4227 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-scheduler>Deterministic
4228 *   Priority Scheduler</a>, which is the default in uniprocessor
4229 *   configurations and can be configured through the
4230 *   #CONFIGURE_SCHEDULER_PRIORITY configuration option,
4231 *
4232 * * <a
4233 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-smp-scheduler>Deterministic
4234 *   Priority SMP Scheduler</a> which can be configured through the
4235 *   #CONFIGURE_SCHEDULER_PRIORITY_SMP configuration option, and
4236 *
4237 * * <a
4238 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#arbitrary-processor-affinity-priority-smp-scheduler>Arbitrary
4239 *   Processor Affinity Priority SMP Scheduler</a> which can be configured
4240 *   through the #CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP configuration
4241 *   option
4242 *
4243 * this configuration option specifies the maximum numeric priority of any task
4244 * for these schedulers and one less that the number of priority levels for
4245 * these schedulers.  For all other schedulers provided by RTEMS, this
4246 * configuration option has no effect.
4247 *
4248 * @par Default Value
4249 * The default value is 255.
4250 *
4251 * @par Value Constraints
4252 * The value of this configuration option shall be equal to 3, 7, 31, 63, 127,
4253 * or 255.
4254 *
4255 * @par Notes
4256 * @parblock
4257 * The numerically greatest priority is the logically lowest priority in the
4258 * system and will thus be used by the IDLE task.
4259 *
4260 * Priority zero is reserved for internal use by RTEMS and is not available to
4261 * applications.
4262 *
4263 * Reducing the number of priorities through this configuration option reduces
4264 * the amount of memory allocated by the schedulers listed above.  These
4265 * schedulers use a chain control structure per priority and this structure
4266 * consists of three pointers.  On a 32-bit architecture, the allocated memory
4267 * is 12 bytes * (``CONFIGURE_MAXIMUM_PRIORITY`` + 1), e.g. 3072 bytes for 256
4268 * priority levels (default), 48 bytes for 4 priority levels
4269 * (``CONFIGURE_MAXIMUM_PRIORITY == 3``).
4270 *
4271 * The default value is 255, because RTEMS shall support 256 priority levels to
4272 * be compliant with various standards.  These priorities range from 0 to 255.
4273 * @endparblock
4274 */
4275#define CONFIGURE_MAXIMUM_PRIORITY
4276
4277/* Generated from spec:/acfg/if/scheduler-assignments */
4278
4279/**
4280 * @brief This configuration option is an initializer define.
4281 *
4282 * The value of this configuration option is used to initialize the initial
4283 * scheduler to processor assignments.
4284 *
4285 * @par Default Value
4286 * The default value of this configuration option is computed so that the
4287 * default scheduler is assigned to each configured processor (up to 32).
4288 *
4289 * @par Value Constraints
4290 * @parblock
4291 * The value of this configuration option shall satisfy all of the following
4292 * constraints:
4293 *
4294 * * It shall be a list of the following macros:
4295 *
4296 *   * ``RTEMS_SCHEDULER_ASSIGN( scheduler_index, attributes )``
4297 *
4298 *   * ``RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER``
4299 *
4300 *   The ``scheduler_index`` macro parameter shall be a valid index of the
4301 *   scheduler table defined by the #CONFIGURE_SCHEDULER_TABLE_ENTRIES
4302 *   configuration option.
4303 *
4304 *   The ``attributes`` macro parameter shall be set to exactly one of the
4305 *   following constants:
4306 *
4307 *   * ``RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY``
4308 *
4309 *   * ``RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL``
4310 *
4311 * * The value of the configuration option shall be a list of exactly
4312 *   #CONFIGURE_MAXIMUM_PROCESSORS elements.
4313 * @endparblock
4314 *
4315 * @par Notes
4316 * @parblock
4317 * Where the system was built with SMP support enabled, this configuration
4318 * option is evaluated, otherwise it is ignored.
4319 *
4320 * This is an advanced configuration option, see <a
4321 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4322 * Scheduler Configuration</a>.
4323 * @endparblock
4324 */
4325#define CONFIGURE_SCHEDULER_ASSIGNMENTS
4326
4327/* Generated from spec:/acfg/if/scheduler-cbs */
4328
4329/**
4330 * @brief This configuration option is a boolean feature define.
4331 *
4332 * In case this configuration option is defined, then the <a
4333 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#constant-bandwidth-server-scheduling-cbs>Constant
4334 * Bandwidth Server Scheduling (CBS)</a> algorithm is made available to the
4335 * application.
4336 *
4337 * @par Default Configuration
4338 * If this configuration option is undefined, then the described feature is not
4339 * enabled.
4340 *
4341 * @par Notes
4342 * @parblock
4343 * This scheduler configuration option is an advanced configuration option.
4344 * Think twice before you use it.
4345 *
4346 * In case no explicit <a
4347 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4348 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4349 * exactly one processor.
4350 * @endparblock
4351 */
4352#define CONFIGURE_SCHEDULER_CBS
4353
4354/* Generated from spec:/acfg/if/scheduler-edf */
4355
4356/**
4357 * @brief This configuration option is a boolean feature define.
4358 *
4359 * In case this configuration option is defined, then the <a
4360 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#earliest-deadline-first-scheduler>Earliest
4361 * Deadline First Scheduler</a> algorithm is made available to the application.
4362 *
4363 * @par Default Configuration
4364 * If this configuration option is undefined, then the described feature is not
4365 * enabled.
4366 *
4367 * @par Notes
4368 * @parblock
4369 * This scheduler configuration option is an advanced configuration option.
4370 * Think twice before you use it.
4371 *
4372 * In case no explicit <a
4373 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4374 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4375 * exactly one processor.
4376 * @endparblock
4377 */
4378#define CONFIGURE_SCHEDULER_EDF
4379
4380/* Generated from spec:/acfg/if/scheduler-edf-smp */
4381
4382/**
4383 * @brief This configuration option is a boolean feature define.
4384 *
4385 * In case this configuration option is defined, then the <a
4386 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#earliest-deadline-first-smp-scheduler>Earliest
4387 * Deadline First SMP Scheduler</a> algorithm is made available to the
4388 * application.
4389 *
4390 * @par Default Configuration
4391 * If this configuration option is undefined, then the described feature is not
4392 * enabled.
4393 *
4394 * @par Notes
4395 * @parblock
4396 * This scheduler configuration option is an advanced configuration option.
4397 * Think twice before you use it.
4398 *
4399 * This scheduler algorithm is only available when RTEMS is built with SMP
4400 * support enabled.
4401 *
4402 * In case no explicit <a
4403 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4404 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4405 * up to 32 processors.
4406 *
4407 * This scheduler algorithm is the default in SMP configurations if
4408 * #CONFIGURE_MAXIMUM_PROCESSORS is greater than one.
4409 * @endparblock
4410 */
4411#define CONFIGURE_SCHEDULER_EDF_SMP
4412
4413/* Generated from spec:/acfg/if/scheduler-name */
4414
4415/**
4416 * @brief This configuration option is an integer define.
4417 *
4418 * The value of this configuration option defines the name of the default
4419 * scheduler.
4420 *
4421 * @par Default Value
4422 * @parblock
4423 * The default value is
4424 *
4425 * * ``"MEDF"`` for the <a
4426 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#earliest-deadline-first-smp-scheduler>Earliest
4427 *   Deadline First SMP Scheduler</a>,
4428 *
4429 * * ``"MPA "`` for the <a
4430 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#arbitrary-processor-affinity-priority-smp-scheduler>Arbitrary
4431 *   Processor Affinity Priority SMP Scheduler</a>,
4432 *
4433 * * ``"MPD "`` for the <a
4434 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-smp-scheduler>Deterministic
4435 *   Priority SMP Scheduler</a>,
4436 *
4437 * * ``"MPS "`` for the <a
4438 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#simple-priority-smp-scheduler>Simple
4439 *   Priority SMP Scheduler</a>,
4440 *
4441 * * ``"UCBS"`` for the <a
4442 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#constant-bandwidth-server-scheduling-cbs>Constant
4443 *   Bandwidth Server Scheduling (CBS)</a>,
4444 *
4445 * * ``"UEDF"`` for the <a
4446 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#earliest-deadline-first-scheduler>Earliest
4447 *   Deadline First Scheduler</a>,
4448 *
4449 * * ``"UPD "`` for the <a
4450 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-scheduler>Deterministic
4451 *   Priority Scheduler</a>, and
4452 *
4453 * * ``"UPS "`` for the <a
4454 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#simple-priority-scheduler>Simple
4455 *   Priority Scheduler</a>.
4456 * @endparblock
4457 *
4458 * @par Value Constraints
4459 * The value of this configuration option shall be convertible to an integer of
4460 * type ::rtems_name.
4461 *
4462 * @par Notes
4463 * @parblock
4464 * This scheduler configuration option is an advanced configuration option.
4465 * Think twice before you use it.
4466 *
4467 * Schedulers can be identified via rtems_scheduler_ident().
4468 *
4469 * Use rtems_build_name() to define the scheduler name.
4470 * @endparblock
4471 */
4472#define CONFIGURE_SCHEDULER_NAME
4473
4474/* Generated from spec:/acfg/if/scheduler-priority */
4475
4476/**
4477 * @brief This configuration option is a boolean feature define.
4478 *
4479 * In case this configuration option is defined, then the <a
4480 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-scheduler>Deterministic
4481 * Priority Scheduler</a> algorithm is made available to the application.
4482 *
4483 * @par Default Configuration
4484 * If this configuration option is undefined, then the described feature is not
4485 * enabled.
4486 *
4487 * @par Notes
4488 * @parblock
4489 * This scheduler configuration option is an advanced configuration option.
4490 * Think twice before you use it.
4491 *
4492 * In case no explicit <a
4493 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4494 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4495 * exactly one processor.
4496 *
4497 * This scheduler algorithm is the default when #CONFIGURE_MAXIMUM_PROCESSORS
4498 * is exactly one.
4499 *
4500 * The memory allocated for this scheduler depends on the
4501 * #CONFIGURE_MAXIMUM_PRIORITY configuration option.
4502 * @endparblock
4503 */
4504#define CONFIGURE_SCHEDULER_PRIORITY
4505
4506/* Generated from spec:/acfg/if/scheduler-priority-affinity-smp */
4507
4508/**
4509 * @brief This configuration option is a boolean feature define.
4510 *
4511 * In case this configuration option is defined, then the <a
4512 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#arbitrary-processor-affinity-priority-smp-scheduler>Arbitrary
4513 * Processor Affinity Priority SMP Scheduler</a> algorithm is made available to
4514 * the application.
4515 *
4516 * @par Default Configuration
4517 * If this configuration option is undefined, then the described feature is not
4518 * enabled.
4519 *
4520 * @par Notes
4521 * @parblock
4522 * This scheduler configuration option is an advanced configuration option.
4523 * Think twice before you use it.
4524 *
4525 * This scheduler algorithm is only available when RTEMS is built with SMP
4526 * support enabled.
4527 *
4528 * In case no explicit <a
4529 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4530 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4531 * up to 32 processors.
4532 *
4533 * The memory allocated for this scheduler depends on the
4534 * #CONFIGURE_MAXIMUM_PRIORITY configuration option.
4535 * @endparblock
4536 */
4537#define CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP
4538
4539/* Generated from spec:/acfg/if/scheduler-priority-smp */
4540
4541/**
4542 * @brief This configuration option is a boolean feature define.
4543 *
4544 * In case this configuration option is defined, then the <a
4545 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-smp-scheduler>Deterministic
4546 * Priority SMP Scheduler</a> algorithm is made available to the application.
4547 *
4548 * @par Default Configuration
4549 * If this configuration option is undefined, then the described feature is not
4550 * enabled.
4551 *
4552 * @par Notes
4553 * @parblock
4554 * This scheduler configuration option is an advanced configuration option.
4555 * Think twice before you use it.
4556 *
4557 * This scheduler algorithm is only available when RTEMS is built with SMP
4558 * support enabled.
4559 *
4560 * In case no explicit <a
4561 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4562 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4563 * up to 32 processors.
4564 *
4565 * The memory allocated for this scheduler depends on the
4566 * #CONFIGURE_MAXIMUM_PRIORITY configuration option.
4567 * @endparblock
4568 */
4569#define CONFIGURE_SCHEDULER_PRIORITY_SMP
4570
4571/* Generated from spec:/acfg/if/scheduler-simple */
4572
4573/**
4574 * @brief This configuration option is a boolean feature define.
4575 *
4576 * In case this configuration option is defined, then the <a
4577 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#simple-priority-scheduler>Simple
4578 * Priority Scheduler</a> algorithm is made available to the application.
4579 *
4580 * @par Default Configuration
4581 * If this configuration option is undefined, then the described feature is not
4582 * enabled.
4583 *
4584 * @par Notes
4585 * @parblock
4586 * This scheduler configuration option is an advanced configuration option.
4587 * Think twice before you use it.
4588 *
4589 * In case no explicit <a
4590 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4591 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4592 * exactly one processor.
4593 * @endparblock
4594 */
4595#define CONFIGURE_SCHEDULER_SIMPLE
4596
4597/* Generated from spec:/acfg/if/scheduler-simple-smp */
4598
4599/**
4600 * @brief This configuration option is a boolean feature define.
4601 *
4602 * In case this configuration option is defined, then the <a
4603 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#simple-priority-smp-scheduler>Simple
4604 * Priority SMP Scheduler</a> algorithm is made available to the application.
4605 *
4606 * @par Default Configuration
4607 * If this configuration option is undefined, then the described feature is not
4608 * enabled.
4609 *
4610 * @par Notes
4611 * @parblock
4612 * This scheduler configuration option is an advanced configuration option.
4613 * Think twice before you use it.
4614 *
4615 * This scheduler algorithm is only available when RTEMS is built with SMP
4616 * support enabled.
4617 *
4618 * In case no explicit <a
4619 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4620 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4621 * up to 32 processors.
4622 * @endparblock
4623 */
4624#define CONFIGURE_SCHEDULER_SIMPLE_SMP
4625
4626/* Generated from spec:/acfg/if/scheduler-strong-apa */
4627
4628/**
4629 * @brief This configuration option is a boolean feature define.
4630 *
4631 * In case this configuration option is defined, then the Strong APA algorithm
4632 * is made available to the application.
4633 *
4634 * @par Default Configuration
4635 * If this configuration option is undefined, then the described feature is not
4636 * enabled.
4637 *
4638 * @par Notes
4639 * @parblock
4640 * This scheduler configuration option is an advanced configuration option.
4641 * Think twice before you use it.
4642 *
4643 * This scheduler algorithm is only available when RTEMS is built with SMP
4644 * support enabled.
4645 *
4646 * This scheduler algorithm is not correctly implemented.  Do not use it.
4647 * @endparblock
4648 */
4649#define CONFIGURE_SCHEDULER_STRONG_APA
4650
4651/* Generated from spec:/acfg/if/scheduler-table-entries */
4652
4653/**
4654 * @brief This configuration option is an initializer define.
4655 *
4656 * The value of this configuration option is used to initialize the table of
4657 * configured schedulers.
4658 *
4659 * @par Default Value
4660 * The default value of this configuration option is the definition of exactly
4661 * one table entry for the configured scheduler.
4662 *
4663 * @par Constraints
4664 * @parblock
4665 * The following constraints apply to this configuration option:
4666 *
4667 * * The value of the configuration option shall be a list of the following
4668 *   macros:
4669 *
4670 *   * ``RTEMS_SCHEDULER_TABLE_CBS( name, obj_name )``
4671 *
4672 *   * ``RTEMS_SCHEDULER_TABLE_EDF( name, obj_name )``
4673 *
4674 *   * ``RTEMS_SCHEDULER_TABLE_EDF_SMP( name, obj_name )``
4675 *
4676 *   * ``RTEMS_SCHEDULER_TABLE_PRIORITY_AFFINITY_SMP( name, obj_name )``
4677 *
4678 *   * ``RTEMS_SCHEDULER_TABLE_PRIORITY( name, obj_name )``
4679 *
4680 *   * ``RTEMS_SCHEDULER_TABLE_PRIORITY_SMP( name, obj_name )``
4681 *
4682 *   * ``RTEMS_SCHEDULER_TABLE_SIMPLE( name, obj_name )``
4683 *
4684 *   * ``RTEMS_SCHEDULER_TABLE_SIMPLE_SMP( name, obj_name )``
4685 *
4686 *   * ``RTEMS_SCHEDULER_TABLE_STRONG_APA( name, obj_name )``
4687 *
4688 *   The ``name`` macro parameter shall be the name associated with the
4689 *   scheduler data structures, see <a
4690 *   href="https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html">Clustered
4691 *   Scheduler Configuration</a>.
4692 *
4693 *   The ``obj_name`` macro parameter shall be the scheduler object name.  It
4694 *   is recommended to define the scheduler object name through
4695 *   rtems_build_name().
4696 *
4697 * * Where the system was build with SMP support enabled, the table shall have
4698 *   one or more entries, otherwise it shall have exactly one entry.
4699 * @endparblock
4700 *
4701 * @par Notes
4702 * @parblock
4703 * Schedulers registered in the scheduler table by this configuration option
4704 * are available to the application.  The scheduler table entry index defines
4705 * the index of the scheduler.
4706 *
4707 * This is an advanced configuration option, see <a
4708 * href="https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html">Clustered
4709 * Scheduler Configuration</a>.
4710 * @endparblock
4711 */
4712#define CONFIGURE_SCHEDULER_TABLE_ENTRIES
4713
4714/* Generated from spec:/acfg/if/scheduler-user */
4715
4716/**
4717 * @brief This configuration option is a boolean feature define.
4718 *
4719 * In case this configuration option is defined, then the user shall provide a
4720 * scheduler algorithm to the application.
4721 *
4722 * @par Default Configuration
4723 * If this configuration option is undefined, then the described feature is not
4724 * enabled.
4725 *
4726 * @par Notes
4727 * @parblock
4728 * This scheduler configuration option is an advanced configuration option.
4729 * Think twice before you use it.
4730 *
4731 * RTEMS allows the application to provide its own task/thread scheduling
4732 * algorithm. In order to do this, one shall define
4733 * ``CONFIGURE_SCHEDULER_USER`` to indicate the application provides its own
4734 * scheduling algorithm. If ``CONFIGURE_SCHEDULER_USER`` is defined then the
4735 * following additional macros shall be defined:
4736 *
4737 * * ``CONFIGURE_SCHEDULER`` shall be defined to a static definition of the
4738 *   scheduler data structures of the user scheduler.
4739 *
4740 * * ``CONFIGURE_SCHEDULER_TABLE_ENTRIES`` shall be defined to a scheduler
4741 *   table entry initializer for the user scheduler.
4742 *
4743 * * ``CONFIGURE_SCHEDULER_USER_PER_THREAD`` shall be defined to the type of
4744 *   the per-thread information of the user scheduler.
4745 *
4746 * At this time, the mechanics and requirements for writing a new scheduler are
4747 * evolving and not fully documented.  It is recommended that you look at the
4748 * existing Deterministic Priority Scheduler in
4749 * ``cpukit/score/src/schedulerpriority*.c`` for guidance.  For guidance on the
4750 * configuration macros, please examine ``cpukit/sapi/include/confdefs.h`` for
4751 * how these are defined for the Deterministic Priority Scheduler.
4752 * @endparblock
4753 */
4754#define CONFIGURE_SCHEDULER_USER
4755
4756/** @} */
4757
4758/* Generated from spec:/acfg/if/group-stackalloc */
4759
4760/**
4761 * @defgroup RTEMSApplConfigTaskStackAllocatorConfiguration \
4762 *   Task Stack Allocator Configuration
4763 *
4764 * @ingroup RTEMSApplConfig
4765 *
4766 * This section describes configuration options related to the task stack
4767 * allocator.  RTEMS allows the application or BSP to define its own allocation
4768 * and deallocation methods for task stacks. This can be used to place task
4769 * stacks in special areas of memory or to utilize a Memory Management Unit so
4770 * that stack overflows are detected in hardware.
4771 *
4772 * @{
4773 */
4774
4775/* Generated from spec:/acfg/if/task-stack-allocator */
4776
4777/**
4778 * @brief This configuration option is an initializer define.
4779 *
4780 * The value of this configuration option initializes the stack allocator
4781 * allocate handler.
4782 *
4783 * @par Default Value
4784 * The default value is ``_Workspace_Allocate``, which indicates that task
4785 * stacks will be allocated from the RTEMS Workspace.
4786 *
4787 * @par Value Constraints
4788 * The value of this configuration option shall be defined to a valid function
4789 * pointer of the type ``void *( *allocate )( size_t )``.
4790 *
4791 * @par Notes
4792 * @parblock
4793 * A correctly configured system shall configure the following to be
4794 * consistent:
4795 *
4796 * * #CONFIGURE_TASK_STACK_ALLOCATOR_INIT
4797 *
4798 * * ``CONFIGURE_TASK_STACK_ALLOCATOR``
4799 *
4800 * * #CONFIGURE_TASK_STACK_DEALLOCATOR
4801 * @endparblock
4802 */
4803#define CONFIGURE_TASK_STACK_ALLOCATOR
4804
4805/* Generated from spec:/acfg/if/task-stack-no-workspace */
4806
4807/**
4808 * @brief This configuration option is a boolean feature define.
4809 *
4810 * In case this configuration option is defined, then the system is informed
4811 * that the task stack allocator does not use the RTEMS Workspace.
4812 *
4813 * @par Default Configuration
4814 * If this configuration option is undefined, then the described feature is not
4815 * enabled.
4816 *
4817 * @par Notes
4818 * This configuration option may be used if a custom task stack allocator is
4819 * configured, see #CONFIGURE_TASK_STACK_ALLOCATOR.
4820 */
4821#define CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE
4822
4823/* Generated from spec:/acfg/if/task-stack-allocator-for-idle */
4824
4825/**
4826 * @brief This configuration option is an initializer define.
4827 *
4828 * The value of this configuration option is the address for the stack
4829 * allocator allocate handler used to allocate the task stack of each IDLE
4830 * task.
4831 *
4832 * @par Default Value
4833 * The default value is ``_Stack_Allocator_allocate_for_idle_default``, which
4834 * indicates that IDLE task stacks will be allocated from an area statically
4835 * allocated by ``<rtems/confdefs.h>``.
4836 *
4837 * @par Value Constraints
4838 * The value of this configuration option shall be defined to a valid function
4839 * pointer of the type ``void *( *allocate )( uint32_t, size_t )``.
4840 *
4841 * @par Notes
4842 * This configuration option is independent of the other thread stack allocator
4843 * configuration options.  It is assumed that any memory allocated for the
4844 * stack of an IDLE task will not be from the RTEMS Workspace or the memory
4845 * statically allocated by default.
4846 */
4847#define CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE
4848
4849/* Generated from spec:/acfg/if/task-stack-allocator-init */
4850
4851/**
4852 * @brief This configuration option is an initializer define.
4853 *
4854 * The value of this configuration option initializes the stack allocator
4855 * initialization handler.
4856 *
4857 * @par Default Value
4858 * The default value is <a
4859 * href="https://en.cppreference.com/w/c/types/NULL">NULL</a>.
4860 *
4861 * @par Value Constraints
4862 * The value of this configuration option shall be defined to a valid function
4863 * pointer of the type ``void ( *initialize )( size_t )`` or to <a
4864 * href="https://en.cppreference.com/w/c/types/NULL">NULL</a>.
4865 *
4866 * @par Notes
4867 * @parblock
4868 * A correctly configured system shall configure the following to be
4869 * consistent:
4870 *
4871 * * ``CONFIGURE_TASK_STACK_ALLOCATOR_INIT``
4872 *
4873 * * #CONFIGURE_TASK_STACK_ALLOCATOR
4874 *
4875 * * #CONFIGURE_TASK_STACK_DEALLOCATOR
4876 * @endparblock
4877 */
4878#define CONFIGURE_TASK_STACK_ALLOCATOR_INIT
4879
4880/* Generated from spec:/acfg/if/task-stack-deallocator */
4881
4882/**
4883 * @brief This configuration option is an initializer define.
4884 *
4885 * The value of this configuration option initializes the stack allocator
4886 * deallocate handler.
4887 *
4888 * @par Default Value
4889 * The default value is ``_Workspace_Free``, which indicates that task stacks
4890 * will be allocated from the RTEMS Workspace.
4891 *
4892 * @par Value Constraints
4893 * The value of this configuration option shall be defined to a valid function
4894 * pointer of the type ``void ( *deallocate )( void * )``.
4895 *
4896 * @par Notes
4897 * @parblock
4898 * A correctly configured system shall configure the following to be
4899 * consistent:
4900 *
4901 * * #CONFIGURE_TASK_STACK_ALLOCATOR_INIT
4902 *
4903 * * #CONFIGURE_TASK_STACK_ALLOCATOR
4904 *
4905 * * ``CONFIGURE_TASK_STACK_DEALLOCATOR``
4906 * @endparblock
4907 */
4908#define CONFIGURE_TASK_STACK_DEALLOCATOR
4909
4910/* Generated from spec:/acfg/if/task-stack-from-alloc */
4911
4912/**
4913 * @brief This configuration option is an initializer define.
4914 *
4915 * The value of this configuration option is used to calculate the task stack
4916 * space size.
4917 *
4918 * @par Default Value
4919 * The default value is a macro which supports the system heap allocator.
4920 *
4921 * @par Value Constraints
4922 * The value of this configuration option shall be defined to a macro which
4923 * accepts exactly one parameter and returns an unsigned integer.  The
4924 * parameter will be an allocation size and the macro shall return this size
4925 * plus the overhead of the allocator to manage an allocation request for this
4926 * size.
4927 *
4928 * @par Notes
4929 * This configuration option may be used if a custom task stack allocator is
4930 * configured, see #CONFIGURE_TASK_STACK_ALLOCATOR.
4931 */
4932#define CONFIGURE_TASK_STACK_FROM_ALLOCATOR
4933
4934/** @} */
Note: See TracBrowser for help on using the repository browser.