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

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

doxygen: Add Doxygen files to a group

Update #3707.

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