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

Last change on this file since 0906321 was 0906321, checked in by Sebastian Huber <sebastian.huber@…>, on 04/30/21 at 05:08:19

appl-config: Add missing "the"

  • Property mode set to 100644
File size: 150.7 KB
Line 
1/* SPDX-License-Identifier: BSD-2-Clause */
2
3/*
4 * Copyright (C) 2019, 2021 embedded brains GmbH (http://www.embedded-brains.de)
5 * Copyright (C) 2010 Gedare Bloom
6 * Copyright (C) 1988, 2008 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-thread-local-storage-size */
922
923/**
924 * @brief This configuration option is an integer define.
925 *
926 * If the value of this configuration option is greater than zero, then it
927 * defines the maximum thread-local storage size, otherwise the thread-local
928 * storage size is defined by the linker depending on the thread-local storage
929 * objects used by the application in the statically-linked executable.
930 *
931 * @par Default Value
932 * The default value is 0.
933 *
934 * @par Value Constraints
935 * @parblock
936 * The value of this configuration option shall satisfy all of the following
937 * constraints:
938 *
939 * * It shall be greater than or equal to zero.
940 *
941 * * It shall be less than or equal to <a
942 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
943 *
944 * * It shall be an integral multiple of #RTEMS_TASK_STORAGE_ALIGNMENT.
945 * @endparblock
946 *
947 * @par Notes
948 * @parblock
949 * This configuration option can be used to reserve space for the dynamic
950 * linking of modules with thread-local storage objects.
951 *
952 * If the thread-local storage size defined by the thread-local storage objects
953 * used by the application in the statically-linked executable is greater than
954 * a non-zero value of this configuration option, then a fatal error will occur
955 * during system initialization.
956 *
957 * Use RTEMS_ALIGN_UP() and #RTEMS_TASK_STORAGE_ALIGNMENT to adjust the size to
958 * meet the minimum alignment requirement of a thread-local storage area.
959 *
960 * The actual thread-local storage size is determined when the application
961 * executable is linked.  The ``rtems-exeinfo`` command line tool included in
962 * the RTEMS Tools can be used to obtain the thread-local storage size and
963 * alignment of an application executable.
964 * @endparblock
965 */
966#define CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE
967
968/* Generated from spec:/acfg/if/max-timers */
969
970/**
971 * @brief This configuration option is an integer define.
972 *
973 * The value of this configuration option defines the maximum number of Classic
974 * API Timers that can be concurrently active.
975 *
976 * @par Default Value
977 * The default value is 0.
978 *
979 * @par Value Constraints
980 * @parblock
981 * The value of this configuration option shall satisfy all of the following
982 * constraints:
983 *
984 * * It shall be greater than or equal to zero.
985 *
986 * * It shall be less than or equal to 65535.
987 *
988 * * It shall be less than or equal to a BSP-specific and application-specific
989 *   value which depends on the size of the memory available to the
990 *   application.
991 *
992 * * It may be defined through rtems_resource_unlimited() the enable unlimited
993 *   objects for the object class, if the value passed to
994 *   rtems_resource_unlimited() satisfies all other constraints of the
995 *   configuration option.
996 * @endparblock
997 *
998 * @par Notes
999 * This object class can be configured in unlimited allocation mode, see <a
1000 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
1001 * Objects</a>.
1002 */
1003#define CONFIGURE_MAXIMUM_TIMERS
1004
1005/* Generated from spec:/acfg/if/max-user-extensions */
1006
1007/**
1008 * @brief This configuration option is an integer define.
1009 *
1010 * The value of this configuration option defines the maximum number of Classic
1011 * API User Extensions that can be concurrently active.
1012 *
1013 * @par Default Value
1014 * The default value is 0.
1015 *
1016 * @par Value Constraints
1017 * @parblock
1018 * The value of this configuration option shall satisfy all of the following
1019 * constraints:
1020 *
1021 * * It shall be greater than or equal to zero.
1022 *
1023 * * It shall be less than or equal to 65535.
1024 *
1025 * * It shall be less than or equal to a BSP-specific and application-specific
1026 *   value which depends on the size of the memory available to the
1027 *   application.
1028 * @endparblock
1029 *
1030 * @par Notes
1031 * This object class cannot be configured in unlimited allocation mode.
1032 */
1033#define CONFIGURE_MAXIMUM_USER_EXTENSIONS
1034
1035/* Generated from spec:/acfg/if/min-tasks-with-user-provided-storage */
1036
1037/**
1038 * @brief This configuration option is an integer define.
1039 *
1040 * The value of this configuration option defines the minimum count of Classic
1041 * API Tasks which are constructed by rtems_task_construct().
1042 *
1043 * @par Default Value
1044 * The default value is 0.
1045 *
1046 * @par Value Constraints
1047 * @parblock
1048 * The value of this configuration option shall satisfy all of the following
1049 * constraints:
1050 *
1051 * * It shall be greater than or equal to zero.
1052 *
1053 * * It shall be less than or equal to #CONFIGURE_MAXIMUM_TASKS.
1054 * @endparblock
1055 *
1056 * @par Notes
1057 * By default, the calculation for the required memory in the RTEMS Workspace
1058 * for tasks assumes that all Classic API Tasks are created by
1059 * rtems_task_create().  This configuration option can be used to reduce the
1060 * required memory for the system-provided task storage areas since tasks
1061 * constructed by rtems_task_construct() use a user-provided task storage area.
1062 */
1063#define CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE
1064
1065/** @} */
1066
1067/* Generated from spec:/acfg/if/group-classicinit */
1068
1069/**
1070 * @defgroup RTEMSApplConfigClassicAPIInitializationTaskConfiguration \
1071 *   Classic API Initialization Task Configuration
1072 *
1073 * @ingroup RTEMSApplConfig
1074 *
1075 * This section describes configuration options related to the Classic API
1076 * initialization task.
1077 *
1078 * @{
1079 */
1080
1081/* Generated from spec:/acfg/if/init-task-arguments */
1082
1083/**
1084 * @brief This configuration option is an integer define.
1085 *
1086 * The value of this configuration option defines task argument of the Classic
1087 * API initialization task.
1088 *
1089 * @par Default Value
1090 * The default value is 0.
1091 *
1092 * @par Value Constraints
1093 * The value of this configuration option shall be convertible to an integer of
1094 * type ::rtems_task_argument.
1095 */
1096#define CONFIGURE_INIT_TASK_ARGUMENTS
1097
1098/* Generated from spec:/acfg/if/init-task-attributes */
1099
1100/**
1101 * @brief This configuration option is an integer define.
1102 *
1103 * The value of this configuration option defines the task attributes of the
1104 * Classic API initialization task.
1105 *
1106 * @par Default Value
1107 * The default value is #RTEMS_DEFAULT_ATTRIBUTES.
1108 *
1109 * @par Value Constraints
1110 * The value of this configuration option shall be a valid task attribute set.
1111 */
1112#define CONFIGURE_INIT_TASK_ATTRIBUTES
1113
1114/* Generated from spec:/acfg/if/init-task-construct-storage-size */
1115
1116/**
1117 * @brief This configuration option is an integer define.
1118 *
1119 * The value of this configuration option defines the task storage size of the
1120 * Classic API initialization task.
1121 *
1122 * @par Default Value
1123 * This configuration option has no default value.  If it is not specified,
1124 * then the Classic API initialization task will be created with the stack size
1125 * defined by the #CONFIGURE_INIT_TASK_STACK_SIZE configuration option.
1126 *
1127 * @par Value Constraints
1128 * @parblock
1129 * The value of this configuration option shall satisfy all of the following
1130 * constraints:
1131 *
1132 * * It shall be greater than or equal to #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
1133 *
1134 * * It shall be defined using RTEMS_TASK_STORAGE_SIZE().
1135 * @endparblock
1136 *
1137 * @par Notes
1138 * @parblock
1139 * If this configuration option is specified, then
1140 *
1141 * * a task storage area of the specified size is statically allocated by
1142 *   ``<rtems/confdefs.h>`` for the Classic API initialization task,
1143 *
1144 * * the Classic API initialization task is constructed by
1145 *   rtems_task_construct() instead of using rtems_task_create(),
1146 *
1147 * * the maximum thread-local storage size defined by
1148 *   #CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE is used for the Classic API
1149 *   initialization task,
1150 *
1151 * * the Classic API initialization task should be accounted for in
1152 *   #CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE, and
1153 *
1154 * * the task storage area used for the Classic API initialization task is not
1155 *   reclaimed by the system if the task is deleted.
1156 *
1157 * The
1158 *
1159 * * #CONFIGURE_INIT_TASK_STACK_SIZE and
1160 *
1161 * * ``CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE``
1162 *
1163 * configuration options are mutually exclusive.
1164 * @endparblock
1165 */
1166#define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE
1167
1168/* Generated from spec:/acfg/if/init-task-entrypoint */
1169
1170/**
1171 * @brief This configuration option is an initializer define.
1172 *
1173 * The value of this configuration option initializes the entry point of the
1174 * Classic API initialization task.
1175 *
1176 * @par Default Value
1177 * The default value is ``Init``.
1178 *
1179 * @par Value Constraints
1180 * The value of this configuration option shall be defined to a valid function
1181 * pointer of the type ``void ( *entry_point )( rtems_task_argument )``.
1182 *
1183 * @par Notes
1184 * The application shall provide the function referenced by this configuration
1185 * option.
1186 */
1187#define CONFIGURE_INIT_TASK_ENTRY_POINT
1188
1189/* Generated from spec:/acfg/if/init-task-initial-modes */
1190
1191/**
1192 * @brief This configuration option is an integer define.
1193 *
1194 * The value of this configuration option defines the initial execution mode of
1195 * the Classic API initialization task.
1196 *
1197 * @par Default Value
1198 * In SMP  configurations, the default value is #RTEMS_DEFAULT_MODES otherwise
1199 * the default value is #RTEMS_NO_PREEMPT.
1200 *
1201 * @par Value Constraints
1202 * The value of this configuration option shall be a valid task mode set.
1203 */
1204#define CONFIGURE_INIT_TASK_INITIAL_MODES
1205
1206/* Generated from spec:/acfg/if/init-task-name */
1207
1208/**
1209 * @brief This configuration option is an integer define.
1210 *
1211 * The value of this configuration option defines the name of the Classic API
1212 * initialization task.
1213 *
1214 * @par Default Value
1215 * The default value is ``rtems_build_name( 'U', 'I', '1', ' ' )``.
1216 *
1217 * @par Value Constraints
1218 * The value of this configuration option shall be convertible to an integer of
1219 * type ::rtems_name.
1220 *
1221 * @par Notes
1222 * Use rtems_build_name() to define the task name.
1223 */
1224#define CONFIGURE_INIT_TASK_NAME
1225
1226/* Generated from spec:/acfg/if/init-task-priority */
1227
1228/**
1229 * @brief This configuration option is an integer define.
1230 *
1231 * The value of this configuration option defines the initial priority of the
1232 * Classic API initialization task.
1233 *
1234 * @par Default Value
1235 * The default value is 1.
1236 *
1237 * @par Value Constraints
1238 * The value of this configuration option shall be a valid Classic API task
1239 * priority.  The set of valid task priorities depends on the scheduler
1240 * configuration.
1241 */
1242#define CONFIGURE_INIT_TASK_PRIORITY
1243
1244/* Generated from spec:/acfg/if/init-task-stack-size */
1245
1246/**
1247 * @brief This configuration option is an integer define.
1248 *
1249 * The value of this configuration option defines the task stack size of the
1250 * Classic API initialization task.
1251 *
1252 * @par Default Value
1253 * The default value is #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
1254 *
1255 * @par Value Constraints
1256 * @parblock
1257 * The value of this configuration option shall satisfy all of the following
1258 * constraints:
1259 *
1260 * * It shall be greater than or equal to #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
1261 *
1262 * * It shall be small enough so that the task stack space calculation carried
1263 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
1264 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
1265 * @endparblock
1266 *
1267 * @par Notes
1268 * @parblock
1269 * The
1270 *
1271 * * ``CONFIGURE_INIT_TASK_STACK_SIZE`` and
1272 *
1273 * * #CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE
1274 *
1275 * configuration options are mutually exclusive.
1276 * @endparblock
1277 */
1278#define CONFIGURE_INIT_TASK_STACK_SIZE
1279
1280/* Generated from spec:/acfg/if/rtems-init-tasks-table */
1281
1282/**
1283 * @brief This configuration option is a boolean feature define.
1284 *
1285 * In case this configuration option is defined, then exactly one Classic API
1286 * initialization task is configured.
1287 *
1288 * @par Default Configuration
1289 * If this configuration option is undefined, then the described feature is not
1290 * enabled.
1291 *
1292 * @par Notes
1293 * @parblock
1294 * The application shall define exactly one of the following configuration
1295 * options
1296 *
1297 * * ``CONFIGURE_RTEMS_INIT_TASKS_TABLE``,
1298 *
1299 * * #CONFIGURE_POSIX_INIT_THREAD_TABLE, or
1300 *
1301 * * #CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
1302 *
1303 * otherwise a compile time error in the configuration file will occur.
1304 * @endparblock
1305 */
1306#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
1307
1308/** @} */
1309
1310/* Generated from spec:/acfg/if/group-devdrv */
1311
1312/**
1313 * @defgroup RTEMSApplConfigDeviceDriverConfiguration \
1314 *   Device Driver Configuration
1315 *
1316 * @ingroup RTEMSApplConfig
1317 *
1318 * This section describes configuration options related to the device drivers.
1319 * Note that network device drivers are not covered by the following options.
1320 *
1321 * @{
1322 */
1323
1324/* Generated from spec:/acfg/if/appl-does-not-need-clock-driver */
1325
1326/**
1327 * @brief This configuration option is a boolean feature define.
1328 *
1329 * In case this configuration option is defined, then **no** Clock Driver is
1330 * initialized during system initialization.
1331 *
1332 * @par Default Configuration
1333 * If this configuration option is undefined, then a Clock Driver may be
1334 * initialized during system initialization.
1335 *
1336 * @par Notes
1337 * @parblock
1338 * This configuration parameter is intended to prevent the common user error of
1339 * using the Hello World example as the baseline for an application and leaving
1340 * out a clock tick source.
1341 *
1342 * The application shall define exactly one of the following configuration
1343 * options
1344 *
1345 * * #CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER,
1346 *
1347 * * ``CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER``, or
1348 *
1349 * * #CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER,
1350 *
1351 * otherwise a compile time error in the configuration file will occur.
1352 * @endparblock
1353 */
1354#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
1355
1356/* Generated from spec:/acfg/if/appl-extra-drivers */
1357
1358/**
1359 * @brief This configuration option is an initializer define.
1360 *
1361 * The value of this configuration option is used to initialize the Device
1362 * Driver Table.
1363 *
1364 * @par Default Value
1365 * The default value is the empty list.
1366 *
1367 * @par Value Constraints
1368 * The value of this configuration option shall be a list of initializers for
1369 * structures of type ::rtems_driver_address_table.
1370 *
1371 * @par Notes
1372 * @parblock
1373 * The value of this configuration option is placed after the entries of other
1374 * device driver configuration options.
1375 *
1376 * See #CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS for an alternative placement
1377 * of application device driver initializers.
1378 * @endparblock
1379 */
1380#define CONFIGURE_APPLICATION_EXTRA_DRIVERS
1381
1382/* Generated from spec:/acfg/if/appl-needs-ata-driver */
1383
1384/**
1385 * @brief This configuration option is a boolean feature define.
1386 *
1387 * In case this configuration option is defined, then the ATA Driver is
1388 * initialized during system initialization.
1389 *
1390 * @par Default Configuration
1391 * If this configuration option is undefined, then the described feature is not
1392 * enabled.
1393 *
1394 * @par Notes
1395 * @parblock
1396 * Most BSPs do not include support for an ATA Driver.
1397 *
1398 * If this option is defined and the BSP does not have this device driver, then
1399 * the user will get a link time error for an undefined symbol.
1400 * @endparblock
1401 */
1402#define CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER
1403
1404/* Generated from spec:/acfg/if/appl-needs-clock-driver */
1405
1406/**
1407 * @brief This configuration option is a boolean feature define.
1408 *
1409 * In case this configuration option is defined, then the Clock Driver is
1410 * initialized during system initialization.
1411 *
1412 * @par Default Configuration
1413 * If this configuration option is undefined, then the described feature is not
1414 * enabled.
1415 *
1416 * @par Notes
1417 * @parblock
1418 * The Clock Driver is responsible for providing a regular interrupt which
1419 * invokes a clock tick directive.
1420 *
1421 * The application shall define exactly one of the following configuration
1422 * options
1423 *
1424 * * ``CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER``,
1425 *
1426 * * #CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER, or
1427 *
1428 * * #CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER,
1429 *
1430 * otherwise a compile time error in the configuration file will occur.
1431 * @endparblock
1432 */
1433#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
1434
1435/* Generated from spec:/acfg/if/appl-needs-console-driver */
1436
1437/**
1438 * @brief This configuration option is a boolean feature define.
1439 *
1440 * In case this configuration option is defined, then the Console Driver is
1441 * initialized during system initialization.
1442 *
1443 * @par Default Configuration
1444 * If this configuration option is undefined, then the described feature is not
1445 * enabled.
1446 *
1447 * @par Notes
1448 * @parblock
1449 * The Console Driver is responsible for providing the ``/dev/console`` device
1450 * file.  This device is used to initialize the standard input, output, and
1451 * error file descriptors.
1452 *
1453 * BSPs should be constructed in a manner that allows printk() to work properly
1454 * without the need for the Console Driver to be configured.
1455 *
1456 * The
1457 *
1458 * * ``CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER``,
1459 *
1460 * * #CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER, and
1461 *
1462 * * #CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER
1463 *
1464 * configuration options are mutually exclusive.
1465 * @endparblock
1466 */
1467#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
1468
1469/* Generated from spec:/acfg/if/appl-needs-framebuffer-driver */
1470
1471/**
1472 * @brief This configuration option is a boolean feature define.
1473 *
1474 * In case this configuration option is defined, then the Frame Buffer Driver
1475 * is initialized during system initialization.
1476 *
1477 * @par Default Configuration
1478 * If this configuration option is undefined, then the described feature is not
1479 * enabled.
1480 *
1481 * @par Notes
1482 * @parblock
1483 * Most BSPs do not include support for a Frame Buffer Driver. This is because
1484 * many boards do not include the required hardware.
1485 *
1486 * If this option is defined and the BSP does not have this device driver, then
1487 * the user will get a link time error for an undefined symbol.
1488 * @endparblock
1489 */
1490#define CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER
1491
1492/* Generated from spec:/acfg/if/appl-needs-ide-driver */
1493
1494/**
1495 * @brief This configuration option is a boolean feature define.
1496 *
1497 * In case this configuration option is defined, then the IDE Driver is
1498 * initialized during system initialization.
1499 *
1500 * @par Default Configuration
1501 * If this configuration option is undefined, then the described feature is not
1502 * enabled.
1503 *
1504 * @par Notes
1505 * @parblock
1506 * Most BSPs do not include support for an IDE Driver.
1507 *
1508 * If this option is defined and the BSP does not have this device driver, then
1509 * the user will get a link time error for an undefined symbol.
1510 * @endparblock
1511 */
1512#define CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER
1513
1514/* Generated from spec:/acfg/if/appl-needs-null-driver */
1515
1516/**
1517 * @brief This configuration option is a boolean feature define.
1518 *
1519 * In case this configuration option is defined, then the ``/dev/null`` Driver
1520 * is initialized during system initialization.
1521 *
1522 * @par Default Configuration
1523 * If this configuration option is undefined, then the described feature is not
1524 * enabled.
1525 *
1526 * @par Notes
1527 * This device driver is supported by all BSPs.
1528 */
1529#define CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
1530
1531/* Generated from spec:/acfg/if/appl-needs-rtc-driver */
1532
1533/**
1534 * @brief This configuration option is a boolean feature define.
1535 *
1536 * In case this configuration option is defined, then the Real-Time Clock
1537 * Driver is initialized during system initialization.
1538 *
1539 * @par Default Configuration
1540 * If this configuration option is undefined, then the described feature is not
1541 * enabled.
1542 *
1543 * @par Notes
1544 * @parblock
1545 * Most BSPs do not include support for a real-time clock (RTC). This is
1546 * because many boards do not include the required hardware.
1547 *
1548 * If this is defined and the BSP does not have this device driver, then the
1549 * user will get a link time error for an undefined symbol.
1550 * @endparblock
1551 */
1552#define CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
1553
1554/* Generated from spec:/acfg/if/appl-needs-simple-console-driver */
1555
1556/**
1557 * @brief This configuration option is a boolean feature define.
1558 *
1559 * In case this configuration option is defined, then the Simple Console Driver
1560 * is initialized during system initialization.
1561 *
1562 * @par Default Configuration
1563 * If this configuration option is undefined, then the described feature is not
1564 * enabled.
1565 *
1566 * @par Notes
1567 * @parblock
1568 * This device driver is responsible for providing the ``/dev/console`` device
1569 * file.  This device is used to initialize the standard input, output, and
1570 * error file descriptors.
1571 *
1572 * This device driver reads via getchark().
1573 *
1574 * This device driver writes via rtems_putc().
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_CONSOLE_DRIVER
1591
1592/* Generated from spec:/acfg/if/appl-needs-simple-task-console-driver */
1593
1594/**
1595 * @brief This configuration option is a boolean feature define.
1596 *
1597 * In case this configuration option is defined, then the Simple Task Console
1598 * Driver is 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 * @parblock
1606 * This device driver is responsible for providing the ``/dev/console`` device
1607 * file.  This device is used to initialize the standard input, output, and
1608 * error file descriptors.
1609 *
1610 * This device driver reads via getchark().
1611 *
1612 * This device driver writes into a write buffer.  The count of characters
1613 * written into the write buffer is returned.  It might be less than the
1614 * requested count, in case the write buffer is full.  The write is
1615 * non-blocking and may be called from interrupt context.  A dedicated task
1616 * reads from the write buffer and outputs the characters via rtems_putc().
1617 * This task runs with the least important priority. The write buffer size is
1618 * 2047 characters and it is not configurable.
1619 *
1620 * Use ``fsync( STDOUT_FILENO )`` or ``fdatasync( STDOUT_FILENO )`` to drain
1621 * the write buffer.
1622 *
1623 * The Termios framework is not used.  There is no support to change device
1624 * settings, e.g.  baud, stop bits, parity, etc.
1625 *
1626 * The
1627 *
1628 * * #CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER,
1629 *
1630 * * #CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER, and
1631 *
1632 * * ``CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER``
1633 *
1634 * configuration options are mutually exclusive.
1635 * @endparblock
1636 */
1637#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER
1638
1639/* Generated from spec:/acfg/if/appl-needs-stub-driver */
1640
1641/**
1642 * @brief This configuration option is a boolean feature define.
1643 *
1644 * In case this configuration option is defined, then the Stub Driver is
1645 * initialized during system initialization.
1646 *
1647 * @par Default Configuration
1648 * If this configuration option is undefined, then the described feature is not
1649 * enabled.
1650 *
1651 * @par Notes
1652 * This device driver simply provides entry points that return successful and
1653 * is primarily a test fixture. It is supported by all BSPs.
1654 */
1655#define CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
1656
1657/* Generated from spec:/acfg/if/appl-needs-timer-driver */
1658
1659/**
1660 * @brief This configuration option is a boolean feature define.
1661 *
1662 * In case this configuration option is defined, then the Benchmark Timer
1663 * Driver is initialized during system initialization.
1664 *
1665 * @par Default Configuration
1666 * If this configuration option is undefined, then the described feature is not
1667 * enabled.
1668 *
1669 * @par Notes
1670 * @parblock
1671 * The Benchmark Timer Driver is intended for the benchmark tests of the RTEMS
1672 * Testsuite.  Applications should not use this driver.
1673 *
1674 * The application shall define exactly one of the following configuration
1675 * options
1676 *
1677 * * #CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER,
1678 *
1679 * * #CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER, or
1680 *
1681 * * ``CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER``,
1682 *
1683 * otherwise a compile time error will occur.
1684 * @endparblock
1685 */
1686#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
1687
1688/* Generated from spec:/acfg/if/appl-needs-watchdog-driver */
1689
1690/**
1691 * @brief This configuration option is a boolean feature define.
1692 *
1693 * In case this configuration option is defined, then the Watchdog Driver is
1694 * initialized during system initialization.
1695 *
1696 * @par Default Configuration
1697 * If this configuration option is undefined, then the described feature is not
1698 * enabled.
1699 *
1700 * @par Notes
1701 * @parblock
1702 * Most BSPs do not include support for a watchdog device driver. This is
1703 * because many boards do not include the required hardware.
1704 *
1705 * If this is defined and the BSP does not have this device driver, then the
1706 * user will get a link time error for an undefined symbol.
1707 * @endparblock
1708 */
1709#define CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER
1710
1711/* Generated from spec:/acfg/if/appl-needs-zero-driver */
1712
1713/**
1714 * @brief This configuration option is a boolean feature define.
1715 *
1716 * In case this configuration option is defined, then the ``/dev/zero`` Driver
1717 * is initialized during system initialization.
1718 *
1719 * @par Default Configuration
1720 * If this configuration option is undefined, then the described feature is not
1721 * enabled.
1722 *
1723 * @par Notes
1724 * This device driver is supported by all BSPs.
1725 */
1726#define CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER
1727
1728/* Generated from spec:/acfg/if/appl-prerequisite-drivers */
1729
1730/**
1731 * @brief This configuration option is an initializer define.
1732 *
1733 * The value of this configuration option is used to initialize the Device
1734 * Driver Table.
1735 *
1736 * @par Default Value
1737 * The default value is the empty list.
1738 *
1739 * @par Value Constraints
1740 * The value of this configuration option shall be a list of initializers for
1741 * structures of type ::rtems_driver_address_table.
1742 *
1743 * @par Notes
1744 * @parblock
1745 * The value of this configuration option is placed after the entries defined
1746 * by #CONFIGURE_BSP_PREREQUISITE_DRIVERS and before all other device driver
1747 * configuration options.
1748 *
1749 * See #CONFIGURE_APPLICATION_EXTRA_DRIVERS for an alternative placement of
1750 * application device driver initializers.
1751 * @endparblock
1752 */
1753#define CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS
1754
1755/* Generated from spec:/acfg/if/ata-driver-task-priority */
1756
1757/**
1758 * @brief This configuration option is an integer define.
1759 *
1760 * The value of this configuration option defines the ATA task priority.
1761 *
1762 * @par Default Value
1763 * The default value is 140.
1764 *
1765 * @par Value Constraints
1766 * The value of this configuration option shall be a valid Classic API task
1767 * priority.  The set of valid task priorities depends on the scheduler
1768 * configuration.
1769 *
1770 * @par Notes
1771 * This configuration option is only evaluated if the configuration option
1772 * #CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER is defined.
1773 */
1774#define CONFIGURE_ATA_DRIVER_TASK_PRIORITY
1775
1776/* Generated from spec:/acfg/if/max-drivers */
1777
1778/**
1779 * @brief This configuration option is an integer define.
1780 *
1781 * The value of this configuration option defines the number of device drivers.
1782 *
1783 * @par Default Value
1784 * @parblock
1785 * This is computed by default, and is set to the number of statically
1786 * configured device drivers configured using the following configuration
1787 * options:
1788 *
1789 * * #CONFIGURE_APPLICATION_EXTRA_DRIVERS
1790 *
1791 * * #CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER
1792 *
1793 * * #CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
1794 *
1795 * * #CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
1796 *
1797 * * #CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER
1798 *
1799 * * #CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER
1800 *
1801 * * #CONFIGURE_APPLICATION_NEEDS_LIBBLOCK
1802 *
1803 * * #CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
1804 *
1805 * * #CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
1806 *
1807 * * #CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
1808 *
1809 * * #CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER
1810 *
1811 * * #CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
1812 *
1813 * * #CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
1814 *
1815 * * #CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER
1816 *
1817 * * #CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER
1818 *
1819 * * #CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS
1820 *
1821 * * #CONFIGURE_BSP_PREREQUISITE_DRIVERS
1822 * @endparblock
1823 *
1824 * @par Value Constraints
1825 * @parblock
1826 * The value of this configuration option shall satisfy all of the following
1827 * constraints:
1828 *
1829 * * It shall be less than or equal to <a
1830 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
1831 *
1832 * * It shall be greater than or equal than the number of statically configured
1833 *   device drivers.
1834 *
1835 * * It shall be less than or equal to a BSP-specific and application-specific
1836 *   value which depends on the size of the memory available to the
1837 *   application.
1838 * @endparblock
1839 *
1840 * @par Notes
1841 * If the application will dynamically install device drivers, then the
1842 * configuration option value shall be larger than the number of statically
1843 * configured device drivers.
1844 */
1845#define CONFIGURE_MAXIMUM_DRIVERS
1846
1847/** @} */
1848
1849/* Generated from spec:/acfg/if/group-eventrecord */
1850
1851/**
1852 * @defgroup RTEMSApplConfigEventRecordingConfiguration \
1853 *   Event Recording Configuration
1854 *
1855 * @ingroup RTEMSApplConfig
1856 *
1857 * This section describes configuration options related to the event recording.
1858 *
1859 * @{
1860 */
1861
1862/* Generated from spec:/acfg/if/record-extensions-enabled */
1863
1864/**
1865 * @brief This configuration option is a boolean feature define.
1866 *
1867 * In case
1868 *
1869 * * this configuration option is defined
1870 *
1871 * * and #CONFIGURE_RECORD_PER_PROCESSOR_ITEMS is properly defined,
1872 *
1873 * then the event record extensions are enabled.
1874 *
1875 * @par Default Configuration
1876 * If this configuration option is undefined, then the described feature is not
1877 * enabled.
1878 *
1879 * @par Notes
1880 * The record extensions capture thread create, start, restart, delete, switch,
1881 * begin, exitted and terminate events.
1882 */
1883#define CONFIGURE_RECORD_EXTENSIONS_ENABLED
1884
1885/* Generated from spec:/acfg/if/record-fatal-dump-base64 */
1886
1887/**
1888 * @brief This configuration option is a boolean feature define.
1889 *
1890 * In case
1891 *
1892 * * this configuration option is defined
1893 *
1894 * * and #CONFIGURE_RECORD_PER_PROCESSOR_ITEMS is properly defined,
1895 *
1896 * * and #CONFIGURE_RECORD_FATAL_DUMP_BASE64_ZLIB is undefined,
1897 *
1898 * then the event records are dumped in Base64 encoding in a fatal error
1899 * extension (see <a
1900 * href=https://docs.rtems.org/branches/master/c-user/fatal_error.html#announcing-a-fatal-error>Announcing
1901 * a Fatal Error</a>).
1902 *
1903 * @par Default Configuration
1904 * If this configuration option is undefined, then the described feature is not
1905 * enabled.
1906 *
1907 * @par Notes
1908 * This extension can be used to produce crash dumps.
1909 */
1910#define CONFIGURE_RECORD_FATAL_DUMP_BASE64
1911
1912/* Generated from spec:/acfg/if/record-fatal-dump-base64-zlib */
1913
1914/**
1915 * @brief This configuration option is a boolean feature define.
1916 *
1917 * In case
1918 *
1919 * * this configuration option is defined
1920 *
1921 * * and #CONFIGURE_RECORD_PER_PROCESSOR_ITEMS is properly defined,
1922 *
1923 * then the event records are compressed by zlib and dumped in Base64 encoding
1924 * in a fatal error extension (see <a
1925 * href=https://docs.rtems.org/branches/master/c-user/fatal_error.html#announcing-a-fatal-error>Announcing
1926 * a Fatal Error</a>).
1927 *
1928 * @par Default Configuration
1929 * If this configuration option is undefined, then the described feature is not
1930 * enabled.
1931 *
1932 * @par Notes
1933 * The zlib compression needs about 512KiB of RAM.  This extension can be used
1934 * to produce crash dumps.
1935 */
1936#define CONFIGURE_RECORD_FATAL_DUMP_BASE64_ZLIB
1937
1938/* Generated from spec:/acfg/if/record-per-processor-items */
1939
1940/**
1941 * @brief This configuration option is an integer define.
1942 *
1943 * The value of this configuration option defines the event record item count
1944 * per processor.
1945 *
1946 * @par Default Value
1947 * The default value is 0.
1948 *
1949 * @par Value Constraints
1950 * @parblock
1951 * The value of this configuration option shall satisfy all of the following
1952 * constraints:
1953 *
1954 * * It shall be greater than or equal to 16.
1955 *
1956 * * It shall be less than or equal to <a
1957 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
1958 *
1959 * * It shall be a power of two.
1960 *
1961 * * It shall be less than or equal to a BSP-specific and application-specific
1962 *   value which depends on the size of the memory available to the
1963 *   application.
1964 * @endparblock
1965 *
1966 * @par Notes
1967 * The event record buffers are statically allocated for each configured
1968 * processor (#CONFIGURE_MAXIMUM_PROCESSORS).  If the value of this
1969 * configuration option is zero, then nothing is allocated.
1970 */
1971#define CONFIGURE_RECORD_PER_PROCESSOR_ITEMS
1972
1973/** @} */
1974
1975/* Generated from spec:/acfg/if/group-filesystem */
1976
1977/**
1978 * @defgroup RTEMSApplConfigFilesystemConfiguration Filesystem Configuration
1979 *
1980 * @ingroup RTEMSApplConfig
1981 *
1982 * This section describes configuration options related to filesytems. By
1983 * default, the In-Memory Filesystem (IMFS) is used as the base filesystem
1984 * (also known as root filesystem).  In order to save some memory for your
1985 * application, you can disable the filesystem support with the
1986 * #CONFIGURE_APPLICATION_DISABLE_FILESYSTEM configuration option.
1987 * Alternatively, you can strip down the features of the base filesystem with
1988 * the #CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM and
1989 * #CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM configuration options.  These three
1990 * configuration options are mutually exclusive.  They are intended for an
1991 * advanced application configuration.
1992 *
1993 * Features of the IMFS can be disabled and enabled with the following
1994 * configuration options:
1995 *
1996 * * #CONFIGURE_IMFS_DISABLE_CHMOD
1997 *
1998 * * #CONFIGURE_IMFS_DISABLE_CHOWN
1999 *
2000 * * #CONFIGURE_IMFS_DISABLE_LINK
2001 *
2002 * * #CONFIGURE_IMFS_DISABLE_MKNOD
2003 *
2004 * * #CONFIGURE_IMFS_DISABLE_MKNOD_FILE
2005 *
2006 * * #CONFIGURE_IMFS_DISABLE_MOUNT
2007 *
2008 * * #CONFIGURE_IMFS_DISABLE_READDIR
2009 *
2010 * * #CONFIGURE_IMFS_DISABLE_READLINK
2011 *
2012 * * #CONFIGURE_IMFS_DISABLE_RENAME
2013 *
2014 * * #CONFIGURE_IMFS_DISABLE_RMNOD
2015 *
2016 * * #CONFIGURE_IMFS_DISABLE_SYMLINK
2017 *
2018 * * #CONFIGURE_IMFS_DISABLE_UNMOUNT
2019 *
2020 * * #CONFIGURE_IMFS_DISABLE_UTIME
2021 *
2022 * * #CONFIGURE_IMFS_ENABLE_MKFIFO
2023 *
2024 * @{
2025 */
2026
2027/* Generated from spec:/acfg/if/appl-disable-filesystem */
2028
2029/**
2030 * @brief This configuration option is a boolean feature define.
2031 *
2032 * In case this configuration option is defined, then **no base filesystem** is
2033 * initialized during system initialization and **no filesystems** are
2034 * configured.
2035 *
2036 * @par Default Configuration
2037 * If this configuration option is undefined, then a base filesystem and the
2038 * configured filesystems are initialized during system initialization.
2039 *
2040 * @par Notes
2041 * Filesystems shall be initialized to support file descriptor based device
2042 * drivers and basic input/output functions such as printf(). Filesystems can
2043 * be disabled to reduce the memory footprint of an application.
2044 */
2045#define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
2046
2047/* Generated from spec:/acfg/if/filesystem-all */
2048
2049/**
2050 * @brief This configuration option is a boolean feature define.
2051 *
2052 * In case this configuration option is defined, then the following
2053 * configuration options will be defined as well
2054 *
2055 * * #CONFIGURE_FILESYSTEM_DOSFS,
2056 *
2057 * * #CONFIGURE_FILESYSTEM_FTPFS,
2058 *
2059 * * #CONFIGURE_FILESYSTEM_IMFS,
2060 *
2061 * * #CONFIGURE_FILESYSTEM_JFFS2,
2062 *
2063 * * #CONFIGURE_FILESYSTEM_NFS,
2064 *
2065 * * #CONFIGURE_FILESYSTEM_RFS, and
2066 *
2067 * * #CONFIGURE_FILESYSTEM_TFTPFS.
2068 *
2069 * @par Default Configuration
2070 * If this configuration option is undefined, then the described feature is not
2071 * enabled.
2072 */
2073#define CONFIGURE_FILESYSTEM_ALL
2074
2075/* Generated from spec:/acfg/if/filesystem-dosfs */
2076
2077/**
2078 * @brief This configuration option is a boolean feature define.
2079 *
2080 * In case this configuration option is defined, then the DOS (FAT) filesystem
2081 * is registered, so that instances of this filesystem can be mounted by the
2082 * application.
2083 *
2084 * @par Default Configuration
2085 * If this configuration option is undefined, then the described feature is not
2086 * enabled.
2087 *
2088 * @par Notes
2089 * This filesystem requires a Block Device Cache configuration, see
2090 * #CONFIGURE_APPLICATION_NEEDS_LIBBLOCK.
2091 */
2092#define CONFIGURE_FILESYSTEM_DOSFS
2093
2094/* Generated from spec:/acfg/if/filesystem-ftpfs */
2095
2096/**
2097 * @brief This configuration option is a boolean feature define.
2098 *
2099 * In case this configuration option is defined, then the FTP filesystem (FTP
2100 * client) is registered, so that instances of this filesystem can be mounted
2101 * by the application.
2102 *
2103 * @par Default Configuration
2104 * If this configuration option is undefined, then the described feature is not
2105 * enabled.
2106 */
2107#define CONFIGURE_FILESYSTEM_FTPFS
2108
2109/* Generated from spec:/acfg/if/filesystem-imfs */
2110
2111/**
2112 * @brief This configuration option is a boolean feature define.
2113 *
2114 * In case this configuration option is defined, then the In-Memory Filesystem
2115 * (IMFS) is registered, so that instances of this filesystem can be mounted by
2116 * the application.
2117 *
2118 * @par Default Configuration
2119 * If this configuration option is undefined, then the described feature is not
2120 * enabled.
2121 *
2122 * @par Notes
2123 * Applications will rarely need this configuration option.  This configuration
2124 * option is intended for test programs.  You do not need to define this
2125 * configuration option for the base filesystem (also known as root
2126 * filesystem).
2127 */
2128#define CONFIGURE_FILESYSTEM_IMFS
2129
2130/* Generated from spec:/acfg/if/filesystem-jffs2 */
2131
2132/**
2133 * @brief This configuration option is a boolean feature define.
2134 *
2135 * In case this configuration option is defined, then the JFFS2 filesystem is
2136 * registered, so that instances of this filesystem can be mounted by the
2137 * application.
2138 *
2139 * @par Default Configuration
2140 * If this configuration option is undefined, then the described feature is not
2141 * enabled.
2142 */
2143#define CONFIGURE_FILESYSTEM_JFFS2
2144
2145/* Generated from spec:/acfg/if/filesystem-nfs */
2146
2147/**
2148 * @brief This configuration option is a boolean feature define.
2149 *
2150 * In case this configuration option is defined, then the Network Filesystem
2151 * (NFS) client is registered, so that instances of this filesystem can be
2152 * mounted by the application.
2153 *
2154 * @par Default Configuration
2155 * If this configuration option is undefined, then the described feature is not
2156 * enabled.
2157 */
2158#define CONFIGURE_FILESYSTEM_NFS
2159
2160/* Generated from spec:/acfg/if/filesystem-rfs */
2161
2162/**
2163 * @brief This configuration option is a boolean feature define.
2164 *
2165 * In case this configuration option is defined, then the RTEMS Filesystem
2166 * (RFS) is registered, so that instances of this filesystem can be mounted by
2167 * the application.
2168 *
2169 * @par Default Configuration
2170 * If this configuration option is undefined, then the described feature is not
2171 * enabled.
2172 *
2173 * @par Notes
2174 * This filesystem requires a Block Device Cache configuration, see
2175 * #CONFIGURE_APPLICATION_NEEDS_LIBBLOCK.
2176 */
2177#define CONFIGURE_FILESYSTEM_RFS
2178
2179/* Generated from spec:/acfg/if/filesystem-tftpfs */
2180
2181/**
2182 * @brief This configuration option is a boolean feature define.
2183 *
2184 * In case this configuration option is defined, then the TFTP filesystem (TFTP
2185 * client) is registered, so that instances of this filesystem can be mounted
2186 * by the application.
2187 *
2188 * @par Default Configuration
2189 * If this configuration option is undefined, then the described feature is not
2190 * enabled.
2191 */
2192#define CONFIGURE_FILESYSTEM_TFTPFS
2193
2194/* Generated from spec:/acfg/if/imfs-disable-chmod */
2195
2196/**
2197 * @brief This configuration option is a boolean feature define.
2198 *
2199 * In case this configuration option is defined, then the root IMFS does not
2200 * support changing the mode of files (no support for chmod()).
2201 *
2202 * @par Default Configuration
2203 * If this configuration option is undefined, then the root IMFS supports
2204 * changing the mode of files.
2205 */
2206#define CONFIGURE_IMFS_DISABLE_CHMOD
2207
2208/* Generated from spec:/acfg/if/imfs-disable-chown */
2209
2210/**
2211 * @brief This configuration option is a boolean feature define.
2212 *
2213 * In case this configuration option is defined, then the root IMFS does not
2214 * support changing the ownership of files (no support for chown()).
2215 *
2216 * @par Default Configuration
2217 * If this configuration option is undefined, then the root IMFS supports
2218 * changing the ownership of files.
2219 */
2220#define CONFIGURE_IMFS_DISABLE_CHOWN
2221
2222/* Generated from spec:/acfg/if/imfs-disable-link */
2223
2224/**
2225 * @brief This configuration option is a boolean feature define.
2226 *
2227 * In case this configuration option is defined, then the root IMFS does not
2228 * support hard links (no support for link()).
2229 *
2230 * @par Default Configuration
2231 * If this configuration option is undefined, then the root IMFS supports hard
2232 * links.
2233 */
2234#define CONFIGURE_IMFS_DISABLE_LINK
2235
2236/* Generated from spec:/acfg/if/imfs-disable-mknod */
2237
2238/**
2239 * @brief This configuration option is a boolean feature define.
2240 *
2241 * In case this configuration option is defined, then the root IMFS does not
2242 * support making files (no support for mknod()).
2243 *
2244 * @par Default Configuration
2245 * If this configuration option is undefined, then the root IMFS supports
2246 * making files.
2247 */
2248#define CONFIGURE_IMFS_DISABLE_MKNOD
2249
2250/* Generated from spec:/acfg/if/imfs-disable-mknod-device */
2251
2252/**
2253 * @brief This configuration option is a boolean feature define.
2254 *
2255 * In case this configuration option is defined, then the root IMFS does not
2256 * support making device files.
2257 *
2258 * @par Default Configuration
2259 * If this configuration option is undefined, then the root IMFS supports
2260 * making device files.
2261 */
2262#define CONFIGURE_IMFS_DISABLE_MKNOD_DEVICE
2263
2264/* Generated from spec:/acfg/if/imfs-disable-mknod-file */
2265
2266/**
2267 * @brief This configuration option is a boolean feature define.
2268 *
2269 * In case this configuration option is defined, then the root IMFS does not
2270 * support making regular files.
2271 *
2272 * @par Default Configuration
2273 * If this configuration option is undefined, then the root IMFS supports
2274 * making regular files.
2275 */
2276#define CONFIGURE_IMFS_DISABLE_MKNOD_FILE
2277
2278/* Generated from spec:/acfg/if/imfs-disable-mount */
2279
2280/**
2281 * @brief This configuration option is a boolean feature define.
2282 *
2283 * In case this configuration option is defined, then the root IMFS does not
2284 * support mounting other filesystems (no support for mount()).
2285 *
2286 * @par Default Configuration
2287 * If this configuration option is undefined, then the root IMFS supports
2288 * mounting other filesystems.
2289 */
2290#define CONFIGURE_IMFS_DISABLE_MOUNT
2291
2292/* Generated from spec:/acfg/if/imfs-disable-readdir */
2293
2294/**
2295 * @brief This configuration option is a boolean feature define.
2296 *
2297 * In case this configuration option is defined, then the root IMFS does not
2298 * support reading directories (no support for readdir()).  It is still
2299 * possible to open files in a directory.
2300 *
2301 * @par Default Configuration
2302 * If this configuration option is undefined, then the root IMFS supports
2303 * reading directories.
2304 */
2305#define CONFIGURE_IMFS_DISABLE_READDIR
2306
2307/* Generated from spec:/acfg/if/imfs-disable-readlink */
2308
2309/**
2310 * @brief This configuration option is a boolean feature define.
2311 *
2312 * In case this configuration option is defined, then the root IMFS does not
2313 * support reading symbolic links (no support for readlink()).
2314 *
2315 * @par Default Configuration
2316 * If this configuration option is undefined, then the root IMFS supports
2317 * reading symbolic links.
2318 */
2319#define CONFIGURE_IMFS_DISABLE_READLINK
2320
2321/* Generated from spec:/acfg/if/imfs-disable-rename */
2322
2323/**
2324 * @brief This configuration option is a boolean feature define.
2325 *
2326 * In case this configuration option is defined, then the root IMFS does not
2327 * support renaming files (no support for rename()).
2328 *
2329 * @par Default Configuration
2330 * If this configuration option is undefined, then the root IMFS supports
2331 * renaming files.
2332 */
2333#define CONFIGURE_IMFS_DISABLE_RENAME
2334
2335/* Generated from spec:/acfg/if/imfs-disable-rmnod */
2336
2337/**
2338 * @brief This configuration option is a boolean feature define.
2339 *
2340 * In case this configuration option is defined, then the root IMFS does not
2341 * support removing files (no support for rmnod()).
2342 *
2343 * @par Default Configuration
2344 * If this configuration option is undefined, then the root IMFS supports
2345 * removing files.
2346 */
2347#define CONFIGURE_IMFS_DISABLE_RMNOD
2348
2349/* Generated from spec:/acfg/if/imfs-disable-symlink */
2350
2351/**
2352 * @brief This configuration option is a boolean feature define.
2353 *
2354 * In case this configuration option is defined, then the root IMFS does not
2355 * support creating symbolic links (no support for symlink()).
2356 *
2357 * @par Default Configuration
2358 * If this configuration option is undefined, then the root IMFS supports
2359 * creating symbolic links.
2360 */
2361#define CONFIGURE_IMFS_DISABLE_SYMLINK
2362
2363/* Generated from spec:/acfg/if/imfs-disable-unmount */
2364
2365/**
2366 * @brief This configuration option is a boolean feature define.
2367 *
2368 * In case this configuration option is defined, then the root IMFS does not
2369 * support unmounting other filesystems (no support for unmount()).
2370 *
2371 * @par Default Configuration
2372 * If this configuration option is undefined, then the root IMFS supports
2373 * unmounting other filesystems.
2374 */
2375#define CONFIGURE_IMFS_DISABLE_UNMOUNT
2376
2377/* Generated from spec:/acfg/if/imfs-disable-utime */
2378
2379/**
2380 * @brief This configuration option is a boolean feature define.
2381 *
2382 * In case this configuration option is defined, then the root IMFS does not
2383 * support changing file times (no support for utime()).
2384 *
2385 * @par Default Configuration
2386 * If this configuration option is undefined, then the root IMFS supports
2387 * changing file times.
2388 */
2389#define CONFIGURE_IMFS_DISABLE_UTIME
2390
2391/* Generated from spec:/acfg/if/imfs-enable-mkfifo */
2392
2393/**
2394 * @brief This configuration option is a boolean feature define.
2395 *
2396 * In case this configuration option is defined, then the root IMFS supports
2397 * making FIFOs.
2398 *
2399 * @par Default Configuration
2400 * If this configuration option is undefined, then the root IMFS does not
2401 * support making FIFOs (no support for mkfifo()).
2402 */
2403#define CONFIGURE_IMFS_ENABLE_MKFIFO
2404
2405/* Generated from spec:/acfg/if/imfs-memfile-bytes-per-block */
2406
2407/**
2408 * @brief This configuration option is an integer define.
2409 *
2410 * The value of this configuration option defines the block size for in-memory
2411 * files managed by the IMFS.
2412 *
2413 * @par Default Value
2414 * The default value is 128.
2415 *
2416 * @par Value Constraints
2417 * The value of this configuration option shall be equal to 16, 32, 64, 128,
2418 * 256, or 512.
2419 *
2420 * @par Notes
2421 * @parblock
2422 * The configured block size has two impacts. The first is the average amount
2423 * of unused memory in the last block of each file.  For example, when the
2424 * block size is 512, on average one-half of the last block of each file will
2425 * remain unused and the memory is wasted. In contrast, when the block size is
2426 * 16, the average unused memory per file is only 8 bytes. However, it requires
2427 * more allocations for the same size file and thus more overhead per block for
2428 * the dynamic memory management.
2429 *
2430 * Second, the block size has an impact on the maximum size file that can be
2431 * stored in the IMFS. With smaller block size, the maximum file size is
2432 * correspondingly smaller. The following shows the maximum file size possible
2433 * based on the configured block size:
2434 *
2435 * * when the block size is 16 bytes, the maximum file size is 1,328 bytes.
2436 *
2437 * * when the block size is 32 bytes, the maximum file size is 18,656 bytes.
2438 *
2439 * * when the block size is 64 bytes, the maximum file size is 279,488 bytes.
2440 *
2441 * * when the block size is 128 bytes, the maximum file size is 4,329,344
2442 *   bytes.
2443 *
2444 * * when the block size is 256 bytes, the maximum file size is 68,173,568
2445 *   bytes.
2446 *
2447 * * when the block size is 512 bytes, the maximum file size is 1,082,195,456
2448 *   bytes.
2449 * @endparblock
2450 */
2451#define CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK
2452
2453/* Generated from spec:/acfg/if/use-devfs-as-base-filesystem */
2454
2455/**
2456 * @brief This configuration option is a boolean feature define.
2457 *
2458 * In case this configuration option is defined, then an IMFS with a reduced
2459 * feature set will be the base filesystem (also known as root filesystem).
2460 *
2461 * @par Default Configuration
2462 * If this configuration option is undefined, then the described feature is not
2463 * enabled.
2464 *
2465 * @par Notes
2466 * @parblock
2467 * In case this configuration option is defined, then the following
2468 * configuration options will be defined as well
2469 *
2470 * * #CONFIGURE_IMFS_DISABLE_CHMOD,
2471 *
2472 * * #CONFIGURE_IMFS_DISABLE_CHOWN,
2473 *
2474 * * #CONFIGURE_IMFS_DISABLE_LINK,
2475 *
2476 * * #CONFIGURE_IMFS_DISABLE_MKNOD_FILE,
2477 *
2478 * * #CONFIGURE_IMFS_DISABLE_MOUNT,
2479 *
2480 * * #CONFIGURE_IMFS_DISABLE_READDIR,
2481 *
2482 * * #CONFIGURE_IMFS_DISABLE_READLINK,
2483 *
2484 * * #CONFIGURE_IMFS_DISABLE_RENAME,
2485 *
2486 * * #CONFIGURE_IMFS_DISABLE_RMNOD,
2487 *
2488 * * #CONFIGURE_IMFS_DISABLE_SYMLINK,
2489 *
2490 * * #CONFIGURE_IMFS_DISABLE_UTIME, and
2491 *
2492 * * #CONFIGURE_IMFS_DISABLE_UNMOUNT.
2493 *
2494 * In addition, a simplified path evaluation is enabled.  It allows only a look
2495 * up of absolute paths.
2496 *
2497 * This configuration of the IMFS is basically a device-only filesystem.  It is
2498 * comparable in functionality to the pseudo-filesystem name space provided
2499 * before RTEMS release 4.5.0.
2500 * @endparblock
2501 */
2502#define CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM
2503
2504/* Generated from spec:/acfg/if/use-miniimfs-as-base-filesystem */
2505
2506/**
2507 * @brief This configuration option is a boolean feature define.
2508 *
2509 * In case this configuration option is defined, then an IMFS with a reduced
2510 * feature set will be the base filesystem (also known as root filesystem).
2511 *
2512 * @par Default Configuration
2513 * If this configuration option is undefined, then the described feature is not
2514 * enabled.
2515 *
2516 * @par Notes
2517 * @parblock
2518 * In case this configuration option is defined, then the following
2519 * configuration options will be defined as well
2520 *
2521 * * #CONFIGURE_IMFS_DISABLE_CHMOD,
2522 *
2523 * * #CONFIGURE_IMFS_DISABLE_CHOWN,
2524 *
2525 * * #CONFIGURE_IMFS_DISABLE_LINK,
2526 *
2527 * * #CONFIGURE_IMFS_DISABLE_READLINK,
2528 *
2529 * * #CONFIGURE_IMFS_DISABLE_RENAME,
2530 *
2531 * * #CONFIGURE_IMFS_DISABLE_SYMLINK,
2532 *
2533 * * #CONFIGURE_IMFS_DISABLE_UTIME, and
2534 *
2535 * * #CONFIGURE_IMFS_DISABLE_UNMOUNT.
2536 * @endparblock
2537 */
2538#define CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
2539
2540/** @} */
2541
2542/* Generated from spec:/acfg/if/group-general */
2543
2544/**
2545 * @defgroup RTEMSApplConfigGeneralSystemConfiguration \
2546 *   General System Configuration
2547 *
2548 * @ingroup RTEMSApplConfig
2549 *
2550 * This section describes general system configuration options.
2551 *
2552 * @{
2553 */
2554
2555/* Generated from spec:/acfg/if/dirty-memory */
2556
2557/**
2558 * @brief This configuration option is a boolean feature define.
2559 *
2560 * In case this configuration option is defined, then the memory areas used for
2561 * the RTEMS Workspace and the C Program Heap are dirtied with a ``0xCF`` byte
2562 * pattern during system initialization.
2563 *
2564 * @par Default Configuration
2565 * If this configuration option is undefined, then the described feature is not
2566 * enabled.
2567 *
2568 * @par Notes
2569 * @parblock
2570 * Dirtying memory can add significantly to system initialization time.  It may
2571 * assist in finding code that incorrectly assumes the contents of free memory
2572 * areas is cleared to zero during system initialization.  In case
2573 * #CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY is also defined, then the memory is
2574 * first dirtied and then zeroed.
2575 *
2576 * See also #CONFIGURE_MALLOC_DIRTY.
2577 * @endparblock
2578 */
2579#define CONFIGURE_DIRTY_MEMORY
2580
2581/* Generated from spec:/acfg/if/disable-newlib-reentrancy */
2582
2583/**
2584 * @brief This configuration option is a boolean feature define.
2585 *
2586 * In case this configuration option is defined, then the Newlib reentrancy
2587 * support per thread is disabled and a global reentrancy structure is used.
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 * You can enable this option to reduce the size of the :term:`TCB`.  Use this
2595 * option with care, since it can lead to race conditions and undefined system
2596 * behaviour.  For example, #errno is no longer a thread-local variable if this
2597 * option is enabled.
2598 */
2599#define CONFIGURE_DISABLE_NEWLIB_REENTRANCY
2600
2601/* Generated from spec:/acfg/if/executive-ram-size */
2602
2603/**
2604 * @brief This configuration option is an integer define.
2605 *
2606 * The value of this configuration option defines the RTEMS Workspace size in
2607 * bytes.
2608 *
2609 * @par Default Value
2610 * If this configuration option is undefined, then the RTEMS Workspace and task
2611 * stack space size is calculated by ``<rtems/confdefs.h>`` based on the values
2612 * configuration options.
2613 *
2614 * @par Value Constraints
2615 * @parblock
2616 * The value of this configuration option shall satisfy all of the following
2617 * constraints:
2618 *
2619 * * It shall be greater than or equal to zero.
2620 *
2621 * * It shall be less than or equal to <a
2622 *   href="https://en.cppreference.com/w/c/types/integer">UINTPTR_MAX</a>.
2623 *
2624 * * It shall be less than or equal to a BSP-specific and application-specific
2625 *   value which depends on the size of the memory available to the
2626 *   application.
2627 * @endparblock
2628 *
2629 * @par Notes
2630 * This is an advanced configuration option.  Use it only if you know exactly
2631 * what you are doing.
2632 */
2633#define CONFIGURE_EXECUTIVE_RAM_SIZE
2634
2635/* Generated from spec:/acfg/if/extra-task-stacks */
2636
2637/**
2638 * @brief This configuration option is an integer define.
2639 *
2640 * The value of this configuration option defines the number of bytes the
2641 * applications wishes to add to the task stack requirements calculated by
2642 * ``<rtems/confdefs.h>``.
2643 *
2644 * @par Default Value
2645 * The default value is 0.
2646 *
2647 * @par Value Constraints
2648 * @parblock
2649 * The value of this configuration option shall satisfy all of the following
2650 * constraints:
2651 *
2652 * * It shall be greater than or equal to zero.
2653 *
2654 * * It shall be small enough so that the task stack space calculation carried
2655 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
2656 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
2657 * @endparblock
2658 *
2659 * @par Notes
2660 * This parameter is very important.  If the application creates tasks with
2661 * stacks larger then the minimum, then that memory is **not** accounted for by
2662 * ``<rtems/confdefs.h>``.
2663 */
2664#define CONFIGURE_EXTRA_TASK_STACKS
2665
2666/* Generated from spec:/acfg/if/initial-extensions */
2667
2668/**
2669 * @brief This configuration option is an initializer define.
2670 *
2671 * The value of this configuration option is used to initialize the table of
2672 * initial user extensions.
2673 *
2674 * @par Default Value
2675 * The default value is the empty list.
2676 *
2677 * @par Value Constraints
2678 * The value of this configuration option shall be a list of initializers for
2679 * structures of type ::rtems_extensions_table.
2680 *
2681 * @par Notes
2682 * The value of this configuration option is placed before the entries of
2683 * #BSP_INITIAL_EXTENSION and after the entries of all other initial user
2684 * extensions.
2685 */
2686#define CONFIGURE_INITIAL_EXTENSIONS
2687
2688/* Generated from spec:/acfg/if/interrupt-stack-size */
2689
2690/**
2691 * @brief This configuration option is an integer define.
2692 *
2693 * The value of this configuration option defines the size of an interrupt
2694 * stack in bytes.
2695 *
2696 * @par Default Value
2697 * The default value is #BSP_INTERRUPT_STACK_SIZE in case it is defined,
2698 * otherwise the default value is #CPU_STACK_MINIMUM_SIZE.
2699 *
2700 * @par Value Constraints
2701 * @parblock
2702 * The value of this configuration option shall satisfy all of the following
2703 * constraints:
2704 *
2705 * * It shall be greater than or equal to a BSP-specific and
2706 *   application-specific minimum value.
2707 *
2708 * * It shall be small enough so that the interrupt stack area calculation
2709 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
2710 *   <a href="https://en.cppreference.com/w/c/types/size_t">size_t</a>.
2711 *
2712 * * It shall be aligned according to #CPU_INTERRUPT_STACK_ALIGNMENT.
2713 * @endparblock
2714 *
2715 * @par Notes
2716 * @parblock
2717 * There is one interrupt stack available for each configured processor
2718 * (#CONFIGURE_MAXIMUM_PROCESSORS).  The interrupt stack areas are statically
2719 * allocated in a special linker section (``.rtemsstack.interrupt``). The
2720 * placement of this linker section is BSP-specific.
2721 *
2722 * Some BSPs use the interrupt stack as the initialization stack which is used
2723 * to perform the sequential system initialization before the multithreading is
2724 * started.
2725 *
2726 * The interrupt stacks are covered by the stack checker, see
2727 * #CONFIGURE_STACK_CHECKER_ENABLED.  However, using a too small interrupt
2728 * stack size may still result in undefined behaviour.
2729 *
2730 * In releases before RTEMS 5.1 the default value was
2731 * #CONFIGURE_MINIMUM_TASK_STACK_SIZE instead of #CPU_STACK_MINIMUM_SIZE.
2732 * @endparblock
2733 */
2734#define CONFIGURE_INTERRUPT_STACK_SIZE
2735
2736/* Generated from spec:/acfg/if/malloc-dirty */
2737
2738/**
2739 * @brief This configuration option is a boolean feature define.
2740 *
2741 * In case this configuration option is defined, then each memory area returned
2742 * by C Program Heap allocator functions such as malloc() is dirtied with a
2743 * ``0xCF`` byte pattern before it is handed over to the application.
2744 *
2745 * @par Default Configuration
2746 * If this configuration option is undefined, then the described feature is not
2747 * enabled.
2748 *
2749 * @par Notes
2750 * The dirtying performed by this option is carried out for each successful
2751 * memory allocation from the C Program Heap in contrast to
2752 * #CONFIGURE_DIRTY_MEMORY which dirties the memory only once during the system
2753 * initialization.
2754 */
2755#define CONFIGURE_MALLOC_DIRTY
2756
2757/* Generated from spec:/acfg/if/max-file-descriptors */
2758
2759/**
2760 * @brief This configuration option is an integer define.
2761 *
2762 * The value of this configuration option defines the maximum number of file
2763 * like objects that can be concurrently open.
2764 *
2765 * @par Default Value
2766 * The default value is 3.
2767 *
2768 * @par Value Constraints
2769 * @parblock
2770 * The value of this configuration option shall satisfy all of the following
2771 * constraints:
2772 *
2773 * * It shall be greater than or equal to zero.
2774 *
2775 * * It shall be less than or equal to <a
2776 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
2777 *
2778 * * It shall be less than or equal to a BSP-specific and application-specific
2779 *   value which depends on the size of the memory available to the
2780 *   application.
2781 * @endparblock
2782 *
2783 * @par Notes
2784 * The default value of three file descriptors allows RTEMS to support standard
2785 * input, output, and error I/O streams on ``/dev/console``.
2786 */
2787#define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS
2788
2789/* Generated from spec:/acfg/if/max-processors */
2790
2791/**
2792 * @brief This configuration option is an integer define.
2793 *
2794 * The value of this configuration option defines the maximum number of
2795 * processors an application intends to use.  The number of actually available
2796 * processors depends on the hardware and may be less.  It is recommended to
2797 * use the smallest value suitable for the application in order to save memory.
2798 * Each processor needs an IDLE task stack and interrupt stack for example.
2799 *
2800 * @par Default Value
2801 * The default value is 1.
2802 *
2803 * @par Value Constraints
2804 * @parblock
2805 * The value of this configuration option shall satisfy all of the following
2806 * constraints:
2807 *
2808 * * It shall be greater than or equal to one.
2809 *
2810 * * It shall be less than or equal to #CPU_MAXIMUM_PROCESSORS.
2811 * @endparblock
2812 *
2813 * @par Notes
2814 * @parblock
2815 * If there are more processors available than configured, the rest will be
2816 * ignored.
2817 *
2818 * This configuration option is only evaluated in SMP configurations (e.g.
2819 * RTEMS was built with the ``--enable-smp`` build configuration option).  In
2820 * all other configurations it has no effect.
2821 * @endparblock
2822 */
2823#define CONFIGURE_MAXIMUM_PROCESSORS
2824
2825/* Generated from spec:/acfg/if/max-thread-name-size */
2826
2827/**
2828 * @brief This configuration option is an integer define.
2829 *
2830 * The value of this configuration option defines the maximum thread name size
2831 * including the terminating ``NUL`` character.
2832 *
2833 * @par Default Value
2834 * The default value is 16.
2835 *
2836 * @par Value Constraints
2837 * @parblock
2838 * The value of this configuration option shall satisfy all of the following
2839 * constraints:
2840 *
2841 * * It shall be greater than or equal to zero.
2842 *
2843 * * It shall be less than or equal to <a
2844 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
2845 *
2846 * * It shall be less than or equal to a BSP-specific and application-specific
2847 *   value which depends on the size of the memory available to the
2848 *   application.
2849 * @endparblock
2850 *
2851 * @par Notes
2852 * @parblock
2853 * The default value was chosen for Linux compatibility, see <a
2854 * href=http://man7.org/linux/man-pages/man3/pthread_setname_np.3.html>PTHREAD_SETNAME_NP(3)</a>.
2855 *
2856 * The size of the thread control block is increased by the maximum thread name
2857 * size.
2858 *
2859 * This configuration option is available since RTEMS 5.1.
2860 * @endparblock
2861 */
2862#define CONFIGURE_MAXIMUM_THREAD_NAME_SIZE
2863
2864/* Generated from spec:/acfg/if/memory-overhead */
2865
2866/**
2867 * @brief This configuration option is an integer define.
2868 *
2869 * The value of this configuration option defines the number of kilobytes the
2870 * application wishes to add to the RTEMS Workspace size calculated by
2871 * ``<rtems/confdefs.h>``.
2872 *
2873 * @par Default Value
2874 * The default value is 0.
2875 *
2876 * @par Value Constraints
2877 * @parblock
2878 * The value of this configuration option shall satisfy all of the following
2879 * constraints:
2880 *
2881 * * It shall be greater than or equal to zero.
2882 *
2883 * * It shall be less than or equal to a BSP-specific and application-specific
2884 *   value which depends on the size of the memory available to the
2885 *   application.
2886 *
2887 * * It shall be small enough so that the RTEMS Workspace size calculation
2888 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
2889 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
2890 * @endparblock
2891 *
2892 * @par Notes
2893 * This configuration option should only be used when it is suspected that a
2894 * bug in ``<rtems/confdefs.h>`` has resulted in an underestimation.  Typically
2895 * the memory allocation will be too low when an application does not account
2896 * for all message queue buffers or task stacks, see
2897 * #CONFIGURE_MESSAGE_BUFFER_MEMORY.
2898 */
2899#define CONFIGURE_MEMORY_OVERHEAD
2900
2901/* Generated from spec:/acfg/if/message-buffer-memory */
2902
2903/**
2904 * @brief This configuration option is an integer define.
2905 *
2906 * The value of this configuration option defines the number of bytes reserved
2907 * for message queue buffers in the RTEMS Workspace.
2908 *
2909 * @par Default Value
2910 * The default value is 0.
2911 *
2912 * @par Value Constraints
2913 * @parblock
2914 * The value of this configuration option shall satisfy all of the following
2915 * constraints:
2916 *
2917 * * It shall be greater than or equal to zero.
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 *
2923 * * It shall be small enough so that the RTEMS Workspace size calculation
2924 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
2925 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
2926 * @endparblock
2927 *
2928 * @par Notes
2929 * @parblock
2930 * The configuration options #CONFIGURE_MAXIMUM_MESSAGE_QUEUES and
2931 * #CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES define only how many message queues
2932 * can be created by the application.  The memory for the message buffers is
2933 * configured by this option.  For each message queue you have to reserve some
2934 * memory for the message buffers.  The size depends on the maximum number of
2935 * pending messages and the maximum size of the messages of a message queue.
2936 * Use the ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE()`` macro to specify the
2937 * message buffer memory for each message queue and sum them up to define the
2938 * value for ``CONFIGURE_MAXIMUM_MESSAGE_QUEUES``.
2939 *
2940 * The interface for the ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE()`` help macro
2941 * is as follows:
2942 *
2943 * @code
2944 * CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( max_messages, max_msg_size )
2945 * @endcode
2946 *
2947 * Where ``max_messages`` is the maximum number of pending messages and
2948 * ``max_msg_size`` is the maximum size in bytes of the messages of the
2949 * corresponding message queue.  Both parameters shall be compile time
2950 * constants.  Not using this help macro (e.g. just using ``max_messages *
2951 * max_msg_size``) may result in an underestimate of the RTEMS Workspace size.
2952 *
2953 * The following example illustrates how the
2954 * ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE()`` help macro can be used to assist
2955 * in calculating the message buffer memory required.  In this example, there
2956 * are two message queues used in this application.  The first message queue
2957 * has a maximum of 24 pending messages with the message structure defined by
2958 * the type ``one_message_type``.  The other message queue has a maximum of 500
2959 * pending messages with the message structure defined by the type
2960 * ``other_message_type``.
2961 *
2962 * @code
2963 * #define CONFIGURE_MESSAGE_BUFFER_MEMORY ( \
2964 *     CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( \
2965 *       24, \
2966 *       sizeof( one_message_type ) \
2967 *     ) \
2968 *     + CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( \
2969 *       500, \
2970 *       sizeof( other_message_type ) \
2971 *     ) \
2972 *   )
2973 * @endcode
2974 * @endparblock
2975 */
2976#define CONFIGURE_MESSAGE_BUFFER_MEMORY
2977
2978/* Generated from spec:/acfg/if/microseconds-per-tick */
2979
2980/**
2981 * @brief This configuration option is an integer define.
2982 *
2983 * The value of this configuration option defines the length of time in
2984 * microseconds between clock ticks (clock tick quantum).
2985 *
2986 * When the clock tick quantum value is too low, the system will spend so much
2987 * time processing clock ticks that it does not have processing time available
2988 * to perform application work. In this case, the system will become
2989 * unresponsive.
2990 *
2991 * The lowest practical time quantum varies widely based upon the speed of the
2992 * target hardware and the architectural overhead associated with interrupts.
2993 * In general terms, you do not want to configure it lower than is needed for
2994 * the application.
2995 *
2996 * The clock tick quantum should be selected such that it all blocking and
2997 * delay times in the application are evenly divisible by it. Otherwise,
2998 * rounding errors will be introduced which may negatively impact the
2999 * application.
3000 *
3001 * @par Default Value
3002 * The default value is 10000.
3003 *
3004 * @par Value Constraints
3005 * @parblock
3006 * The value of this configuration option shall satisfy all of the following
3007 * constraints:
3008 *
3009 * * It shall be greater than or equal to a value defined by the Clock Driver.
3010 *
3011 * * It shall be less than or equal to a value defined by the Clock Driver.
3012 *
3013 * * The resulting clock ticks per second should be an integer.
3014 * @endparblock
3015 *
3016 * @par Notes
3017 * @parblock
3018 * This configuration option has no impact if the Clock Driver is not
3019 * configured, see #CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER.
3020 *
3021 * There may be Clock Driver specific limits on the resolution or maximum value
3022 * of a clock tick quantum.
3023 * @endparblock
3024 */
3025#define CONFIGURE_MICROSECONDS_PER_TICK
3026
3027/* Generated from spec:/acfg/if/min-task-stack-size */
3028
3029/**
3030 * @brief This configuration option is an integer define.
3031 *
3032 * The value of this configuration option defines the minimum stack size in
3033 * bytes for every user task or thread in the system.
3034 *
3035 * @par Default Value
3036 * The default value is #CPU_STACK_MINIMUM_SIZE.
3037 *
3038 * @par Value Constraints
3039 * @parblock
3040 * The value of this configuration option shall satisfy all of the following
3041 * constraints:
3042 *
3043 * * It shall be small enough so that the task stack space calculation carried
3044 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
3045 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3046 *
3047 * * It shall be greater than or equal to a BSP-specific and
3048 *   application-specific minimum value.
3049 * @endparblock
3050 *
3051 * @par Notes
3052 * @parblock
3053 * Adjusting this parameter should be done with caution.  Examining the actual
3054 * stack usage using the stack checker usage reporting facility is recommended
3055 * (see also #CONFIGURE_STACK_CHECKER_ENABLED).
3056 *
3057 * This parameter can be used to lower the minimum from that recommended. This
3058 * can be used in low memory systems to reduce memory consumption for stacks.
3059 * However, this shall be done with caution as it could increase the
3060 * possibility of a blown task stack.
3061 *
3062 * This parameter can be used to increase the minimum from that recommended.
3063 * This can be used in higher memory systems to reduce the risk of stack
3064 * overflow without performing analysis on actual consumption.
3065 *
3066 * By default, this configuration parameter defines also the minimum stack size
3067 * of POSIX threads.  This can be changed with the
3068 * #CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE configuration option.
3069 *
3070 * In releases before RTEMS 5.1 the ``CONFIGURE_MINIMUM_TASK_STACK_SIZE`` was
3071 * used to define the default value of #CONFIGURE_INTERRUPT_STACK_SIZE.
3072 * @endparblock
3073 */
3074#define CONFIGURE_MINIMUM_TASK_STACK_SIZE
3075
3076/* Generated from spec:/acfg/if/stack-checker-enabled */
3077
3078/**
3079 * @brief This configuration option is a boolean feature define.
3080 *
3081 * In case this configuration option is defined, then the stack checker is
3082 * enabled.
3083 *
3084 * @par Default Configuration
3085 * If this configuration option is undefined, then the described feature is not
3086 * enabled.
3087 *
3088 * @par Notes
3089 * @parblock
3090 * The stack checker performs run-time stack bounds checking.  This increases
3091 * the time required to create tasks as well as adding overhead to each context
3092 * switch.
3093 *
3094 * In 4.9 and older, this configuration option was named ``STACK_CHECKER_ON``.
3095 * @endparblock
3096 */
3097#define CONFIGURE_STACK_CHECKER_ENABLED
3098
3099/* Generated from spec:/acfg/if/ticks-per-time-slice */
3100
3101/**
3102 * @brief This configuration option is an integer define.
3103 *
3104 * The value of this configuration option defines the length of the timeslice
3105 * quantum in ticks for each task.
3106 *
3107 * @par Default Value
3108 * The default value is 50.
3109 *
3110 * @par Value Constraints
3111 * @parblock
3112 * The value of this configuration option shall satisfy all of the following
3113 * constraints:
3114 *
3115 * * It shall be greater than or equal to zero.
3116 *
3117 * * It shall be less than or equal to <a
3118 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3119 * @endparblock
3120 *
3121 * @par Notes
3122 * This configuration option has no impact if the Clock Driver is not
3123 * configured, see #CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER.
3124 */
3125#define CONFIGURE_TICKS_PER_TIMESLICE
3126
3127/* Generated from spec:/acfg/if/unified-work-areas */
3128
3129/**
3130 * @brief This configuration option is a boolean feature define.
3131 *
3132 * In case this configuration option is defined, then the RTEMS Workspace and
3133 * the C Program Heap will be one pool of memory.
3134 *
3135 * @par Default Configuration
3136 * If this configuration option is undefined, then there will be separate
3137 * memory pools for the RTEMS Workspace and C Program Heap.
3138 *
3139 * @par Notes
3140 * @parblock
3141 * Having separate pools does have some advantages in the event a task blows a
3142 * stack or writes outside its memory area. However, in low memory systems the
3143 * overhead of the two pools plus the potential for unused memory in either
3144 * pool is very undesirable.
3145 *
3146 * In high memory environments, this is desirable when you want to use the <a
3147 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3148 * Objects</a> option.  You will be able to create objects until you run out of
3149 * all available memory rather then just until you run out of RTEMS Workspace.
3150 * @endparblock
3151 */
3152#define CONFIGURE_UNIFIED_WORK_AREAS
3153
3154/* Generated from spec:/acfg/if/unlimited-allocation-size */
3155
3156/**
3157 * @brief This configuration option is an integer define.
3158 *
3159 * If #CONFIGURE_UNLIMITED_OBJECTS is defined, then the value of this
3160 * configuration option defines the default objects maximum of all object
3161 * classes supporting <a
3162 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3163 * Objects</a> to ``rtems_resource_unlimited(
3164 * CONFIGURE_UNLIMITED_ALLOCATION_SIZE )``.
3165 *
3166 * @par Default Value
3167 * The default value is 8.
3168 *
3169 * @par Value Constraints
3170 * The value of this configuration option shall meet the constraints of all
3171 * object classes to which it is applied.
3172 *
3173 * @par Notes
3174 * @parblock
3175 * By allowing users to declare all resources as being unlimited the user can
3176 * avoid identifying and limiting the resources used.
3177 *
3178 * The object maximum of each class can be configured also individually using
3179 * the rtems_resource_unlimited() macro.
3180 * @endparblock
3181 */
3182#define CONFIGURE_UNLIMITED_ALLOCATION_SIZE
3183
3184/* Generated from spec:/acfg/if/unlimited-objects */
3185
3186/**
3187 * @brief This configuration option is a boolean feature define.
3188 *
3189 * In case this configuration option is defined, then unlimited objects are
3190 * used by default.
3191 *
3192 * @par Default Configuration
3193 * If this configuration option is undefined, then the described feature is not
3194 * enabled.
3195 *
3196 * @par Notes
3197 * @parblock
3198 * When using unlimited objects, it is common practice to also specify
3199 * #CONFIGURE_UNIFIED_WORK_AREAS so the system operates with a single pool of
3200 * memory for both RTEMS Workspace and C Program Heap.
3201 *
3202 * This option does not override an explicit configuration for a particular
3203 * object class by the user.
3204 *
3205 * See also #CONFIGURE_UNLIMITED_ALLOCATION_SIZE.
3206 * @endparblock
3207 */
3208#define CONFIGURE_UNLIMITED_OBJECTS
3209
3210/* Generated from spec:/acfg/if/verbose-system-init */
3211
3212/**
3213 * @brief This configuration option is a boolean feature define.
3214 *
3215 * In case this configuration option is defined, then the system initialization
3216 * is verbose.
3217 *
3218 * @par Default Configuration
3219 * If this configuration option is undefined, then the described feature is not
3220 * enabled.
3221 *
3222 * @par Notes
3223 * You may use this feature to debug system initialization issues.  The
3224 * printk() function is used to print the information.
3225 */
3226#define CONFIGURE_VERBOSE_SYSTEM_INITIALIZATION
3227
3228/* Generated from spec:/acfg/if/zero-workspace-automatically */
3229
3230/**
3231 * @brief This configuration option is a boolean feature define.
3232 *
3233 * In case this configuration option is defined, then the memory areas used for
3234 * the RTEMS Workspace and the C Program Heap are zeroed with a ``0x00`` byte
3235 * pattern during system initialization.
3236 *
3237 * @par Default Configuration
3238 * If this configuration option is undefined, then the described feature is not
3239 * enabled.
3240 *
3241 * @par Notes
3242 * Zeroing memory can add significantly to the system initialization time. It
3243 * is not necessary for RTEMS but is often assumed by support libraries.  In
3244 * case #CONFIGURE_DIRTY_MEMORY is also defined, then the memory is first
3245 * dirtied and then zeroed.
3246 */
3247#define CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY
3248
3249/** @} */
3250
3251/* Generated from spec:/acfg/if/group-idle */
3252
3253/**
3254 * @defgroup RTEMSApplConfigIdleTaskConfiguration Idle Task Configuration
3255 *
3256 * @ingroup RTEMSApplConfig
3257 *
3258 * This section describes configuration options related to the idle tasks.
3259 *
3260 * @{
3261 */
3262
3263/* Generated from spec:/acfg/if/idle-task-body */
3264
3265/**
3266 * @brief This configuration option is an initializer define.
3267 *
3268 * The value of this configuration option initializes the IDLE thread body.
3269 *
3270 * @par Default Value
3271 * If #BSP_IDLE_TASK_BODY is defined, then this will be the default value,
3272 * otherwise the default value is ``_CPU_Thread_Idle_body``.
3273 *
3274 * @par Value Constraints
3275 * The value of this configuration option shall be defined to a valid function
3276 * pointer of the type ``void *( *idle_body )( uintptr_t )``.
3277 *
3278 * @par Notes
3279 * @parblock
3280 * IDLE threads shall not block.  A blocking IDLE thread results in undefined
3281 * system behaviour because the scheduler assume that at least one ready thread
3282 * exists.
3283 *
3284 * IDLE threads can be used to initialize the application, see configuration
3285 * option #CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION.
3286 * @endparblock
3287 */
3288#define CONFIGURE_IDLE_TASK_BODY
3289
3290/* Generated from spec:/acfg/if/idle-task-init-appl */
3291
3292/**
3293 * @brief This configuration option is a boolean feature define.
3294 *
3295 * This configuration option is defined to indicate that the user has
3296 * configured **no** user initialization tasks or threads and that the user
3297 * provided IDLE task will perform application initialization and then
3298 * transform itself into an IDLE task.
3299 *
3300 * @par Default Configuration
3301 * If this configuration option is undefined, then the user is assumed to
3302 * provide one or more initialization tasks.
3303 *
3304 * @par Notes
3305 * @parblock
3306 * If you use this option be careful, the user IDLE task **cannot** block at
3307 * all during the initialization sequence.  Further, once application
3308 * initialization is complete, it shall make itself preemptible and enter an
3309 * idle body loop.
3310 *
3311 * The IDLE task shall run at the lowest priority of all tasks in the system.
3312 *
3313 * If this configuration option is defined, then it is mandatory to configure a
3314 * user IDLE task with the #CONFIGURE_IDLE_TASK_BODY configuration option,
3315 * otherwise a compile time error in the configuration file will occur.
3316 *
3317 * The application shall define exactly one of the following configuration
3318 * options
3319 *
3320 * * #CONFIGURE_RTEMS_INIT_TASKS_TABLE,
3321 *
3322 * * #CONFIGURE_POSIX_INIT_THREAD_TABLE, or
3323 *
3324 * * ``CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION``
3325 *
3326 * otherwise a compile time error in the configuration file will occur.
3327 * @endparblock
3328 */
3329#define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
3330
3331/* Generated from spec:/acfg/if/idle-task-stack-size */
3332
3333/**
3334 * @brief This configuration option is an integer define.
3335 *
3336 * The value of this configuration option defines the task stack size for an
3337 * IDLE task.
3338 *
3339 * @par Default Value
3340 * The default value is #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
3341 *
3342 * @par Value Constraints
3343 * @parblock
3344 * The value of this configuration option shall satisfy all of the following
3345 * constraints:
3346 *
3347 * * It shall be greater than or equal to a BSP-specific and
3348 *   application-specific minimum value.
3349 *
3350 * * It shall be small enough so that the IDLE task stack area calculation
3351 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
3352 *   <a href="https://en.cppreference.com/w/c/types/size_t">size_t</a>.
3353 * @endparblock
3354 *
3355 * @par Notes
3356 * In SMP configurations, there is one IDLE task per configured processor, see
3357 * #CONFIGURE_MAXIMUM_PROCESSORS.
3358 */
3359#define CONFIGURE_IDLE_TASK_STACK_SIZE
3360
3361/** @} */
3362
3363/* Generated from spec:/acfg/if/group-mpci */
3364
3365/**
3366 * @defgroup RTEMSApplConfigMultiprocessingConfiguration \
3367 *   Multiprocessing Configuration
3368 *
3369 * @ingroup RTEMSApplConfig
3370 *
3371 * This section describes multiprocessing related configuration options.  The
3372 * options are only used if RTEMS was built with the
3373 * ``--enable-multiprocessing`` build configuration option.  Additionally, this
3374 * class of configuration options are only applicable if the configuration
3375 * option #CONFIGURE_MP_APPLICATION is defined.  The multiprocessing (MPCI)
3376 * support must not be confused with the SMP support.
3377 *
3378 * @{
3379 */
3380
3381/* Generated from spec:/acfg/if/mp-extra-server-stack */
3382
3383/**
3384 * @brief This configuration option is an integer define.
3385 *
3386 * The value of this configuration option defines the number of bytes the
3387 * applications wishes to add to the MPCI task stack on top of
3388 * #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
3389 *
3390 * @par Default Value
3391 * The default value is 0.
3392 *
3393 * @par Value Constraints
3394 * @parblock
3395 * The value of this configuration option shall satisfy all of the following
3396 * constraints:
3397 *
3398 * * It shall be greater than or equal to zero.
3399 *
3400 * * It shall be less than or equal to <a
3401 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3402 *
3403 * * It shall be small enough so that the MPCI receive server stack area
3404 *   calculation carried out by ``<rtems/confdefs.h>`` does not overflow an
3405 *   integer of type <a
3406 *   href="https://en.cppreference.com/w/c/types/size_t">size_t</a>.
3407 * @endparblock
3408 *
3409 * @par Notes
3410 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3411 * defined.
3412 */
3413#define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
3414
3415/* Generated from spec:/acfg/if/mp-appl */
3416
3417/**
3418 * @brief This configuration option is a boolean feature define.
3419 *
3420 * This configuration option is defined to indicate that the application
3421 * intends to be part of a multiprocessing configuration.  Additional
3422 * configuration options are assumed to be provided.
3423 *
3424 * @par Default Configuration
3425 * If this configuration option is undefined, then the multiprocessing services
3426 * are not initialized.
3427 *
3428 * @par Notes
3429 * This configuration option shall be undefined if the multiprocessing support
3430 * is not enabled (e.g. RTEMS was built without the
3431 * ``--enable-multiprocessing`` build configuration option).  Otherwise a
3432 * compile time error in the configuration file will occur.
3433 */
3434#define CONFIGURE_MP_APPLICATION
3435
3436/* Generated from spec:/acfg/if/mp-max-global-objects */
3437
3438/**
3439 * @brief This configuration option is an integer define.
3440 *
3441 * The value of this configuration option defines the maximum number of
3442 * concurrently active global objects in a multiprocessor system.
3443 *
3444 * @par Default Value
3445 * The default value is 32.
3446 *
3447 * @par Value Constraints
3448 * @parblock
3449 * The value of this configuration option shall satisfy all of the following
3450 * constraints:
3451 *
3452 * * It shall be greater than or equal to zero.
3453 *
3454 * * It shall be less than or equal to <a
3455 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3456 * @endparblock
3457 *
3458 * @par Notes
3459 * @parblock
3460 * This value corresponds to the total number of objects which can be created
3461 * with the #RTEMS_GLOBAL attribute.
3462 *
3463 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3464 * defined.
3465 * @endparblock
3466 */
3467#define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
3468
3469/* Generated from spec:/acfg/if/mp-max-nodes */
3470
3471/**
3472 * @brief This configuration option is an integer define.
3473 *
3474 * The value of this configuration option defines the maximum number of nodes
3475 * in a multiprocessor system.
3476 *
3477 * @par Default Value
3478 * The default value is 2.
3479 *
3480 * @par Value Constraints
3481 * @parblock
3482 * The value of this configuration option shall satisfy all of the following
3483 * constraints:
3484 *
3485 * * It shall be greater than or equal to zero.
3486 *
3487 * * It shall be less than or equal to <a
3488 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3489 * @endparblock
3490 *
3491 * @par Notes
3492 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3493 * defined.
3494 */
3495#define CONFIGURE_MP_MAXIMUM_NODES
3496
3497/* Generated from spec:/acfg/if/mp-max-proxies */
3498
3499/**
3500 * @brief This configuration option is an integer define.
3501 *
3502 * The value of this configuration option defines the maximum number of
3503 * concurrently active thread/task proxies on this node in a multiprocessor
3504 * system.
3505 *
3506 * @par Default Value
3507 * The default value is 32.
3508 *
3509 * @par Value Constraints
3510 * @parblock
3511 * The value of this configuration option shall satisfy all of the following
3512 * constraints:
3513 *
3514 * * It shall be greater than or equal to zero.
3515 *
3516 * * It shall be less than or equal to <a
3517 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3518 * @endparblock
3519 *
3520 * @par Notes
3521 * @parblock
3522 * Since a proxy is used to represent a remote task/thread which is blocking on
3523 * this node. This configuration parameter reflects the maximum number of
3524 * remote tasks/threads which can be blocked on objects on this node, see <a
3525 * href=https://docs.rtems.org/branches/master/c-user/multiprocessing.html#proxies>Proxies</a>.
3526 *
3527 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3528 * defined.
3529 * @endparblock
3530 */
3531#define CONFIGURE_MP_MAXIMUM_PROXIES
3532
3533/* Generated from spec:/acfg/if/mp-mpci-table-pointer */
3534
3535/**
3536 * @brief This configuration option is an initializer define.
3537 *
3538 * The value of this configuration option initializes the MPCI Configuration
3539 * Table.
3540 *
3541 * @par Default Value
3542 * The default value is ``&MPCI_table``.
3543 *
3544 * @par Value Constraints
3545 * The value of this configuration option shall be a pointer to
3546 * ::rtems_mpci_table.
3547 *
3548 * @par Notes
3549 * @parblock
3550 * RTEMS provides a Shared Memory MPCI Device Driver which can be used on any
3551 * Multiprocessor System assuming the BSP provides the proper set of supporting
3552 * methods.
3553 *
3554 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3555 * defined.
3556 * @endparblock
3557 */
3558#define CONFIGURE_MP_MPCI_TABLE_POINTER
3559
3560/* Generated from spec:/acfg/if/mp-node-number */
3561
3562/**
3563 * @brief This configuration option is an integer define.
3564 *
3565 * The value of this configuration option defines the node number of this node
3566 * in a multiprocessor system.
3567 *
3568 * @par Default Value
3569 * The default value is ``NODE_NUMBER``.
3570 *
3571 * @par Value Constraints
3572 * @parblock
3573 * The value of this configuration option shall satisfy all of the following
3574 * constraints:
3575 *
3576 * * It shall be greater than or equal to zero.
3577 *
3578 * * It shall be less than or equal to <a
3579 *   href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>.
3580 * @endparblock
3581 *
3582 * @par Notes
3583 * @parblock
3584 * In the RTEMS Multiprocessing Test Suite, the node number is derived from the
3585 * Makefile variable ``NODE_NUMBER``. The same code is compiled with the
3586 * ``NODE_NUMBER`` set to different values. The test programs behave
3587 * differently based upon their node number.
3588 *
3589 * This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
3590 * defined.
3591 * @endparblock
3592 */
3593#define CONFIGURE_MP_NODE_NUMBER
3594
3595/** @} */
3596
3597/* Generated from spec:/acfg/if/group-posix */
3598
3599/**
3600 * @defgroup RTEMSApplConfigPOSIXAPIConfiguration POSIX API Configuration
3601 *
3602 * @ingroup RTEMSApplConfig
3603 *
3604 * This section describes configuration options related to the POSIX API.  Most
3605 * POSIX API objects are available by default since RTEMS 5.1.  The queued
3606 * signals and timers are only available if RTEMS was built with the
3607 * ``--enable-posix`` build configuration option.
3608 *
3609 * @{
3610 */
3611
3612/* Generated from spec:/acfg/if/max-posix-keys */
3613
3614/**
3615 * @brief This configuration option is an integer define.
3616 *
3617 * The value of this configuration option defines the maximum number of POSIX
3618 * API Keys that can be concurrently active.
3619 *
3620 * @par Default Value
3621 * The default value is 0.
3622 *
3623 * @par Value Constraints
3624 * @parblock
3625 * The value of this configuration option shall satisfy all of the following
3626 * constraints:
3627 *
3628 * * It shall be greater than or equal to zero.
3629 *
3630 * * It shall be less than or equal to 65535.
3631 *
3632 * * It shall be less than or equal to a BSP-specific and application-specific
3633 *   value which depends on the size of the memory available to the
3634 *   application.
3635 *
3636 * * It may be defined through rtems_resource_unlimited() the enable unlimited
3637 *   objects for the object class, if the value passed to
3638 *   rtems_resource_unlimited() satisfies all other constraints of the
3639 *   configuration option.
3640 * @endparblock
3641 *
3642 * @par Notes
3643 * This object class can be configured in unlimited allocation mode, see <a
3644 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3645 * Objects</a>.
3646 */
3647#define CONFIGURE_MAXIMUM_POSIX_KEYS
3648
3649/* Generated from spec:/acfg/if/max-posix-key-value-pairs */
3650
3651/**
3652 * @brief This configuration option is an integer define.
3653 *
3654 * The value of this configuration option defines the maximum number of key
3655 * value pairs used by POSIX API Keys that can be concurrently active.
3656 *
3657 * @par Default Value
3658 * The default value is #CONFIGURE_MAXIMUM_POSIX_KEYS *
3659 * #CONFIGURE_MAXIMUM_TASKS + #CONFIGURE_MAXIMUM_POSIX_THREADS.
3660 *
3661 * @par Value Constraints
3662 * @parblock
3663 * The value of this configuration option shall satisfy all of the following
3664 * constraints:
3665 *
3666 * * It shall be greater than or equal to zero.
3667 *
3668 * * It shall be less than or equal to 65535.
3669 *
3670 * * It shall be less than or equal to a BSP-specific and application-specific
3671 *   value which depends on the size of the memory available to the
3672 *   application.
3673 *
3674 * * It may be defined through rtems_resource_unlimited() the enable unlimited
3675 *   objects for the object class, if the value passed to
3676 *   rtems_resource_unlimited() satisfies all other constraints of the
3677 *   configuration option.
3678 * @endparblock
3679 *
3680 * @par Notes
3681 * @parblock
3682 * This object class can be configured in unlimited allocation mode, see <a
3683 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3684 * Objects</a>.
3685 *
3686 * A key value pair is created by pthread_setspecific() if the value is not <a
3687 * href="https://en.cppreference.com/w/c/types/NULL">NULL</a>, otherwise it is
3688 * deleted.
3689 * @endparblock
3690 */
3691#define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS
3692
3693/* Generated from spec:/acfg/if/max-posix-message-queues */
3694
3695/**
3696 * @brief This configuration option is an integer define.
3697 *
3698 * The value of this configuration option defines the maximum number of POSIX
3699 * API Message Queues that can be concurrently active.
3700 *
3701 * @par Default Value
3702 * The default value is 0.
3703 *
3704 * @par Value Constraints
3705 * @parblock
3706 * The value of this configuration option shall satisfy all of the following
3707 * constraints:
3708 *
3709 * * It shall be greater than or equal to zero.
3710 *
3711 * * It shall be less than or equal to 65535.
3712 *
3713 * * It shall be less than or equal to a BSP-specific and application-specific
3714 *   value which depends on the size of the memory available to the
3715 *   application.
3716 *
3717 * * It shall be small enough so that the RTEMS Workspace size calculation
3718 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
3719 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3720 *
3721 * * It may be defined through rtems_resource_unlimited() the enable unlimited
3722 *   objects for the object class, if the value passed to
3723 *   rtems_resource_unlimited() satisfies all other constraints of the
3724 *   configuration option.
3725 * @endparblock
3726 *
3727 * @par Notes
3728 * This object class can be configured in unlimited allocation mode, see <a
3729 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3730 * Objects</a>.  You have to account for the memory used to store the messages
3731 * of each message queue, see #CONFIGURE_MESSAGE_BUFFER_MEMORY.
3732 */
3733#define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES
3734
3735/* Generated from spec:/acfg/if/max-posix-queued-signals */
3736
3737/**
3738 * @brief This configuration option is an integer define.
3739 *
3740 * The value of this configuration option defines the maximum number of POSIX
3741 * API Queued Signals that can be concurrently active.
3742 *
3743 * @par Default Value
3744 * The default value is 0.
3745 *
3746 * @par Value Constraints
3747 * @parblock
3748 * The value of this configuration option shall satisfy all of the following
3749 * constraints:
3750 *
3751 * * It shall be greater than or equal to zero.
3752 *
3753 * * It shall be less than or equal to a BSP-specific and application-specific
3754 *   value which depends on the size of the memory available to the
3755 *   application.
3756 *
3757 * * It shall be small enough so that the RTEMS Workspace size calculation
3758 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
3759 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3760 *
3761 * * It shall be zero if the POSIX API is not enabled (e.g. RTEMS was built
3762 *   without the ``RTEMS_POSIX_API = True`` build configuration option).
3763 *   Otherwise a compile time error in the configuration file will occur.
3764 * @endparblock
3765 *
3766 * @par Notes
3767 * @parblock
3768 * Unlimited objects are not available for queued signals.
3769 *
3770 * Queued signals are only available if RTEMS was built with the
3771 * ``--enable-posix`` build configuration option.
3772 * @endparblock
3773 */
3774#define CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS
3775
3776/* Generated from spec:/acfg/if/max-posix-semaphores */
3777
3778/**
3779 * @brief This configuration option is an integer define.
3780 *
3781 * The value of this configuration option defines the maximum number of POSIX
3782 * API Named Semaphores that can be concurrently active.
3783 *
3784 * @par Default Value
3785 * The default value is 0.
3786 *
3787 * @par Value Constraints
3788 * @parblock
3789 * The value of this configuration option shall satisfy all of the following
3790 * constraints:
3791 *
3792 * * It shall be greater than or equal to zero.
3793 *
3794 * * It shall be less than or equal to 65535.
3795 *
3796 * * It shall be less than or equal to a BSP-specific and application-specific
3797 *   value which depends on the size of the memory available to the
3798 *   application.
3799 *
3800 * * It shall be small enough so that the RTEMS Workspace size calculation
3801 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
3802 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3803 *
3804 * * It may be defined through rtems_resource_unlimited() the enable unlimited
3805 *   objects for the object class, if the value passed to
3806 *   rtems_resource_unlimited() satisfies all other constraints of the
3807 *   configuration option.
3808 * @endparblock
3809 *
3810 * @par Notes
3811 * @parblock
3812 * This object class can be configured in unlimited allocation mode, see <a
3813 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3814 * Objects</a>.
3815 *
3816 * Named semaphores are created with sem_open().  Semaphores initialized with
3817 * sem_init() are not affected by this configuration option since the storage
3818 * space for these semaphores is user-provided.
3819 * @endparblock
3820 */
3821#define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
3822
3823/* Generated from spec:/acfg/if/max-posix-shms */
3824
3825/**
3826 * @brief This configuration option is an integer define.
3827 *
3828 * The value of this configuration option defines the maximum number of POSIX
3829 * API Shared Memory objects that can be concurrently active.
3830 *
3831 * @par Default Value
3832 * The default value is 0.
3833 *
3834 * @par Value Constraints
3835 * @parblock
3836 * The value of this configuration option shall satisfy all of the following
3837 * constraints:
3838 *
3839 * * It shall be greater than or equal to zero.
3840 *
3841 * * It shall be less than or equal to 65535.
3842 *
3843 * * It shall be less than or equal to a BSP-specific and application-specific
3844 *   value which depends on the size of the memory available to the
3845 *   application.
3846 *
3847 * * It shall be small enough so that the RTEMS Workspace size calculation
3848 *   carried out by ``<rtems/confdefs.h>`` does not overflow an integer of type
3849 *   <a href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3850 *
3851 * * It may be defined through rtems_resource_unlimited() the enable unlimited
3852 *   objects for the object class, if the value passed to
3853 *   rtems_resource_unlimited() satisfies all other constraints of the
3854 *   configuration option.
3855 * @endparblock
3856 *
3857 * @par Notes
3858 * This object class can be configured in unlimited allocation mode, see <a
3859 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3860 * Objects</a>.
3861 */
3862#define CONFIGURE_MAXIMUM_POSIX_SHMS
3863
3864/* Generated from spec:/acfg/if/max-posix-threads */
3865
3866/**
3867 * @brief This configuration option is an integer define.
3868 *
3869 * The value of this configuration option defines the maximum number of POSIX
3870 * API Threads that can be concurrently active.
3871 *
3872 * @par Default Value
3873 * The default value is 0.
3874 *
3875 * @par Value Constraints
3876 * @parblock
3877 * The value of this configuration option shall satisfy all of the following
3878 * constraints:
3879 *
3880 * * It shall be greater than or equal to zero.
3881 *
3882 * * It shall be less than or equal to 65535.
3883 *
3884 * * It shall be less than or equal to a BSP-specific and application-specific
3885 *   value which depends on the size of the memory available to the
3886 *   application.
3887 *
3888 * * It shall be small enough so that the task stack space calculation carried
3889 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
3890 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3891 * @endparblock
3892 *
3893 * @par Notes
3894 * @parblock
3895 * This object class can be configured in unlimited allocation mode, see <a
3896 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3897 * Objects</a>.
3898 *
3899 * This calculations for the required memory in the RTEMS Workspace for threads
3900 * assume that each thread has a minimum stack size and has floating point
3901 * support enabled.  The configuration option #CONFIGURE_EXTRA_TASK_STACKS is
3902 * used to specify thread stack requirements **above** the minimum size
3903 * required.
3904 *
3905 * The maximum number of Classic API Tasks is specified by
3906 * #CONFIGURE_MAXIMUM_TASKS.
3907 *
3908 * All POSIX threads have floating point enabled.
3909 * @endparblock
3910 */
3911#define CONFIGURE_MAXIMUM_POSIX_THREADS
3912
3913/* Generated from spec:/acfg/if/max-posix-timers */
3914
3915/**
3916 * @brief This configuration option is an integer define.
3917 *
3918 * The value of this configuration option defines the maximum number of POSIX
3919 * API Timers that can be concurrently active.
3920 *
3921 * @par Default Value
3922 * The default value is 0.
3923 *
3924 * @par Value Constraints
3925 * @parblock
3926 * The value of this configuration option shall satisfy all of the following
3927 * constraints:
3928 *
3929 * * It shall be greater than or equal to zero.
3930 *
3931 * * It shall be less than or equal to 65535.
3932 *
3933 * * It shall be less than or equal to a BSP-specific and application-specific
3934 *   value which depends on the size of the memory available to the
3935 *   application.
3936 *
3937 * * It may be defined through rtems_resource_unlimited() the enable unlimited
3938 *   objects for the object class, if the value passed to
3939 *   rtems_resource_unlimited() satisfies all other constraints of the
3940 *   configuration option.
3941 *
3942 * * It shall be zero if the POSIX API is not enabled (e.g. RTEMS was built
3943 *   without the ``RTEMS_POSIX_API = True`` build configuration option).
3944 *   Otherwise a compile time error in the configuration file will occur.
3945 * @endparblock
3946 *
3947 * @par Notes
3948 * @parblock
3949 * This object class can be configured in unlimited allocation mode, see <a
3950 * href=https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects>Unlimited
3951 * Objects</a>.
3952 *
3953 * Timers are only available if RTEMS was built with the ``--enable-posix``
3954 * build configuration option.
3955 * @endparblock
3956 */
3957#define CONFIGURE_MAXIMUM_POSIX_TIMERS
3958
3959/* Generated from spec:/acfg/if/min-posix-thread-stack-size */
3960
3961/**
3962 * @brief This configuration option is an integer define.
3963 *
3964 * The value of this configuration option defines the minimum stack size in
3965 * bytes for every POSIX thread in the system.
3966 *
3967 * @par Default Value
3968 * The default value is two times the value of
3969 * #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
3970 *
3971 * @par Value Constraints
3972 * @parblock
3973 * The value of this configuration option shall satisfy all of the following
3974 * constraints:
3975 *
3976 * * It shall be small enough so that the task stack space calculation carried
3977 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
3978 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
3979 *
3980 * * It shall be greater than or equal to a BSP-specific and
3981 *   application-specific minimum value.
3982 * @endparblock
3983 */
3984#define CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
3985
3986/** @} */
3987
3988/* Generated from spec:/acfg/if/group-posixinit */
3989
3990/**
3991 * @defgroup RTEMSApplConfigPOSIXInitializationThreadConfiguration \
3992 *   POSIX Initialization Thread Configuration
3993 *
3994 * @ingroup RTEMSApplConfig
3995 *
3996 * This section describes configuration options related to the POSIX
3997 * initialization thread.
3998 *
3999 * @{
4000 */
4001
4002/* Generated from spec:/acfg/if/posix-init-thread-entry-point */
4003
4004/**
4005 * @brief This configuration option is an initializer define.
4006 *
4007 * The value of this configuration option initializes the entry point of the
4008 * POSIX API initialization thread.
4009 *
4010 * @par Default Value
4011 * The default value is ``POSIX_Init``.
4012 *
4013 * @par Value Constraints
4014 * The value of this configuration option shall be defined to a valid function
4015 * pointer of the type ``void *( *entry_point )( void * )``.
4016 *
4017 * @par Notes
4018 * The application shall provide the function referenced by this configuration
4019 * option.
4020 */
4021#define CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT
4022
4023/* Generated from spec:/acfg/if/posix-init-thread-stack-size */
4024
4025/**
4026 * @brief This configuration option is an integer define.
4027 *
4028 * The value of this configuration option defines the thread stack size of the
4029 * POSIX API initialization thread.
4030 *
4031 * @par Default Value
4032 * The default value is #CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE.
4033 *
4034 * @par Value Constraints
4035 * @parblock
4036 * The value of this configuration option shall satisfy all of the following
4037 * constraints:
4038 *
4039 * * It shall be greater than or equal to #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
4040 *
4041 * * It shall be small enough so that the task stack space calculation carried
4042 *   out by ``<rtems/confdefs.h>`` does not overflow an integer of type <a
4043 *   href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>.
4044 * @endparblock
4045 */
4046#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
4047
4048/* Generated from spec:/acfg/if/posix-init-thread-table */
4049
4050/**
4051 * @brief This configuration option is a boolean feature define.
4052 *
4053 * In case this configuration option is defined, then exactly one POSIX
4054 * initialization thread is configured.
4055 *
4056 * @par Default Configuration
4057 * If this configuration option is undefined, then the described feature is not
4058 * enabled.
4059 *
4060 * @par Notes
4061 * @parblock
4062 * The application shall define exactly one of the following configuration
4063 * options
4064 *
4065 * * #CONFIGURE_RTEMS_INIT_TASKS_TABLE,
4066 *
4067 * * ``CONFIGURE_POSIX_INIT_THREAD_TABLE``, or
4068 *
4069 * * #CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
4070 *
4071 * otherwise a compile time error in the configuration file will occur.
4072 * @endparblock
4073 */
4074#define CONFIGURE_POSIX_INIT_THREAD_TABLE
4075
4076/** @} */
4077
4078/* Generated from spec:/acfg/if/group-schedgeneral */
4079
4080/**
4081 * @defgroup RTEMSApplConfigGeneralSchedulerConfiguration \
4082 *   General Scheduler Configuration
4083 *
4084 * @ingroup RTEMSApplConfig
4085 *
4086 * This section describes configuration options related to selecting a
4087 * scheduling algorithm for an application.  A scheduler configuration is
4088 * optional and only necessary in very specific circumstances.  A normal
4089 * application configuration does not need any of the configuration options
4090 * described in this section.
4091 *
4092 * By default, the <a
4093 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-scheduler>Deterministic
4094 * Priority Scheduler</a> algorithm is used in uniprocessor configurations.  In
4095 * case SMP is enabled and the configured maximum processors
4096 * (#CONFIGURE_MAXIMUM_PROCESSORS) is greater than one, then the <a
4097 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#earliest-deadline-first-smp-scheduler>Earliest
4098 * Deadline First SMP Scheduler</a> is selected as the default scheduler
4099 * algorithm.
4100 *
4101 * For the schedulers provided by RTEMS (see <a
4102 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html>Scheduling
4103 * Concepts</a>), the configuration is straightforward.  All that is required
4104 * is to define the configuration option which specifies which scheduler you
4105 * want for in your application.
4106 *
4107 * The pluggable scheduler interface also enables the user to provide their own
4108 * scheduling algorithm.  If you choose to do this, you must define multiple
4109 * configuration option.
4110 *
4111 * @{
4112 */
4113
4114/* Generated from spec:/acfg/if/cbs-max-servers */
4115
4116/**
4117 * @brief This configuration option is an integer define.
4118 *
4119 * The value of this configuration option defines the maximum number Constant
4120 * Bandwidth Servers that can be concurrently active.
4121 *
4122 * @par Default Value
4123 * The default value is #CONFIGURE_MAXIMUM_TASKS.
4124 *
4125 * @par Value Constraints
4126 * @parblock
4127 * The value of this configuration option shall satisfy all of the following
4128 * constraints:
4129 *
4130 * * It shall be greater than or equal to zero.
4131 *
4132 * * It shall be less than or equal to <a
4133 *   href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>.
4134 *
4135 * * It shall be less than or equal to a BSP-specific and application-specific
4136 *   value which depends on the size of the memory available to the
4137 *   application.
4138 * @endparblock
4139 *
4140 * @par Notes
4141 * This configuration option is only evaluated if the configuration option
4142 * #CONFIGURE_SCHEDULER_CBS is defined.
4143 */
4144#define CONFIGURE_CBS_MAXIMUM_SERVERS
4145
4146/* Generated from spec:/acfg/if/max-priority */
4147
4148/**
4149 * @brief This configuration option is an integer define.
4150 *
4151 * For the following schedulers
4152 *
4153 * * <a
4154 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-scheduler>Deterministic
4155 *   Priority Scheduler</a>, which is the default in uniprocessor
4156 *   configurations and can be configured through the
4157 *   #CONFIGURE_SCHEDULER_PRIORITY configuration option,
4158 *
4159 * * <a
4160 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-smp-scheduler>Deterministic
4161 *   Priority SMP Scheduler</a> which can be configured through the
4162 *   #CONFIGURE_SCHEDULER_PRIORITY_SMP configuration option, and
4163 *
4164 * * <a
4165 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#arbitrary-processor-affinity-priority-smp-scheduler>Arbitrary
4166 *   Processor Affinity Priority SMP Scheduler</a> which can be configured
4167 *   through the #CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP configuration
4168 *   option
4169 *
4170 * this configuration option specifies the maximum numeric priority of any task
4171 * for these schedulers and one less that the number of priority levels for
4172 * these schedulers.  For all other schedulers provided by RTEMS, this
4173 * configuration option has no effect.
4174 *
4175 * @par Default Value
4176 * The default value is 255.
4177 *
4178 * @par Value Constraints
4179 * The value of this configuration option shall be equal to 3, 7, 31, 63, 127,
4180 * or 255.
4181 *
4182 * @par Notes
4183 * @parblock
4184 * The numerically greatest priority is the logically lowest priority in the
4185 * system and will thus be used by the IDLE task.
4186 *
4187 * Priority zero is reserved for internal use by RTEMS and is not available to
4188 * applications.
4189 *
4190 * Reducing the number of priorities through this configuration option reduces
4191 * the amount of memory allocated by the schedulers listed above.  These
4192 * schedulers use a chain control structure per priority and this structure
4193 * consists of three pointers.  On a 32-bit architecture, the allocated memory
4194 * is 12 bytes * (``CONFIGURE_MAXIMUM_PRIORITY`` + 1), e.g. 3072 bytes for 256
4195 * priority levels (default), 48 bytes for 4 priority levels
4196 * (``CONFIGURE_MAXIMUM_PRIORITY == 3``).
4197 *
4198 * The default value is 255, because RTEMS shall support 256 priority levels to
4199 * be compliant with various standards.  These priorities range from 0 to 255.
4200 * @endparblock
4201 */
4202#define CONFIGURE_MAXIMUM_PRIORITY
4203
4204/* Generated from spec:/acfg/if/scheduler-assignments */
4205
4206/**
4207 * @brief This configuration option is an initializer define.
4208 *
4209 * The value of this configuration option is used to initialize the initial
4210 * scheduler to processor assignments.
4211 *
4212 * @par Default Value
4213 * The default value of this configuration option is computed so that the
4214 * default scheduler is assigned to each configured processor (up to 32).
4215 *
4216 * @par Value Constraints
4217 * @parblock
4218 * The value of this configuration option shall satisfy all of the following
4219 * constraints:
4220 *
4221 * * It shall be a list of the following macros:
4222 *
4223 *   * ``RTEMS_SCHEDULER_ASSIGN( processor_index, attributes )``
4224 *
4225 *   * ``RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER``
4226 *
4227 * * It shall be a list of exactly #CONFIGURE_MAXIMUM_PROCESSORS elements.
4228 * @endparblock
4229 *
4230 * @par Notes
4231 * @parblock
4232 * This configuration option is only evaluated in SMP configurations.
4233 *
4234 * This is an advanced configuration option, see <a
4235 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4236 * Scheduler Configuration</a>.
4237 * @endparblock
4238 */
4239#define CONFIGURE_SCHEDULER_ASSIGNMENTS
4240
4241/* Generated from spec:/acfg/if/scheduler-cbs */
4242
4243/**
4244 * @brief This configuration option is a boolean feature define.
4245 *
4246 * In case this configuration option is defined, then the <a
4247 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#constant-bandwidth-server-scheduling-cbs>Constant
4248 * Bandwidth Server Scheduling (CBS)</a> algorithm is made available to the
4249 * application.
4250 *
4251 * @par Default Configuration
4252 * If this configuration option is undefined, then the described feature is not
4253 * enabled.
4254 *
4255 * @par Notes
4256 * @parblock
4257 * This scheduler configuration option is an advanced configuration option.
4258 * Think twice before you use it.
4259 *
4260 * In case no explicit <a
4261 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4262 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4263 * exactly one processor.
4264 * @endparblock
4265 */
4266#define CONFIGURE_SCHEDULER_CBS
4267
4268/* Generated from spec:/acfg/if/scheduler-edf */
4269
4270/**
4271 * @brief This configuration option is a boolean feature define.
4272 *
4273 * In case this configuration option is defined, then the <a
4274 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#earliest-deadline-first-scheduler>Earliest
4275 * Deadline First Scheduler</a> algorithm is made available to the application.
4276 *
4277 * @par Default Configuration
4278 * If this configuration option is undefined, then the described feature is not
4279 * enabled.
4280 *
4281 * @par Notes
4282 * @parblock
4283 * This scheduler configuration option is an advanced configuration option.
4284 * Think twice before you use it.
4285 *
4286 * In case no explicit <a
4287 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4288 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4289 * exactly one processor.
4290 * @endparblock
4291 */
4292#define CONFIGURE_SCHEDULER_EDF
4293
4294/* Generated from spec:/acfg/if/scheduler-edf-smp */
4295
4296/**
4297 * @brief This configuration option is a boolean feature define.
4298 *
4299 * In case this configuration option is defined, then the <a
4300 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#earliest-deadline-first-smp-scheduler>Earliest
4301 * Deadline First SMP Scheduler</a> algorithm is made available to the
4302 * application.
4303 *
4304 * @par Default Configuration
4305 * If this configuration option is undefined, then the described feature is not
4306 * enabled.
4307 *
4308 * @par Notes
4309 * @parblock
4310 * This scheduler configuration option is an advanced configuration option.
4311 * Think twice before you use it.
4312 *
4313 * This scheduler algorithm is only available when RTEMS is built with SMP
4314 * support enabled.
4315 *
4316 * In case no explicit <a
4317 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4318 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4319 * up to 32 processors.
4320 *
4321 * This scheduler algorithm is the default in SMP configurations if
4322 * #CONFIGURE_MAXIMUM_PROCESSORS is greater than one.
4323 * @endparblock
4324 */
4325#define CONFIGURE_SCHEDULER_EDF_SMP
4326
4327/* Generated from spec:/acfg/if/scheduler-name */
4328
4329/**
4330 * @brief This configuration option is an integer define.
4331 *
4332 * The value of this configuration option defines the name of the default
4333 * scheduler.
4334 *
4335 * @par Default Value
4336 * @parblock
4337 * The default value is
4338 *
4339 * * ``"MEDF"`` for the <a
4340 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#earliest-deadline-first-smp-scheduler>Earliest
4341 *   Deadline First SMP Scheduler</a>,
4342 *
4343 * * ``"MPA "`` for the <a
4344 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#arbitrary-processor-affinity-priority-smp-scheduler>Arbitrary
4345 *   Processor Affinity Priority SMP Scheduler</a>,
4346 *
4347 * * ``"MPD "`` for the <a
4348 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-smp-scheduler>Deterministic
4349 *   Priority SMP Scheduler</a>,
4350 *
4351 * * ``"MPS "`` for the <a
4352 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#simple-priority-smp-scheduler>Simple
4353 *   Priority SMP Scheduler</a>,
4354 *
4355 * * ``"UCBS"`` for the <a
4356 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#constant-bandwidth-server-scheduling-cbs>Constant
4357 *   Bandwidth Server Scheduling (CBS)</a>,
4358 *
4359 * * ``"UEDF"`` for 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>,
4362 *
4363 * * ``"UPD "`` for the <a
4364 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-scheduler>Deterministic
4365 *   Priority Scheduler</a>, and
4366 *
4367 * * ``"UPS "`` for the <a
4368 *   href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#simple-priority-scheduler>Simple
4369 *   Priority Scheduler</a>.
4370 * @endparblock
4371 *
4372 * @par Value Constraints
4373 * The value of this configuration option shall be convertible to an integer of
4374 * type ::rtems_name.
4375 *
4376 * @par Notes
4377 * @parblock
4378 * This scheduler configuration option is an advanced configuration option.
4379 * Think twice before you use it.
4380 *
4381 * Schedulers can be identified via rtems_scheduler_ident().
4382 *
4383 * Use rtems_build_name() to define the scheduler name.
4384 * @endparblock
4385 */
4386#define CONFIGURE_SCHEDULER_NAME
4387
4388/* Generated from spec:/acfg/if/scheduler-priority */
4389
4390/**
4391 * @brief This configuration option is a boolean feature define.
4392 *
4393 * In case this configuration option is defined, then the <a
4394 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-scheduler>Deterministic
4395 * Priority Scheduler</a> algorithm is made available to the application.
4396 *
4397 * @par Default Configuration
4398 * If this configuration option is undefined, then the described feature is not
4399 * enabled.
4400 *
4401 * @par Notes
4402 * @parblock
4403 * This scheduler configuration option is an advanced configuration option.
4404 * Think twice before you use it.
4405 *
4406 * In case no explicit <a
4407 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4408 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4409 * exactly one processor.
4410 *
4411 * This scheduler algorithm is the default when #CONFIGURE_MAXIMUM_PROCESSORS
4412 * is exactly one.
4413 *
4414 * The memory allocated for this scheduler depends on the
4415 * #CONFIGURE_MAXIMUM_PRIORITY configuration option.
4416 * @endparblock
4417 */
4418#define CONFIGURE_SCHEDULER_PRIORITY
4419
4420/* Generated from spec:/acfg/if/scheduler-priority-affinity-smp */
4421
4422/**
4423 * @brief This configuration option is a boolean feature define.
4424 *
4425 * In case this configuration option is defined, then the <a
4426 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#arbitrary-processor-affinity-priority-smp-scheduler>Arbitrary
4427 * Processor Affinity Priority SMP Scheduler</a> algorithm is made available to
4428 * the application.
4429 *
4430 * @par Default Configuration
4431 * If this configuration option is undefined, then the described feature is not
4432 * enabled.
4433 *
4434 * @par Notes
4435 * @parblock
4436 * This scheduler configuration option is an advanced configuration option.
4437 * Think twice before you use it.
4438 *
4439 * This scheduler algorithm is only available when RTEMS is built with SMP
4440 * support enabled.
4441 *
4442 * In case no explicit <a
4443 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4444 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4445 * up to 32 processors.
4446 *
4447 * The memory allocated for this scheduler depends on the
4448 * #CONFIGURE_MAXIMUM_PRIORITY configuration option.
4449 * @endparblock
4450 */
4451#define CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP
4452
4453/* Generated from spec:/acfg/if/scheduler-priority-smp */
4454
4455/**
4456 * @brief This configuration option is a boolean feature define.
4457 *
4458 * In case this configuration option is defined, then the <a
4459 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#deterministic-priority-smp-scheduler>Deterministic
4460 * Priority SMP Scheduler</a> algorithm is made available to the application.
4461 *
4462 * @par Default Configuration
4463 * If this configuration option is undefined, then the described feature is not
4464 * enabled.
4465 *
4466 * @par Notes
4467 * @parblock
4468 * This scheduler configuration option is an advanced configuration option.
4469 * Think twice before you use it.
4470 *
4471 * This scheduler algorithm is only available when RTEMS is built with SMP
4472 * support enabled.
4473 *
4474 * In case no explicit <a
4475 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4476 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4477 * up to 32 processors.
4478 *
4479 * The memory allocated for this scheduler depends on the
4480 * #CONFIGURE_MAXIMUM_PRIORITY configuration option.
4481 * @endparblock
4482 */
4483#define CONFIGURE_SCHEDULER_PRIORITY_SMP
4484
4485/* Generated from spec:/acfg/if/scheduler-simple */
4486
4487/**
4488 * @brief This configuration option is a boolean feature define.
4489 *
4490 * In case this configuration option is defined, then the <a
4491 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#simple-priority-scheduler>Simple
4492 * Priority Scheduler</a> algorithm is made available to the application.
4493 *
4494 * @par Default Configuration
4495 * If this configuration option is undefined, then the described feature is not
4496 * enabled.
4497 *
4498 * @par Notes
4499 * @parblock
4500 * This scheduler configuration option is an advanced configuration option.
4501 * Think twice before you use it.
4502 *
4503 * In case no explicit <a
4504 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4505 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4506 * exactly one processor.
4507 * @endparblock
4508 */
4509#define CONFIGURE_SCHEDULER_SIMPLE
4510
4511/* Generated from spec:/acfg/if/scheduler-simple-smp */
4512
4513/**
4514 * @brief This configuration option is a boolean feature define.
4515 *
4516 * In case this configuration option is defined, then the <a
4517 * href=https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#simple-priority-smp-scheduler>Simple
4518 * Priority SMP Scheduler</a> algorithm is made available to the application.
4519 *
4520 * @par Default Configuration
4521 * If this configuration option is undefined, then the described feature is not
4522 * enabled.
4523 *
4524 * @par Notes
4525 * @parblock
4526 * This scheduler configuration option is an advanced configuration option.
4527 * Think twice before you use it.
4528 *
4529 * This scheduler algorithm is only available when RTEMS is built with SMP
4530 * support enabled.
4531 *
4532 * In case no explicit <a
4533 * href=https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html>Clustered
4534 * Scheduler Configuration</a> is present, then it is used as the scheduler for
4535 * up to 32 processors.
4536 * @endparblock
4537 */
4538#define CONFIGURE_SCHEDULER_SIMPLE_SMP
4539
4540/* Generated from spec:/acfg/if/scheduler-strong-apa */
4541
4542/**
4543 * @brief This configuration option is a boolean feature define.
4544 *
4545 * In case this configuration option is defined, then the Strong APA algorithm
4546 * 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 * This scheduler algorithm is not correctly implemented.  Do not use it.
4561 * @endparblock
4562 */
4563#define CONFIGURE_SCHEDULER_STRONG_APA
4564
4565/* Generated from spec:/acfg/if/scheduler-user */
4566
4567/**
4568 * @brief This configuration option is a boolean feature define.
4569 *
4570 * In case this configuration option is defined, then the user shall provide a
4571 * scheduler algorithm to the application.
4572 *
4573 * @par Default Configuration
4574 * If this configuration option is undefined, then the described feature is not
4575 * enabled.
4576 *
4577 * @par Notes
4578 * @parblock
4579 * This scheduler configuration option is an advanced configuration option.
4580 * Think twice before you use it.
4581 *
4582 * RTEMS allows the application to provide its own task/thread scheduling
4583 * algorithm. In order to do this, one shall define
4584 * ``CONFIGURE_SCHEDULER_USER`` to indicate the application provides its own
4585 * scheduling algorithm. If ``CONFIGURE_SCHEDULER_USER`` is defined then the
4586 * following additional macros shall be defined:
4587 *
4588 * * ``CONFIGURE_SCHEDULER`` shall be defined to a static definition of the
4589 *   scheduler data structures of the user scheduler.
4590 *
4591 * * ``CONFIGURE_SCHEDULER_TABLE_ENTRIES`` shall be defined to a scheduler
4592 *   table entry initializer for the user scheduler.
4593 *
4594 * * ``CONFIGURE_SCHEDULER_USER_PER_THREAD`` shall be defined to the type of
4595 *   the per-thread information of the user scheduler.
4596 *
4597 * At this time, the mechanics and requirements for writing a new scheduler are
4598 * evolving and not fully documented.  It is recommended that you look at the
4599 * existing Deterministic Priority Scheduler in
4600 * ``cpukit/score/src/schedulerpriority*.c`` for guidance.  For guidance on the
4601 * configuration macros, please examine ``cpukit/sapi/include/confdefs.h`` for
4602 * how these are defined for the Deterministic Priority Scheduler.
4603 * @endparblock
4604 */
4605#define CONFIGURE_SCHEDULER_USER
4606
4607/** @} */
4608
4609/* Generated from spec:/acfg/if/group-stackalloc */
4610
4611/**
4612 * @defgroup RTEMSApplConfigTaskStackAllocatorConfiguration \
4613 *   Task Stack Allocator Configuration
4614 *
4615 * @ingroup RTEMSApplConfig
4616 *
4617 * This section describes configuration options related to the task stack
4618 * allocator.  RTEMS allows the application or BSP to define its own allocation
4619 * and deallocation methods for task stacks. This can be used to place task
4620 * stacks in special areas of memory or to utilize a Memory Management Unit so
4621 * that stack overflows are detected in hardware.
4622 *
4623 * @{
4624 */
4625
4626/* Generated from spec:/acfg/if/task-stack-allocator */
4627
4628/**
4629 * @brief This configuration option is an initializer define.
4630 *
4631 * The value of this configuration option initializes the stack allocator
4632 * allocate handler.
4633 *
4634 * @par Default Value
4635 * The default value is ``_Workspace_Allocate``, which indicates that task
4636 * stacks will be allocated from the RTEMS Workspace.
4637 *
4638 * @par Value Constraints
4639 * The value of this configuration option shall be defined to a valid function
4640 * pointer of the type ``void *( *allocate )( size_t )``.
4641 *
4642 * @par Notes
4643 * @parblock
4644 * A correctly configured system shall configure the following to be
4645 * consistent:
4646 *
4647 * * #CONFIGURE_TASK_STACK_ALLOCATOR_INIT
4648 *
4649 * * ``CONFIGURE_TASK_STACK_ALLOCATOR``
4650 *
4651 * * #CONFIGURE_TASK_STACK_DEALLOCATOR
4652 * @endparblock
4653 */
4654#define CONFIGURE_TASK_STACK_ALLOCATOR
4655
4656/* Generated from spec:/acfg/if/task-stack-no-workspace */
4657
4658/**
4659 * @brief This configuration option is a boolean feature define.
4660 *
4661 * In case this configuration option is defined, then the system is informed
4662 * that the task stack allocator does not use the RTEMS Workspace.
4663 *
4664 * @par Default Configuration
4665 * If this configuration option is undefined, then the described feature is not
4666 * enabled.
4667 *
4668 * @par Notes
4669 * This configuration option may be used if a custom task stack allocator is
4670 * configured, see #CONFIGURE_TASK_STACK_ALLOCATOR.
4671 */
4672#define CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE
4673
4674/* Generated from spec:/acfg/if/task-stack-allocator-init */
4675
4676/**
4677 * @brief This configuration option is an initializer define.
4678 *
4679 * The value of this configuration option initializes the stack allocator
4680 * initialization handler.
4681 *
4682 * @par Default Value
4683 * The default value is <a
4684 * href="https://en.cppreference.com/w/c/types/NULL">NULL</a>.
4685 *
4686 * @par Value Constraints
4687 * The value of this configuration option shall be defined to a valid function
4688 * pointer of the type ``void ( *initialize )( size_t )`` or to <a
4689 * href="https://en.cppreference.com/w/c/types/NULL">NULL</a>.
4690 *
4691 * @par Notes
4692 * @parblock
4693 * A correctly configured system shall configure the following to be
4694 * consistent:
4695 *
4696 * * ``CONFIGURE_TASK_STACK_ALLOCATOR_INIT``
4697 *
4698 * * #CONFIGURE_TASK_STACK_ALLOCATOR
4699 *
4700 * * #CONFIGURE_TASK_STACK_DEALLOCATOR
4701 * @endparblock
4702 */
4703#define CONFIGURE_TASK_STACK_ALLOCATOR_INIT
4704
4705/* Generated from spec:/acfg/if/task-stack-deallocator */
4706
4707/**
4708 * @brief This configuration option is an initializer define.
4709 *
4710 * The value of this configuration option initializes the stack allocator
4711 * deallocate handler.
4712 *
4713 * @par Default Value
4714 * The default value is ``_Workspace_Free``, which indicates that task stacks
4715 * will be allocated from the RTEMS Workspace.
4716 *
4717 * @par Value Constraints
4718 * The value of this configuration option shall be defined to a valid function
4719 * pointer of the type ``void ( *deallocate )( void * )``.
4720 *
4721 * @par Notes
4722 * @parblock
4723 * A correctly configured system shall configure the following to be
4724 * consistent:
4725 *
4726 * * #CONFIGURE_TASK_STACK_ALLOCATOR_INIT
4727 *
4728 * * #CONFIGURE_TASK_STACK_ALLOCATOR
4729 *
4730 * * ``CONFIGURE_TASK_STACK_DEALLOCATOR``
4731 * @endparblock
4732 */
4733#define CONFIGURE_TASK_STACK_DEALLOCATOR
4734
4735/* Generated from spec:/acfg/if/task-stack-from-alloc */
4736
4737/**
4738 * @brief This configuration option is an initializer define.
4739 *
4740 * The value of this configuration option is used to calculate the task stack
4741 * space size.
4742 *
4743 * @par Default Value
4744 * The default value is a macro which supports the system heap allocator.
4745 *
4746 * @par Value Constraints
4747 * The value of this configuration option shall be defined to a macro which
4748 * accepts exactly one parameter and returns an unsigned integer.  The
4749 * parameter will be an allocation size and the macro shall return this size
4750 * plus the overhead of the allocator to manage an allocation request for this
4751 * size.
4752 *
4753 * @par Notes
4754 * This configuration option may be used if a custom task stack allocator is
4755 * configured, see #CONFIGURE_TASK_STACK_ALLOCATOR.
4756 */
4757#define CONFIGURE_TASK_STACK_FROM_ALLOCATOR
4758
4759/** @} */
Note: See TracBrowser for help on using the repository browser.