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

Last change on this file was b83eb5d, checked in by Sebastian Huber <sebastian.huber@…>, on 04/17/24 at 08:17:15

doxygen: Fix constraints

Somehow the constraints for CONFIGURE_TICKS_PER_TIMESLICE and
CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK got mixed up.

Update #4986.

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