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

Last change on this file since c2756c14 was c2756c14, checked in by Sebastian Huber <sebastian.huber@…>, on 02/14/23 at 14:07:01

doxygen: Document CONFIGURE_INIT

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