![]() |
|
|||
File indexing completed on 2025-05-11 08:24:11
0001 /* SPDX-License-Identifier: BSD-2-Clause */ 0002 0003 /** 0004 * @file 0005 * 0006 * @ingroup RTEMSImplDoxygen 0007 * 0008 * @brief This header file documents the application configuration options. 0009 */ 0010 0011 /* 0012 * Copyright (C) 2019, 2023 embedded brains GmbH & Co. KG 0013 * Copyright (C) 2010 Gedare Bloom 0014 * Copyright (C) 1988, 2023 On-Line Applications Research Corporation (OAR) 0015 * 0016 * Redistribution and use in source and binary forms, with or without 0017 * modification, are permitted provided that the following conditions 0018 * are met: 0019 * 1. Redistributions of source code must retain the above copyright 0020 * notice, this list of conditions and the following disclaimer. 0021 * 2. Redistributions in binary form must reproduce the above copyright 0022 * notice, this list of conditions and the following disclaimer in the 0023 * documentation and/or other materials provided with the distribution. 0024 * 0025 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 0026 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 0027 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 0028 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 0029 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 0030 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 0031 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 0032 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 0033 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 0034 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 0035 * POSSIBILITY OF SUCH DAMAGE. 0036 */ 0037 0038 /* 0039 * This file is part of the RTEMS quality process and was automatically 0040 * generated. If you find something that needs to be fixed or 0041 * worded better please post a report or patch to an RTEMS mailing list 0042 * or raise a bug report: 0043 * 0044 * https://www.rtems.org/bugs.html 0045 * 0046 * For information on updating and regenerating please refer to the How-To 0047 * section in the Software Requirements Engineering chapter of the 0048 * RTEMS Software Engineering manual. The manual is provided as a part of 0049 * a release. For development sources please refer to the online 0050 * documentation at: 0051 * 0052 * https://docs.rtems.org 0053 */ 0054 0055 /** 0056 * @defgroup RTEMSApplConfig Application Configuration Options 0057 * 0058 * @ingroup RTEMSAPI 0059 */ 0060 0061 /* Generated from spec:/acfg/if/group-bdbuf */ 0062 0063 /** 0064 * @defgroup RTEMSApplConfigBlockDeviceCacheConfiguration \ 0065 * Block Device Cache Configuration 0066 * 0067 * @ingroup RTEMSApplConfig 0068 * 0069 * This section describes configuration options related to the Block Device 0070 * Cache (bdbuf). 0071 * 0072 * @{ 0073 */ 0074 0075 /* Generated from spec:/acfg/if/appl-needs-libblock */ 0076 0077 /** 0078 * @brief This configuration option is a boolean feature define. 0079 * 0080 * @anchor CONFIGURE_APPLICATION_NEEDS_LIBBLOCK 0081 * 0082 * In case this configuration option is defined, then the Block Device Cache is 0083 * initialized during system initialization. 0084 * 0085 * @par Default Configuration 0086 * If this configuration option is undefined, then the described feature is not 0087 * enabled. 0088 * 0089 * @par Notes 0090 * Each option of the Block Device Cache (bdbuf) configuration can be 0091 * explicitly set by the user with the configuration options below. The Block 0092 * Device Cache is used for example by the RFS and DOSFS filesystems. 0093 */ 0094 #define CONFIGURE_APPLICATION_NEEDS_LIBBLOCK 0095 0096 /* Generated from spec:/acfg/if/bdbuf-buffer-max-size */ 0097 0098 /** 0099 * @brief This configuration option is an integer define. 0100 * 0101 * @anchor CONFIGURE_BDBUF_BUFFER_MAX_SIZE 0102 * 0103 * The value of this configuration option defines the maximum size of a buffer 0104 * in bytes. 0105 * 0106 * @par Default Value 0107 * The default value is 4096. 0108 * 0109 * @par Constraints 0110 * @parblock 0111 * The following constraints apply to this configuration option: 0112 * 0113 * * The value of the configuration option shall be greater than or equal to 0114 * zero. 0115 * 0116 * * The value of the configuration option shall be an integral multiple of 0117 * @ref CONFIGURE_BDBUF_BUFFER_MIN_SIZE. 0118 * @endparblock 0119 */ 0120 #define CONFIGURE_BDBUF_BUFFER_MAX_SIZE 0121 0122 /* Generated from spec:/acfg/if/bdbuf-buffer-min-size */ 0123 0124 /** 0125 * @brief This configuration option is an integer define. 0126 * 0127 * @anchor CONFIGURE_BDBUF_BUFFER_MIN_SIZE 0128 * 0129 * The value of this configuration option defines the minimum size of a buffer 0130 * in bytes. 0131 * 0132 * @par Default Value 0133 * The default value is 512. 0134 * 0135 * @par Constraints 0136 * @parblock 0137 * The following constraints apply to this configuration option: 0138 * 0139 * * The value of the configuration option shall be greater than or equal to 0140 * zero. 0141 * 0142 * * The value of the configuration option shall be less than or equal to <a 0143 * href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>. 0144 * @endparblock 0145 */ 0146 #define CONFIGURE_BDBUF_BUFFER_MIN_SIZE 0147 0148 /* Generated from spec:/acfg/if/bdbuf-cache-memory-size */ 0149 0150 /** 0151 * @brief This configuration option is an integer define. 0152 * 0153 * @anchor CONFIGURE_BDBUF_CACHE_MEMORY_SIZE 0154 * 0155 * The value of this configuration option defines the size of the cache memory 0156 * in bytes. 0157 * 0158 * @par Default Value 0159 * The default value is 32768. 0160 * 0161 * @par Constraints 0162 * @parblock 0163 * The following constraints apply to this configuration option: 0164 * 0165 * * The value of the configuration option shall be greater than or equal to 0166 * zero. 0167 * 0168 * * The value of the configuration option shall be less than or equal to <a 0169 * href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>. 0170 * @endparblock 0171 */ 0172 #define CONFIGURE_BDBUF_CACHE_MEMORY_SIZE 0173 0174 /* Generated from spec:/acfg/if/bdbuf-max-read-ahead-blocks */ 0175 0176 /** 0177 * @brief This configuration option is an integer define. 0178 * 0179 * @anchor CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS 0180 * 0181 * The value of this configuration option defines the maximum blocks per 0182 * read-ahead request. 0183 * 0184 * @par Default Value 0185 * The default value is 0. 0186 * 0187 * @par Constraints 0188 * @parblock 0189 * The following constraints apply to this configuration option: 0190 * 0191 * * The value of the configuration option shall be greater than or equal to 0192 * zero. 0193 * 0194 * * The value of the configuration option shall be less than or equal to <a 0195 * href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>. 0196 * @endparblock 0197 * 0198 * @par Notes 0199 * A value of 0 disables the read-ahead task (default). The read-ahead task 0200 * will issue speculative read transfers if a sequential access pattern is 0201 * detected. This can improve the performance on some systems. 0202 */ 0203 #define CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS 0204 0205 /* Generated from spec:/acfg/if/bdbuf-max-write-blocks */ 0206 0207 /** 0208 * @brief This configuration option is an integer define. 0209 * 0210 * @anchor CONFIGURE_BDBUF_MAX_WRITE_BLOCKS 0211 * 0212 * The value of this configuration option defines the maximum blocks per write 0213 * request. 0214 * 0215 * @par Default Value 0216 * The default value is 16. 0217 * 0218 * @par Constraints 0219 * @parblock 0220 * The following constraints apply to this configuration option: 0221 * 0222 * * The value of the configuration option shall be greater than or equal to 0223 * zero. 0224 * 0225 * * The value of the configuration option shall be less than or equal to <a 0226 * href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>. 0227 * @endparblock 0228 */ 0229 #define CONFIGURE_BDBUF_MAX_WRITE_BLOCKS 0230 0231 /* Generated from spec:/acfg/if/bdbuf-read-ahead-task-priority */ 0232 0233 /** 0234 * @brief This configuration option is an integer define. 0235 * 0236 * @anchor CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY 0237 * 0238 * The value of this configuration option defines the read-ahead task priority. 0239 * 0240 * @par Default Value 0241 * The default value is 15. 0242 * 0243 * @par Constraints 0244 * The value of the configuration option shall be a valid Classic API task 0245 * priority. The set of valid task priorities depends on the scheduler 0246 * configuration. 0247 */ 0248 #define CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY 0249 0250 /* Generated from spec:/acfg/if/bdbuf-task-stack-size */ 0251 0252 /** 0253 * @brief This configuration option is an integer define. 0254 * 0255 * @anchor CONFIGURE_BDBUF_TASK_STACK_SIZE 0256 * 0257 * The value of this configuration option defines the task stack size of the 0258 * Block Device Cache tasks in bytes. 0259 * 0260 * @par Default Value 0261 * The default value is #RTEMS_MINIMUM_STACK_SIZE. 0262 * 0263 * @par Constraints 0264 * @parblock 0265 * The following constraints apply to this configuration option: 0266 * 0267 * * The value of the configuration option shall be greater than or equal to 0268 * @ref CONFIGURE_MINIMUM_TASK_STACK_SIZE. 0269 * 0270 * * The value of the configuration option shall be less than or equal to a 0271 * BSP-specific and application-specific value which depends on the size of 0272 * the memory available to the application. 0273 * 0274 * * The value of the configuration option shall be small enough so that the 0275 * task stack space calculation carried out by ``<rtems/confdefs.h>`` does 0276 * not overflow an integer of type <a 0277 * href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>. 0278 * @endparblock 0279 */ 0280 #define CONFIGURE_BDBUF_TASK_STACK_SIZE 0281 0282 /* Generated from spec:/acfg/if/bdbuf-swapout-block-hold */ 0283 0284 /** 0285 * @brief This configuration option is an integer define. 0286 * 0287 * @anchor CONFIGURE_SWAPOUT_BLOCK_HOLD 0288 * 0289 * The value of this configuration option defines the swapout task maximum 0290 * block hold time in milliseconds. 0291 * 0292 * @par Default Value 0293 * The default value is 1000. 0294 * 0295 * @par Constraints 0296 * @parblock 0297 * The following constraints apply to this configuration option: 0298 * 0299 * * The value of the configuration option shall be greater than or equal to 0300 * zero. 0301 * 0302 * * The value of the configuration option shall be less than or equal to <a 0303 * href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>. 0304 * @endparblock 0305 */ 0306 #define CONFIGURE_SWAPOUT_BLOCK_HOLD 0307 0308 /* Generated from spec:/acfg/if/bdbuf-swapout-swap-period */ 0309 0310 /** 0311 * @brief This configuration option is an integer define. 0312 * 0313 * @anchor CONFIGURE_SWAPOUT_SWAP_PERIOD 0314 * 0315 * The value of this configuration option defines the swapout task swap period 0316 * in milliseconds. 0317 * 0318 * @par Default Value 0319 * The default value is 250. 0320 * 0321 * @par Constraints 0322 * @parblock 0323 * The following constraints apply to this configuration option: 0324 * 0325 * * The value of the configuration option shall be greater than or equal to 0326 * zero. 0327 * 0328 * * The value of the configuration option shall be less than or equal to <a 0329 * href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>. 0330 * @endparblock 0331 */ 0332 #define CONFIGURE_SWAPOUT_SWAP_PERIOD 0333 0334 /* Generated from spec:/acfg/if/bdbuf-swapout-task-priority */ 0335 0336 /** 0337 * @brief This configuration option is an integer define. 0338 * 0339 * @anchor CONFIGURE_SWAPOUT_TASK_PRIORITY 0340 * 0341 * The value of this configuration option defines the swapout task priority. 0342 * 0343 * @par Default Value 0344 * The default value is 15. 0345 * 0346 * @par Constraints 0347 * The value of the configuration option shall be a valid Classic API task 0348 * priority. The set of valid task priorities depends on the scheduler 0349 * configuration. 0350 */ 0351 #define CONFIGURE_SWAPOUT_TASK_PRIORITY 0352 0353 /* Generated from spec:/acfg/if/bdbuf-swapout-worker-tasks */ 0354 0355 /** 0356 * @brief This configuration option is an integer define. 0357 * 0358 * @anchor CONFIGURE_SWAPOUT_WORKER_TASKS 0359 * 0360 * The value of this configuration option defines the swapout worker task 0361 * count. 0362 * 0363 * @par Default Value 0364 * The default value is 0. 0365 * 0366 * @par Constraints 0367 * @parblock 0368 * The following constraints apply to this configuration option: 0369 * 0370 * * The value of the configuration option shall be greater than or equal to 0371 * zero. 0372 * 0373 * * The value of the configuration option shall be less than or equal to <a 0374 * href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>. 0375 * @endparblock 0376 */ 0377 #define CONFIGURE_SWAPOUT_WORKER_TASKS 0378 0379 /* Generated from spec:/acfg/if/bdbuf-swapout-worker-taskp-riority */ 0380 0381 /** 0382 * @brief This configuration option is an integer define. 0383 * 0384 * @anchor CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY 0385 * 0386 * The value of this configuration option defines the swapout worker task 0387 * priority. 0388 * 0389 * @par Default Value 0390 * The default value is 15. 0391 * 0392 * @par Constraints 0393 * The value of the configuration option shall be a valid Classic API task 0394 * priority. The set of valid task priorities depends on the scheduler 0395 * configuration. 0396 */ 0397 #define CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY 0398 0399 /** @} */ 0400 0401 /* Generated from spec:/acfg/if/group-classic */ 0402 0403 /** 0404 * @defgroup RTEMSApplConfigClassicAPIConfiguration Classic API Configuration 0405 * 0406 * @ingroup RTEMSApplConfig 0407 * 0408 * This section describes configuration options related to the Classic API. 0409 * 0410 * @{ 0411 */ 0412 0413 /* Generated from spec:/acfg/if/max-barriers */ 0414 0415 /** 0416 * @brief This configuration option is an integer define. 0417 * 0418 * @anchor CONFIGURE_MAXIMUM_BARRIERS 0419 * 0420 * The value of this configuration option defines the maximum number of Classic 0421 * API Barriers that can be concurrently active. 0422 * 0423 * @par Default Value 0424 * The default value is 0. 0425 * 0426 * @par Constraints 0427 * @parblock 0428 * The following constraints apply to this configuration option: 0429 * 0430 * * The value of the configuration option shall be greater than or equal to 0431 * zero. 0432 * 0433 * * The value of the configuration option shall be less than or equal to 0434 * 65535. 0435 * 0436 * * The value of the configuration option shall be less than or equal to a 0437 * BSP-specific and application-specific value which depends on the size of 0438 * the memory available to the application. 0439 * 0440 * * The value of the configuration option may be defined through 0441 * rtems_resource_unlimited() the enable unlimited objects for the object 0442 * class, if the value passed to rtems_resource_unlimited() satisfies all 0443 * other constraints of the configuration option. 0444 * @endparblock 0445 * 0446 * @par Notes 0447 * This object class can be configured in unlimited allocation mode, see <a 0448 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 0449 * Objects</a>. 0450 */ 0451 #define CONFIGURE_MAXIMUM_BARRIERS 0452 0453 /* Generated from spec:/acfg/if/max-message-queues */ 0454 0455 /** 0456 * @brief This configuration option is an integer define. 0457 * 0458 * @anchor CONFIGURE_MAXIMUM_MESSAGE_QUEUES 0459 * 0460 * The value of this configuration option defines the maximum number of Classic 0461 * API Message Queues that can be concurrently active. 0462 * 0463 * @par Default Value 0464 * The default value is 0. 0465 * 0466 * @par Constraints 0467 * @parblock 0468 * The following constraints apply to this configuration option: 0469 * 0470 * * The value of the configuration option shall be greater than or equal to 0471 * zero. 0472 * 0473 * * The value of the configuration option shall be less than or equal to 0474 * 65535. 0475 * 0476 * * The value of the configuration option shall be less than or equal to a 0477 * BSP-specific and application-specific value which depends on the size of 0478 * the memory available to the application. 0479 * 0480 * * The value of the configuration option may be defined through 0481 * rtems_resource_unlimited() the enable unlimited objects for the object 0482 * class, if the value passed to rtems_resource_unlimited() satisfies all 0483 * other constraints of the configuration option. 0484 * @endparblock 0485 * 0486 * @par Notes 0487 * This object class can be configured in unlimited allocation mode, see <a 0488 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 0489 * Objects</a>. You have to account for the memory used to store the messages 0490 * of each message queue, see @ref CONFIGURE_MESSAGE_BUFFER_MEMORY. 0491 */ 0492 #define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 0493 0494 /* Generated from spec:/acfg/if/max-partitions */ 0495 0496 /** 0497 * @brief This configuration option is an integer define. 0498 * 0499 * @anchor CONFIGURE_MAXIMUM_PARTITIONS 0500 * 0501 * The value of this configuration option defines the maximum number of Classic 0502 * API Partitions that can be concurrently active. 0503 * 0504 * @par Default Value 0505 * The default value is 0. 0506 * 0507 * @par Constraints 0508 * @parblock 0509 * The following constraints apply to this configuration option: 0510 * 0511 * * The value of the configuration option shall be greater than or equal to 0512 * zero. 0513 * 0514 * * The value of the configuration option shall be less than or equal to 0515 * 65535. 0516 * 0517 * * The value of the configuration option shall be less than or equal to a 0518 * BSP-specific and application-specific value which depends on the size of 0519 * the memory available to the application. 0520 * 0521 * * The value of the configuration option may be defined through 0522 * rtems_resource_unlimited() the enable unlimited objects for the object 0523 * class, if the value passed to rtems_resource_unlimited() satisfies all 0524 * other constraints of the configuration option. 0525 * @endparblock 0526 * 0527 * @par Notes 0528 * This object class can be configured in unlimited allocation mode, see <a 0529 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 0530 * Objects</a>. 0531 */ 0532 #define CONFIGURE_MAXIMUM_PARTITIONS 0533 0534 /* Generated from spec:/acfg/if/max-periods */ 0535 0536 /** 0537 * @brief This configuration option is an integer define. 0538 * 0539 * @anchor CONFIGURE_MAXIMUM_PERIODS 0540 * 0541 * The value of this configuration option defines the maximum number of Classic 0542 * API Periods that can be concurrently active. 0543 * 0544 * @par Default Value 0545 * The default value is 0. 0546 * 0547 * @par Constraints 0548 * @parblock 0549 * The following constraints apply to this configuration option: 0550 * 0551 * * The value of the configuration option shall be greater than or equal to 0552 * zero. 0553 * 0554 * * The value of the configuration option shall be less than or equal to 0555 * 65535. 0556 * 0557 * * The value of the configuration option shall be less than or equal to a 0558 * BSP-specific and application-specific value which depends on the size of 0559 * the memory available to the application. 0560 * 0561 * * The value of the configuration option may be defined through 0562 * rtems_resource_unlimited() the enable unlimited objects for the object 0563 * class, if the value passed to rtems_resource_unlimited() satisfies all 0564 * other constraints of the configuration option. 0565 * @endparblock 0566 * 0567 * @par Notes 0568 * This object class can be configured in unlimited allocation mode, see <a 0569 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 0570 * Objects</a>. 0571 */ 0572 #define CONFIGURE_MAXIMUM_PERIODS 0573 0574 /* Generated from spec:/acfg/if/max-ports */ 0575 0576 /** 0577 * @brief This configuration option is an integer define. 0578 * 0579 * @anchor CONFIGURE_MAXIMUM_PORTS 0580 * 0581 * The value of this configuration option defines the maximum number of Classic 0582 * API Ports that can be concurrently active. 0583 * 0584 * @par Default Value 0585 * The default value is 0. 0586 * 0587 * @par Constraints 0588 * @parblock 0589 * The following constraints apply to this configuration option: 0590 * 0591 * * The value of the configuration option shall be greater than or equal to 0592 * zero. 0593 * 0594 * * The value of the configuration option shall be less than or equal to 0595 * 65535. 0596 * 0597 * * The value of the configuration option shall be less than or equal to a 0598 * BSP-specific and application-specific value which depends on the size of 0599 * the memory available to the application. 0600 * 0601 * * The value of the configuration option may be defined through 0602 * rtems_resource_unlimited() the enable unlimited objects for the object 0603 * class, if the value passed to rtems_resource_unlimited() satisfies all 0604 * other constraints of the configuration option. 0605 * @endparblock 0606 * 0607 * @par Notes 0608 * This object class can be configured in unlimited allocation mode, see <a 0609 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 0610 * Objects</a>. 0611 */ 0612 #define CONFIGURE_MAXIMUM_PORTS 0613 0614 /* Generated from spec:/acfg/if/max-regions */ 0615 0616 /** 0617 * @brief This configuration option is an integer define. 0618 * 0619 * @anchor CONFIGURE_MAXIMUM_REGIONS 0620 * 0621 * The value of this configuration option defines the maximum number of Classic 0622 * API Regions that can be concurrently active. 0623 * 0624 * @par Default Value 0625 * The default value is 0. 0626 * 0627 * @par Constraints 0628 * @parblock 0629 * The following constraints apply to this configuration option: 0630 * 0631 * * The value of the configuration option shall be greater than or equal to 0632 * zero. 0633 * 0634 * * The value of the configuration option shall be less than or equal to 0635 * 65535. 0636 * 0637 * * The value of the configuration option shall be less than or equal to a 0638 * BSP-specific and application-specific value which depends on the size of 0639 * the memory available to the application. 0640 * 0641 * * The value of the configuration option may be defined through 0642 * rtems_resource_unlimited() the enable unlimited objects for the object 0643 * class, if the value passed to rtems_resource_unlimited() satisfies all 0644 * other constraints of the configuration option. 0645 * @endparblock 0646 * 0647 * @par Notes 0648 * This object class can be configured in unlimited allocation mode, see <a 0649 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 0650 * Objects</a>. 0651 */ 0652 #define CONFIGURE_MAXIMUM_REGIONS 0653 0654 /* Generated from spec:/acfg/if/max-semaphores */ 0655 0656 /** 0657 * @brief This configuration option is an integer define. 0658 * 0659 * @anchor CONFIGURE_MAXIMUM_SEMAPHORES 0660 * 0661 * The value of this configuration option defines the maximum number of Classic 0662 * API Semaphore that can be concurrently active. 0663 * 0664 * @par Default Value 0665 * The default value is 0. 0666 * 0667 * @par Constraints 0668 * @parblock 0669 * The following constraints apply to this configuration option: 0670 * 0671 * * The value of the configuration option shall be greater than or equal to 0672 * zero. 0673 * 0674 * * The value of the configuration option shall be less than or equal to 0675 * 65535. 0676 * 0677 * * The value of the configuration option shall be less than or equal to a 0678 * BSP-specific and application-specific value which depends on the size of 0679 * the memory available to the application. 0680 * 0681 * * The value of the configuration option may be defined through 0682 * rtems_resource_unlimited() the enable unlimited objects for the object 0683 * class, if the value passed to rtems_resource_unlimited() satisfies all 0684 * other constraints of the configuration option. 0685 * @endparblock 0686 * 0687 * @par Notes 0688 * @parblock 0689 * This object class can be configured in unlimited allocation mode, see <a 0690 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 0691 * Objects</a>. 0692 * 0693 * In SMP configurations, the size of a Semaphore Control Block depends on the 0694 * scheduler count (see <a 0695 * href="https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html#configuration-step-3-scheduler-table">Configuration 0696 * Step 3 - Scheduler Table</a>). The semaphores using the <a 0697 * href="https://docs.rtems.org/branches/master/c-user/key_concepts.html#multiprocessor-resource-sharing-protocol-mrsp">Multiprocessor 0698 * Resource Sharing Protocol (MrsP)</a> need a ceiling priority per scheduler. 0699 * @endparblock 0700 */ 0701 #define CONFIGURE_MAXIMUM_SEMAPHORES 0702 0703 /* Generated from spec:/acfg/if/max-tasks */ 0704 0705 /** 0706 * @brief This configuration option is an integer define. 0707 * 0708 * @anchor CONFIGURE_MAXIMUM_TASKS 0709 * 0710 * The value of this configuration option defines the maximum number of Classic 0711 * API Tasks that can be concurrently active. 0712 * 0713 * @par Default Value 0714 * The default value is 0. 0715 * 0716 * @par Constraints 0717 * @parblock 0718 * The following constraints apply to this configuration option: 0719 * 0720 * * The value of the configuration option shall be greater than or equal to 0721 * zero. 0722 * 0723 * * The value of the configuration option shall be less than or equal to 0724 * 65535. 0725 * 0726 * * The value of the configuration option shall be less than or equal to a 0727 * BSP-specific and application-specific value which depends on the size of 0728 * the memory available to the application. 0729 * 0730 * * The value of the configuration option shall be small enough so that the 0731 * task stack space calculation carried out by ``<rtems/confdefs.h>`` does 0732 * not overflow an integer of type <a 0733 * href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>. 0734 * 0735 * * The value of the configuration option may be defined through 0736 * rtems_resource_unlimited() the enable unlimited objects for the object 0737 * class, if the value passed to rtems_resource_unlimited() satisfies all 0738 * other constraints of the configuration option. 0739 * @endparblock 0740 * 0741 * @par Notes 0742 * @parblock 0743 * This object class can be configured in unlimited allocation mode, see <a 0744 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 0745 * Objects</a>. 0746 * 0747 * The calculations for the required memory in the RTEMS Workspace for tasks 0748 * assume that each task has a minimum stack size and has floating point 0749 * support enabled. The configuration option @ref CONFIGURE_EXTRA_TASK_STACKS 0750 * is used to specify task stack requirements *above* the minimum size 0751 * required. 0752 * 0753 * The maximum number of POSIX threads is specified by @ref 0754 * CONFIGURE_MAXIMUM_POSIX_THREADS. 0755 * 0756 * A future enhancement to ``<rtems/confdefs.h>`` could be to eliminate the 0757 * assumption that all tasks have floating point enabled. This would require 0758 * the addition of a new configuration parameter to specify the number of tasks 0759 * which enable floating point support. 0760 * @endparblock 0761 */ 0762 #define CONFIGURE_MAXIMUM_TASKS 0763 0764 /* Generated from spec:/acfg/if/max-timers */ 0765 0766 /** 0767 * @brief This configuration option is an integer define. 0768 * 0769 * @anchor CONFIGURE_MAXIMUM_TIMERS 0770 * 0771 * The value of this configuration option defines the maximum number of Classic 0772 * API Timers that can be concurrently active. 0773 * 0774 * @par Default Value 0775 * The default value is 0. 0776 * 0777 * @par Constraints 0778 * @parblock 0779 * The following constraints apply to this configuration option: 0780 * 0781 * * The value of the configuration option shall be greater than or equal to 0782 * zero. 0783 * 0784 * * The value of the configuration option shall be less than or equal to 0785 * 65535. 0786 * 0787 * * The value of the configuration option shall be less than or equal to a 0788 * BSP-specific and application-specific value which depends on the size of 0789 * the memory available to the application. 0790 * 0791 * * The value of the configuration option may be defined through 0792 * rtems_resource_unlimited() the enable unlimited objects for the object 0793 * class, if the value passed to rtems_resource_unlimited() satisfies all 0794 * other constraints of the configuration option. 0795 * @endparblock 0796 * 0797 * @par Notes 0798 * This object class can be configured in unlimited allocation mode, see <a 0799 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 0800 * Objects</a>. 0801 */ 0802 #define CONFIGURE_MAXIMUM_TIMERS 0803 0804 /* Generated from spec:/acfg/if/max-user-extensions */ 0805 0806 /** 0807 * @brief This configuration option is an integer define. 0808 * 0809 * @anchor CONFIGURE_MAXIMUM_USER_EXTENSIONS 0810 * 0811 * The value of this configuration option defines the maximum number of Classic 0812 * API User Extensions that can be concurrently active. 0813 * 0814 * @par Default Value 0815 * The default value is 0. 0816 * 0817 * @par Constraints 0818 * @parblock 0819 * The following constraints apply to this configuration option: 0820 * 0821 * * The value of the configuration option shall be greater than or equal to 0822 * zero. 0823 * 0824 * * The value of the configuration option shall be less than or equal to 0825 * 65535. 0826 * 0827 * * The value of the configuration option shall be less than or equal to a 0828 * BSP-specific and application-specific value which depends on the size of 0829 * the memory available to the application. 0830 * @endparblock 0831 * 0832 * @par Notes 0833 * This object class cannot be configured in unlimited allocation mode. 0834 */ 0835 #define CONFIGURE_MAXIMUM_USER_EXTENSIONS 0836 0837 /* Generated from spec:/acfg/if/min-tasks-with-user-provided-storage */ 0838 0839 /** 0840 * @brief This configuration option is an integer define. 0841 * 0842 * @anchor CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE 0843 * 0844 * The value of this configuration option defines the minimum count of Classic 0845 * API Tasks which are constructed by rtems_task_construct(). 0846 * 0847 * @par Default Value 0848 * The default value is 0. 0849 * 0850 * @par Constraints 0851 * @parblock 0852 * The following constraints apply to this configuration option: 0853 * 0854 * * The value of the configuration option shall be greater than or equal to 0855 * zero. 0856 * 0857 * * The value of the configuration option shall be less than or equal to @ref 0858 * CONFIGURE_MAXIMUM_TASKS. 0859 * @endparblock 0860 * 0861 * @par Notes 0862 * By default, the calculation for the required memory in the RTEMS Workspace 0863 * for tasks assumes that all Classic API Tasks are created by 0864 * rtems_task_create(). This configuration option can be used to reduce the 0865 * required memory for the system-provided task storage areas since tasks 0866 * constructed by rtems_task_construct() use a user-provided task storage area. 0867 */ 0868 #define CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE 0869 0870 /** @} */ 0871 0872 /* Generated from spec:/acfg/if/group-classicinit */ 0873 0874 /** 0875 * @defgroup RTEMSApplConfigClassicAPIInitializationTaskConfiguration \ 0876 * Classic API Initialization Task Configuration 0877 * 0878 * @ingroup RTEMSApplConfig 0879 * 0880 * This section describes configuration options related to the Classic API 0881 * initialization task. 0882 * 0883 * @{ 0884 */ 0885 0886 /* Generated from spec:/acfg/if/init-task-arguments */ 0887 0888 /** 0889 * @brief This configuration option is an integer define. 0890 * 0891 * @anchor CONFIGURE_INIT_TASK_ARGUMENTS 0892 * 0893 * The value of this configuration option defines task argument of the Classic 0894 * API initialization task. 0895 * 0896 * @par Default Value 0897 * The default value is 0. 0898 * 0899 * @par Constraints 0900 * The value of the configuration option shall be convertible to an integer of 0901 * type ::rtems_task_argument. 0902 */ 0903 #define CONFIGURE_INIT_TASK_ARGUMENTS 0904 0905 /* Generated from spec:/acfg/if/init-task-attributes */ 0906 0907 /** 0908 * @brief This configuration option is an integer define. 0909 * 0910 * @anchor CONFIGURE_INIT_TASK_ATTRIBUTES 0911 * 0912 * The value of this configuration option defines the task attributes of the 0913 * Classic API initialization task. 0914 * 0915 * @par Default Value 0916 * The default value is #RTEMS_DEFAULT_ATTRIBUTES. 0917 * 0918 * @par Constraints 0919 * The value of the configuration option shall be a valid task attribute set. 0920 */ 0921 #define CONFIGURE_INIT_TASK_ATTRIBUTES 0922 0923 /* Generated from spec:/acfg/if/init-task-construct-storage-size */ 0924 0925 /** 0926 * @brief This configuration option is an integer define. 0927 * 0928 * @anchor CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE 0929 * 0930 * The value of this configuration option defines the task storage size of the 0931 * Classic API initialization task. 0932 * 0933 * @par Default Value 0934 * This configuration option has no default value. If it is not specified, 0935 * then the Classic API initialization task will be created with the stack size 0936 * defined by the @ref CONFIGURE_INIT_TASK_STACK_SIZE configuration option. 0937 * 0938 * @par Constraints 0939 * @parblock 0940 * The following constraints apply to this configuration option: 0941 * 0942 * * The value of the configuration option shall be greater than or equal to 0943 * @ref CONFIGURE_MINIMUM_TASK_STACK_SIZE. 0944 * 0945 * * The value of the configuration option shall be defined using 0946 * RTEMS_TASK_STORAGE_SIZE(). 0947 * @endparblock 0948 * 0949 * @par Notes 0950 * @parblock 0951 * If this configuration option is specified, then 0952 * 0953 * * a task storage area of the specified size is statically allocated by 0954 * ``<rtems/confdefs.h>`` for the Classic API initialization task, 0955 * 0956 * * the Classic API initialization task is constructed by 0957 * rtems_task_construct() instead of using rtems_task_create(), 0958 * 0959 * * the maximum thread-local storage size defined by @ref 0960 * CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE is used for the Classic API 0961 * initialization task, 0962 * 0963 * * the Classic API initialization task should be accounted for in @ref 0964 * CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE, and 0965 * 0966 * * the task storage area used for the Classic API initialization task is not 0967 * reclaimed by the system if the task is deleted. 0968 * 0969 * The 0970 * 0971 * * @ref CONFIGURE_INIT_TASK_STACK_SIZE and 0972 * 0973 * * ``CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE`` 0974 * 0975 * configuration options are mutually exclusive. 0976 * @endparblock 0977 */ 0978 #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE 0979 0980 /* Generated from spec:/acfg/if/init-task-entrypoint */ 0981 0982 /** 0983 * @brief This configuration option is an initializer define. 0984 * 0985 * @anchor CONFIGURE_INIT_TASK_ENTRY_POINT 0986 * 0987 * The value of this configuration option initializes the entry point of the 0988 * Classic API initialization task. 0989 * 0990 * @par Default Value 0991 * The default value is ``Init``. 0992 * 0993 * @par Constraints 0994 * The value of the configuration option shall be defined to a valid function 0995 * pointer of the type ``void ( *entry_point )( rtems_task_argument )``. 0996 * 0997 * @par Notes 0998 * The application shall provide the function referenced by this configuration 0999 * 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/background.html#terminate">System 1796 * Termination Procedure</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/background.html#terminate">System 1823 * Termination Procedure</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 * @parblock 2805 * The value of this configuration option is placed before the entries of 2806 * #BSP_INITIAL_EXTENSION and after the entries of all other initial user 2807 * extensions. 2808 * 2809 * It is recommended that applications provide a fatal extension to customize 2810 * the <a 2811 * href="https://docs.rtems.org/branches/master/c-user/fatal-error/background.html#terminate">System 2812 * Termination Procedure</a>. 2813 * @endparblock 2814 */ 2815 #define CONFIGURE_INITIAL_EXTENSIONS 2816 2817 /* Generated from spec:/acfg/if/interrupt-stack-size */ 2818 2819 /** 2820 * @brief This configuration option is an integer define. 2821 * 2822 * @anchor CONFIGURE_INTERRUPT_STACK_SIZE 2823 * 2824 * The value of this configuration option defines the size of an interrupt 2825 * stack in bytes. 2826 * 2827 * @par Default Value 2828 * If the @ref CONFIGURE_DISABLE_BSP_SETTINGS configuration option is not 2829 * defined and #BSP_INTERRUPT_STACK_SIZE is provided by the BSP, then the 2830 * default value is defined by #BSP_INTERRUPT_STACK_SIZE, otherwise the default 2831 * value is #CPU_STACK_MINIMUM_SIZE. 2832 * 2833 * @par Constraints 2834 * @parblock 2835 * The following constraints apply to this configuration option: 2836 * 2837 * * The value of the configuration option shall be greater than or equal to a 2838 * BSP-specific and application-specific minimum value. 2839 * 2840 * * The value of the configuration option shall be small enough so that the 2841 * interrupt stack area calculation carried out by ``<rtems/confdefs.h>`` 2842 * does not overflow an integer of type <a 2843 * href="https://en.cppreference.com/w/c/types/size_t">size_t</a>. 2844 * 2845 * * The value of the configuration option shall be aligned according to 2846 * #CPU_INTERRUPT_STACK_ALIGNMENT. 2847 * @endparblock 2848 * 2849 * @par Notes 2850 * @parblock 2851 * There is one interrupt stack available for each configured processor (@ref 2852 * CONFIGURE_MAXIMUM_PROCESSORS). The interrupt stack areas are statically 2853 * allocated in a special linker section (``.rtemsstack.interrupt``). The 2854 * placement of this linker section is BSP-specific. 2855 * 2856 * Some BSPs use the interrupt stack as the initialization stack which is used 2857 * to perform the sequential system initialization before the multithreading is 2858 * started. 2859 * 2860 * The interrupt stacks are covered by the stack checker, see @ref 2861 * CONFIGURE_STACK_CHECKER_ENABLED. However, using a too small interrupt stack 2862 * size may still result in undefined behaviour. 2863 * 2864 * The interrupt stack size may depend on the interrupt priority settings, see 2865 * also rtems_interrupt_set_priority(). 2866 * 2867 * In releases before RTEMS 5.1 the default value was @ref 2868 * CONFIGURE_MINIMUM_TASK_STACK_SIZE instead of #CPU_STACK_MINIMUM_SIZE. 2869 * @endparblock 2870 */ 2871 #define CONFIGURE_INTERRUPT_STACK_SIZE 2872 2873 /* Generated from spec:/acfg/if/malloc-dirty */ 2874 2875 /** 2876 * @brief This configuration option is a boolean feature define. 2877 * 2878 * @anchor CONFIGURE_MALLOC_DIRTY 2879 * 2880 * In case this configuration option is defined, then each memory area returned 2881 * by C Program Heap allocator functions such as malloc() is dirtied with a 2882 * ``0xCF`` byte pattern before it is handed over to the application. 2883 * 2884 * @par Default Configuration 2885 * If this configuration option is undefined, then the described feature is not 2886 * enabled. 2887 * 2888 * @par Notes 2889 * The dirtying performed by this option is carried out for each successful 2890 * memory allocation from the C Program Heap in contrast to @ref 2891 * CONFIGURE_DIRTY_MEMORY which dirties the memory only once during the system 2892 * initialization. 2893 */ 2894 #define CONFIGURE_MALLOC_DIRTY 2895 2896 /* Generated from spec:/acfg/if/max-file-descriptors */ 2897 2898 /** 2899 * @brief This configuration option is an integer define. 2900 * 2901 * @anchor CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 2902 * 2903 * The value of this configuration option defines the maximum number of file 2904 * like objects that can be concurrently open. 2905 * 2906 * @par Default Value 2907 * The default value is 3. 2908 * 2909 * @par Constraints 2910 * @parblock 2911 * The following constraints apply to this configuration option: 2912 * 2913 * * The value of the configuration option shall be greater than or equal to 2914 * zero. 2915 * 2916 * * The value of the configuration option shall be less than or equal to <a 2917 * href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>. 2918 * 2919 * * The value of the configuration option shall be less than or equal to a 2920 * BSP-specific and application-specific value which depends on the size of 2921 * the memory available to the application. 2922 * @endparblock 2923 * 2924 * @par Notes 2925 * The default value of three file descriptors allows RTEMS to support standard 2926 * input, output, and error I/O streams on ``/dev/console``. 2927 */ 2928 #define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 2929 2930 /* Generated from spec:/acfg/if/max-processors */ 2931 2932 /** 2933 * @brief This configuration option is an integer define. 2934 * 2935 * @anchor CONFIGURE_MAXIMUM_PROCESSORS 2936 * 2937 * The value of this configuration option defines the maximum number of 2938 * processors an application intends to use. The number of actually available 2939 * processors depends on the hardware and may be less. It is recommended to 2940 * use the smallest value suitable for the application in order to save memory. 2941 * Each processor needs an IDLE task stack and interrupt stack for example. 2942 * 2943 * @par Default Value 2944 * The default value is 1. 2945 * 2946 * @par Constraints 2947 * @parblock 2948 * The following constraints apply to this configuration option: 2949 * 2950 * * The value of the configuration option shall be greater than or equal to 2951 * one. 2952 * 2953 * * The value of the configuration option shall be less than or equal to 2954 * #CPU_MAXIMUM_PROCESSORS. 2955 * @endparblock 2956 * 2957 * @par Notes 2958 * @parblock 2959 * If there are more processors available than configured, the rest will be 2960 * ignored. 2961 * 2962 * This configuration option is only evaluated in SMP configurations of RTEMS 2963 * (e.g. RTEMS was built with the SMP build configuration option enabled). In 2964 * all other configurations it has no effect. 2965 * @endparblock 2966 */ 2967 #define CONFIGURE_MAXIMUM_PROCESSORS 2968 2969 /* Generated from spec:/acfg/if/max-thread-local-storage-size */ 2970 2971 /** 2972 * @brief This configuration option is an integer define. 2973 * 2974 * @anchor CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE 2975 * 2976 * If the value of this configuration option is greater than zero, then it 2977 * defines the maximum thread-local storage size, otherwise the thread-local 2978 * storage size is defined by the linker depending on the thread-local storage 2979 * objects used by the application in the statically-linked executable. 2980 * 2981 * @par Default Value 2982 * The default value is 0. 2983 * 2984 * @par Constraints 2985 * @parblock 2986 * The following constraints apply to this configuration option: 2987 * 2988 * * The value of the configuration option shall be greater than or equal to 2989 * zero. 2990 * 2991 * * The value of the configuration option shall be less than or equal to <a 2992 * href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>. 2993 * 2994 * * The value of the configuration option shall be an integral multiple of 2995 * #RTEMS_TASK_STORAGE_ALIGNMENT. 2996 * @endparblock 2997 * 2998 * @par Notes 2999 * @parblock 3000 * This configuration option can be used to reserve space for the dynamic 3001 * linking of modules with thread-local storage objects. 3002 * 3003 * If the thread-local storage size defined by the thread-local storage objects 3004 * used by the application in the statically-linked executable is greater than 3005 * a non-zero value of this configuration option, then a fatal error will occur 3006 * during system initialization. 3007 * 3008 * Use RTEMS_ALIGN_UP() and #RTEMS_TASK_STORAGE_ALIGNMENT to adjust the size to 3009 * meet the minimum alignment requirement of a thread-local storage area. 3010 * 3011 * The actual thread-local storage size is determined when the application 3012 * executable is linked. The ``rtems-exeinfo`` command line tool included in 3013 * the RTEMS Tools can be used to obtain the thread-local storage size and 3014 * alignment of an application executable. 3015 * @endparblock 3016 */ 3017 #define CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE 3018 3019 /* Generated from spec:/acfg/if/max-thread-name-size */ 3020 3021 /** 3022 * @brief This configuration option is an integer define. 3023 * 3024 * @anchor CONFIGURE_MAXIMUM_THREAD_NAME_SIZE 3025 * 3026 * The value of this configuration option defines the maximum thread name size 3027 * including the terminating ``NUL`` character. 3028 * 3029 * @par Default Value 3030 * The default value is 16. 3031 * 3032 * @par Constraints 3033 * @parblock 3034 * The following constraints apply to this configuration option: 3035 * 3036 * * The value of the configuration option shall be greater than or equal to 3037 * zero. 3038 * 3039 * * The value of the configuration option shall be less than or equal to <a 3040 * href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>. 3041 * 3042 * * The value of the configuration option shall be less than or equal to a 3043 * BSP-specific and application-specific value which depends on the size of 3044 * the memory available to the application. 3045 * @endparblock 3046 * 3047 * @par Notes 3048 * @parblock 3049 * The default value was chosen for Linux compatibility, see <a 3050 * href="http://man7.org/linux/man-pages/man3/pthread_setname_np.3.html">pthread_setname_np()</a>. 3051 * 3052 * The size of the thread control block is increased by the maximum thread name 3053 * size. 3054 * 3055 * This configuration option is available since RTEMS 5.1. 3056 * @endparblock 3057 */ 3058 #define CONFIGURE_MAXIMUM_THREAD_NAME_SIZE 3059 3060 /* Generated from spec:/acfg/if/memory-overhead */ 3061 3062 /** 3063 * @brief This configuration option is an integer define. 3064 * 3065 * @anchor CONFIGURE_MEMORY_OVERHEAD 3066 * 3067 * The value of this configuration option defines the number of kilobytes the 3068 * application wishes to add to the RTEMS Workspace size calculated by 3069 * ``<rtems/confdefs.h>``. 3070 * 3071 * @par Default Value 3072 * The default value is 0. 3073 * 3074 * @par Constraints 3075 * @parblock 3076 * The following constraints apply to this configuration option: 3077 * 3078 * * The value of the configuration option shall be greater than or equal to 3079 * zero. 3080 * 3081 * * The value of the configuration option shall be less than or equal to a 3082 * BSP-specific and application-specific value which depends on the size of 3083 * the memory available to the application. 3084 * 3085 * * The value of the configuration option shall be small enough so that the 3086 * RTEMS Workspace size calculation carried out by ``<rtems/confdefs.h>`` 3087 * does not overflow an integer of type <a 3088 * href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>. 3089 * @endparblock 3090 * 3091 * @par Notes 3092 * This configuration option should only be used when it is suspected that a 3093 * bug in ``<rtems/confdefs.h>`` has resulted in an underestimation. Typically 3094 * the memory allocation will be too low when an application does not account 3095 * for all message queue buffers or task stacks, see @ref 3096 * CONFIGURE_MESSAGE_BUFFER_MEMORY. 3097 */ 3098 #define CONFIGURE_MEMORY_OVERHEAD 3099 3100 /* Generated from spec:/acfg/if/message-buffer-memory */ 3101 3102 /** 3103 * @brief This configuration option is an integer define. 3104 * 3105 * @anchor CONFIGURE_MESSAGE_BUFFER_MEMORY 3106 * 3107 * The value of this configuration option defines the number of bytes reserved 3108 * for message queue buffers in the RTEMS Workspace. 3109 * 3110 * @par Default Value 3111 * The default value is 0. 3112 * 3113 * @par Constraints 3114 * @parblock 3115 * The following constraints apply to this configuration option: 3116 * 3117 * * The value of the configuration option shall be greater than or equal to 3118 * zero. 3119 * 3120 * * The value of the configuration option shall be less than or equal to a 3121 * BSP-specific and application-specific value which depends on the size of 3122 * the memory available to the application. 3123 * 3124 * * The value of the configuration option shall be small enough so that the 3125 * RTEMS Workspace size calculation carried out by ``<rtems/confdefs.h>`` 3126 * does not overflow an integer of type <a 3127 * href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>. 3128 * @endparblock 3129 * 3130 * @par Notes 3131 * @parblock 3132 * The configuration options @ref CONFIGURE_MAXIMUM_MESSAGE_QUEUES and @ref 3133 * CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES define only how many message queues 3134 * can be created by the application. The memory for the message buffers is 3135 * configured by this option. For each message queue you have to reserve some 3136 * memory for the message buffers. The size depends on the maximum number of 3137 * pending messages and the maximum size of the messages of a message queue. 3138 * Use the ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE()`` macro to specify the 3139 * message buffer memory for each message queue and sum them up to define the 3140 * value for ``CONFIGURE_MAXIMUM_MESSAGE_QUEUES``. 3141 * 3142 * The interface for the ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE()`` help macro 3143 * is as follows: 3144 * 3145 * @code 3146 * CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( max_messages, max_msg_size ) 3147 * @endcode 3148 * 3149 * Where ``max_messages`` is the maximum number of pending messages and 3150 * ``max_msg_size`` is the maximum size in bytes of the messages of the 3151 * corresponding message queue. Both parameters shall be compile time 3152 * constants. Not using this help macro (e.g. just using ``max_messages * 3153 * max_msg_size``) may result in an underestimate of the RTEMS Workspace size. 3154 * 3155 * The following example illustrates how the 3156 * ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE()`` help macro can be used to assist 3157 * in calculating the message buffer memory required. In this example, there 3158 * are two message queues used in this application. The first message queue 3159 * has a maximum of 24 pending messages with the message structure defined by 3160 * the type ``one_message_type``. The other message queue has a maximum of 500 3161 * pending messages with the message structure defined by the type 3162 * ``other_message_type``. 3163 * 3164 * @code 3165 * #define CONFIGURE_MESSAGE_BUFFER_MEMORY ( \ 3166 * CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( \ 3167 * 24, \ 3168 * sizeof( one_message_type ) \ 3169 * ) \ 3170 * + CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( \ 3171 * 500, \ 3172 * sizeof( other_message_type ) \ 3173 * ) \ 3174 * ) 3175 * @endcode 3176 * @endparblock 3177 */ 3178 #define CONFIGURE_MESSAGE_BUFFER_MEMORY 3179 3180 /* Generated from spec:/acfg/if/microseconds-per-tick */ 3181 3182 /** 3183 * @brief This configuration option is an integer define. 3184 * 3185 * @anchor CONFIGURE_MICROSECONDS_PER_TICK 3186 * 3187 * The value of this configuration option defines the length of time in 3188 * microseconds between clock ticks (clock tick quantum). 3189 * 3190 * When the clock tick quantum value is too low, the system will spend so much 3191 * time processing clock ticks that it does not have processing time available 3192 * to perform application work. In this case, the system will become 3193 * unresponsive. 3194 * 3195 * The lowest practical time quantum varies widely based upon the speed of the 3196 * target hardware and the architectural overhead associated with interrupts. 3197 * In general terms, you do not want to configure it lower than is needed for 3198 * the application. 3199 * 3200 * The clock tick quantum should be selected such that it all blocking and 3201 * delay times in the application are evenly divisible by it. Otherwise, 3202 * rounding errors will be introduced which may negatively impact the 3203 * application. 3204 * 3205 * @par Default Value 3206 * The default value is 10000. 3207 * 3208 * @par Constraints 3209 * @parblock 3210 * The following constraints apply to this configuration option: 3211 * 3212 * * The value of the configuration option shall be greater than or equal to a 3213 * value defined by the Clock Driver. 3214 * 3215 * * The value of the configuration option shall be less than or equal to a 3216 * value defined by the Clock Driver. 3217 * 3218 * * The resulting clock ticks per second should be an integer. 3219 * @endparblock 3220 * 3221 * @par Notes 3222 * @parblock 3223 * This configuration option has no impact if the Clock Driver is not 3224 * configured, see @ref CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER. 3225 * 3226 * There may be Clock Driver specific limits on the resolution or maximum value 3227 * of a clock tick quantum. 3228 * @endparblock 3229 */ 3230 #define CONFIGURE_MICROSECONDS_PER_TICK 3231 3232 /* Generated from spec:/acfg/if/min-task-stack-size */ 3233 3234 /** 3235 * @brief This configuration option is an integer define. 3236 * 3237 * @anchor CONFIGURE_MINIMUM_TASK_STACK_SIZE 3238 * 3239 * The value of this configuration option defines the minimum stack size in 3240 * bytes for every user task or thread in the system. 3241 * 3242 * @par Default Value 3243 * The default value is #CPU_STACK_MINIMUM_SIZE. 3244 * 3245 * @par Constraints 3246 * @parblock 3247 * The following constraints apply to this configuration option: 3248 * 3249 * * The value of the configuration option shall be small enough so that the 3250 * task stack space calculation carried out by ``<rtems/confdefs.h>`` does 3251 * not overflow an integer of type <a 3252 * href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>. 3253 * 3254 * * The value of the configuration option shall be greater than or equal to a 3255 * BSP-specific and application-specific minimum value. 3256 * @endparblock 3257 * 3258 * @par Notes 3259 * @parblock 3260 * Adjusting this parameter should be done with caution. Examining the actual 3261 * stack usage using the stack checker usage reporting facility is recommended 3262 * (see also @ref CONFIGURE_STACK_CHECKER_ENABLED). 3263 * 3264 * This parameter can be used to lower the minimum from that recommended. This 3265 * can be used in low memory systems to reduce memory consumption for stacks. 3266 * However, this shall be done with caution as it could increase the 3267 * possibility of a blown task stack. 3268 * 3269 * This parameter can be used to increase the minimum from that recommended. 3270 * This can be used in higher memory systems to reduce the risk of stack 3271 * overflow without performing analysis on actual consumption. 3272 * 3273 * By default, this configuration parameter defines also the minimum stack size 3274 * of POSIX threads. This can be changed with the @ref 3275 * CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE configuration option. 3276 * 3277 * In releases before RTEMS 5.1 the ``CONFIGURE_MINIMUM_TASK_STACK_SIZE`` was 3278 * used to define the default value of @ref CONFIGURE_INTERRUPT_STACK_SIZE. 3279 * @endparblock 3280 */ 3281 #define CONFIGURE_MINIMUM_TASK_STACK_SIZE 3282 3283 /* Generated from spec:/acfg/if/stack-checker-enabled */ 3284 3285 /** 3286 * @brief This configuration option is a boolean feature define. 3287 * 3288 * @anchor CONFIGURE_STACK_CHECKER_ENABLED 3289 * 3290 * In case this configuration option is defined, then the stack checker is 3291 * enabled. 3292 * 3293 * @par Default Configuration 3294 * If this configuration option is undefined, then the described feature is not 3295 * enabled. 3296 * 3297 * @par Notes 3298 * @parblock 3299 * The stack checker performs run-time stack bounds checking. This increases 3300 * the time required to create tasks as well as adding overhead to each context 3301 * switch. 3302 * 3303 * In 4.9 and older, this configuration option was named ``STACK_CHECKER_ON``. 3304 * @endparblock 3305 */ 3306 #define CONFIGURE_STACK_CHECKER_ENABLED 3307 3308 /* Generated from spec:/acfg/if/ticks-per-time-slice */ 3309 3310 /** 3311 * @brief This configuration option is an integer define. 3312 * 3313 * @anchor CONFIGURE_TICKS_PER_TIMESLICE 3314 * 3315 * The value of this configuration option defines the length of the timeslice 3316 * quantum in ticks for each task. 3317 * 3318 * @par Default Value 3319 * The default value is 50. 3320 * 3321 * @par Constraints 3322 * @parblock 3323 * The following constraints apply to this configuration option: 3324 * 3325 * * The value of the configuration option shall be greater than or equal to 3326 * one. 3327 * 3328 * * The value of the configuration option shall be less than or equal to <a 3329 * href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>. 3330 * @endparblock 3331 * 3332 * @par Notes 3333 * This configuration option has no impact if the Clock Driver is not 3334 * configured, see @ref CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER. 3335 */ 3336 #define CONFIGURE_TICKS_PER_TIMESLICE 3337 3338 /* Generated from spec:/acfg/if/unified-work-areas */ 3339 3340 /** 3341 * @brief This configuration option is a boolean feature define. 3342 * 3343 * @anchor CONFIGURE_UNIFIED_WORK_AREAS 3344 * 3345 * In case this configuration option is defined, then the RTEMS Workspace and 3346 * the C Program Heap will be one pool of memory. 3347 * 3348 * @par Default Configuration 3349 * If this configuration option is undefined, then there will be separate 3350 * memory pools for the RTEMS Workspace and C Program Heap. 3351 * 3352 * @par Notes 3353 * @parblock 3354 * Having separate pools does have some advantages in the event a task blows a 3355 * stack or writes outside its memory area. However, in low memory systems the 3356 * overhead of the two pools plus the potential for unused memory in either 3357 * pool is very undesirable. 3358 * 3359 * In high memory environments, this is desirable when you want to use the <a 3360 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 3361 * Objects</a> option. You will be able to create objects until you run out of 3362 * all available memory rather then just until you run out of RTEMS Workspace. 3363 * @endparblock 3364 */ 3365 #define CONFIGURE_UNIFIED_WORK_AREAS 3366 3367 /* Generated from spec:/acfg/if/unlimited-allocation-size */ 3368 3369 /** 3370 * @brief This configuration option is an integer define. 3371 * 3372 * @anchor CONFIGURE_UNLIMITED_ALLOCATION_SIZE 3373 * 3374 * If @ref CONFIGURE_UNLIMITED_OBJECTS is defined, then the value of this 3375 * configuration option defines the default objects maximum of all object 3376 * classes supporting <a 3377 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 3378 * Objects</a> to ``rtems_resource_unlimited( 3379 * CONFIGURE_UNLIMITED_ALLOCATION_SIZE )``. 3380 * 3381 * @par Default Value 3382 * The default value is 8. 3383 * 3384 * @par Constraints 3385 * The value of the configuration option shall meet the constraints of all 3386 * object classes to which it is applied. 3387 * 3388 * @par Notes 3389 * @parblock 3390 * By allowing users to declare all resources as being unlimited the user can 3391 * avoid identifying and limiting the resources used. 3392 * 3393 * The object maximum of each class can be configured also individually using 3394 * the rtems_resource_unlimited() macro. 3395 * @endparblock 3396 */ 3397 #define CONFIGURE_UNLIMITED_ALLOCATION_SIZE 3398 3399 /* Generated from spec:/acfg/if/unlimited-objects */ 3400 3401 /** 3402 * @brief This configuration option is a boolean feature define. 3403 * 3404 * @anchor CONFIGURE_UNLIMITED_OBJECTS 3405 * 3406 * In case this configuration option is defined, then unlimited objects are 3407 * used by default. 3408 * 3409 * @par Default Configuration 3410 * If this configuration option is undefined, then the described feature is not 3411 * enabled. 3412 * 3413 * @par Notes 3414 * @parblock 3415 * When using unlimited objects, it is common practice to also specify @ref 3416 * CONFIGURE_UNIFIED_WORK_AREAS so the system operates with a single pool of 3417 * memory for both RTEMS Workspace and C Program Heap. 3418 * 3419 * This option does not override an explicit configuration for a particular 3420 * object class by the user. 3421 * 3422 * See also @ref CONFIGURE_UNLIMITED_ALLOCATION_SIZE. 3423 * @endparblock 3424 */ 3425 #define CONFIGURE_UNLIMITED_OBJECTS 3426 3427 /* Generated from spec:/acfg/if/verbose-system-init */ 3428 3429 /** 3430 * @brief This configuration option is a boolean feature define. 3431 * 3432 * @anchor CONFIGURE_VERBOSE_SYSTEM_INITIALIZATION 3433 * 3434 * In case this configuration option is defined, then the system initialization 3435 * is verbose. 3436 * 3437 * @par Default Configuration 3438 * If this configuration option is undefined, then the described feature is not 3439 * enabled. 3440 * 3441 * @par Notes 3442 * You may use this feature to debug system initialization issues. The 3443 * printk() function is used to print the information. 3444 */ 3445 #define CONFIGURE_VERBOSE_SYSTEM_INITIALIZATION 3446 3447 /* Generated from spec:/acfg/if/zero-workspace-automatically */ 3448 3449 /** 3450 * @brief This configuration option is a boolean feature define. 3451 * 3452 * @anchor CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY 3453 * 3454 * In case this configuration option is defined, then the memory areas used for 3455 * the RTEMS Workspace and the C Program Heap are zeroed with a ``0x00`` byte 3456 * pattern during system initialization. 3457 * 3458 * @par Default Configuration 3459 * If this configuration option is undefined, then the described feature is not 3460 * enabled. 3461 * 3462 * @par Notes 3463 * Zeroing memory can add significantly to the system initialization time. It 3464 * is not necessary for RTEMS but is often assumed by support libraries. In 3465 * case @ref CONFIGURE_DIRTY_MEMORY is also defined, then the memory is first 3466 * dirtied and then zeroed. 3467 */ 3468 #define CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY 3469 3470 /** @} */ 3471 3472 /* Generated from spec:/acfg/if/group-idle */ 3473 3474 /** 3475 * @defgroup RTEMSApplConfigIdleTaskConfiguration Idle Task Configuration 3476 * 3477 * @ingroup RTEMSApplConfig 3478 * 3479 * This section describes configuration options related to the idle tasks. 3480 * 3481 * @{ 3482 */ 3483 3484 /* Generated from spec:/acfg/if/idle-task-body */ 3485 3486 /** 3487 * @brief This configuration option is an initializer define. 3488 * 3489 * @anchor CONFIGURE_IDLE_TASK_BODY 3490 * 3491 * The value of this configuration option initializes the IDLE thread body. 3492 * 3493 * @par Default Value 3494 * If the @ref CONFIGURE_DISABLE_BSP_SETTINGS configuration option is not 3495 * defined and #BSP_IDLE_TASK_BODY is provided by the BSP, then the default 3496 * value is defined by #BSP_IDLE_TASK_BODY, otherwise the default value is 3497 * ``_CPU_Thread_Idle_body``. 3498 * 3499 * @par Constraints 3500 * The value of the configuration option shall be defined to a valid function 3501 * pointer of the type ``void *( *idle_body )( uintptr_t )``. 3502 * 3503 * @par Notes 3504 * @parblock 3505 * IDLE threads shall not block. A blocking IDLE thread results in undefined 3506 * system behaviour because the scheduler assume that at least one ready thread 3507 * exists. 3508 * 3509 * IDLE threads can be used to initialize the application, see configuration 3510 * option @ref CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION. 3511 * 3512 * The BSP may have knowledge of the specific CPU model, system controller 3513 * logic, and peripheral buses, so a BSP-specific IDLE task may be capable of 3514 * turning components off to save power during extended periods of no task 3515 * activity. 3516 * @endparblock 3517 */ 3518 #define CONFIGURE_IDLE_TASK_BODY 3519 3520 /* Generated from spec:/acfg/if/idle-task-init-appl */ 3521 3522 /** 3523 * @brief This configuration option is a boolean feature define. 3524 * 3525 * @anchor CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION 3526 * 3527 * This configuration option is defined to indicate that the user has 3528 * configured **no** user initialization tasks or threads and that the user 3529 * provided IDLE task will perform application initialization and then 3530 * transform itself into an IDLE task. 3531 * 3532 * @par Default Configuration 3533 * If this configuration option is undefined, then the user is assumed to 3534 * provide one or more initialization tasks. 3535 * 3536 * @par Notes 3537 * @parblock 3538 * If you use this option be careful, the user IDLE task **cannot** block at 3539 * all during the initialization sequence. Further, once application 3540 * initialization is complete, it shall make itself preemptible and enter an 3541 * idle body loop. 3542 * 3543 * The IDLE task shall run at the lowest priority of all tasks in the system. 3544 * 3545 * If this configuration option is defined, then it is mandatory to configure a 3546 * user IDLE task with the @ref CONFIGURE_IDLE_TASK_BODY configuration option, 3547 * otherwise a compile time error in the configuration file will occur. 3548 * 3549 * The application shall define at least one of the following configuration 3550 * options 3551 * 3552 * * @ref CONFIGURE_RTEMS_INIT_TASKS_TABLE, 3553 * 3554 * * @ref CONFIGURE_POSIX_INIT_THREAD_TABLE, or 3555 * 3556 * * ``CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION`` 3557 * 3558 * otherwise a compile time error in the configuration file will occur. 3559 * 3560 * If no Classic API initialization task and no POSIX API initialization thread 3561 * is configured, then no <a 3562 * href="https://docs.rtems.org/branches/master/c-user/initialization/operations.html">Global 3563 * Construction</a> is performed. 3564 * @endparblock 3565 */ 3566 #define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION 3567 3568 /* Generated from spec:/acfg/if/idle-task-stack-size */ 3569 3570 /** 3571 * @brief This configuration option is an integer define. 3572 * 3573 * @anchor CONFIGURE_IDLE_TASK_STACK_SIZE 3574 * 3575 * The value of this configuration option defines the task stack size for an 3576 * IDLE task. 3577 * 3578 * @par Default Value 3579 * If the @ref CONFIGURE_DISABLE_BSP_SETTINGS configuration option is not 3580 * defined and #BSP_IDLE_TASK_STACK_SIZE is provided by the BSP, then the 3581 * default value is defined by #BSP_IDLE_TASK_STACK_SIZE, otherwise the default 3582 * value is defined by the @ref CONFIGURE_MINIMUM_TASK_STACK_SIZE configuration 3583 * option. 3584 * 3585 * @par Constraints 3586 * @parblock 3587 * The following constraints apply to this configuration option: 3588 * 3589 * * The value of the configuration option shall be greater than or equal to a 3590 * BSP-specific and application-specific minimum value. 3591 * 3592 * * The value of the configuration option shall be small enough so that the 3593 * IDLE task stack area calculation carried out by ``<rtems/confdefs.h>`` 3594 * does not overflow an integer of type <a 3595 * href="https://en.cppreference.com/w/c/types/size_t">size_t</a>. 3596 * @endparblock 3597 * 3598 * @par Notes 3599 * In SMP configurations, there is one IDLE task per configured processor, see 3600 * @ref CONFIGURE_MAXIMUM_PROCESSORS. 3601 */ 3602 #define CONFIGURE_IDLE_TASK_STACK_SIZE 3603 3604 /* Generated from spec:/acfg/if/idle-task-storage-size */ 3605 3606 /** 3607 * @brief This configuration option is an integer define. 3608 * 3609 * @anchor CONFIGURE_IDLE_TASK_STORAGE_SIZE 3610 * 3611 * If this configuration option is specified, then the task storage areas for 3612 * the IDLE tasks are statically allocated by ``<rtems/confdefs.h>``. The 3613 * value of this configuration option defines the size in bytes of the task 3614 * storage area of each IDLE task in the system. 3615 * 3616 * @par Default Value 3617 * This configuration option has no default value. If it is not specified, 3618 * then the task storage area for each IDLE task will allocated from the RTEMS 3619 * Workspace or through a custom IDLE task stack allocator. 3620 * 3621 * @par Constraints 3622 * The value of the configuration option shall be greater than or equal to @ref 3623 * CONFIGURE_IDLE_TASK_STACK_SIZE. 3624 * 3625 * @par Notes 3626 * @parblock 3627 * By default, the IDLE task storage areas are allocated from the RTEMS 3628 * Workspace. Applications which do not want to use a heap allocator can use 3629 * this configuration option to use statically allocated memory for the IDLE 3630 * task storage areas. The task storage area contains the task stack, the 3631 * thread-local storage, and the floating-point context on architectures with a 3632 * separate floating-point context. The size of the thread-local storage area 3633 * is defined at link time or by the @ref 3634 * CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE configuration option. You have 3635 * to estimate the actual thread-local storage size if you want to use this 3636 * configuration option. If the IDLE task stack size would be less than the 3637 * value defined by the @ref CONFIGURE_IDLE_TASK_STACK_SIZE configuration 3638 * option, for example because the thread-local storage size is larger than 3639 * expected, then the system terminates with the INTERNAL_ERROR_CORE fatal 3640 * source and the INTERNAL_ERROR_IDLE_THREAD_STACK_TOO_SMALL fatal code during 3641 * system initialization. 3642 * 3643 * The value of this configuration option is passed to 3644 * RTEMS_TASK_STORAGE_SIZE() by ``<rtems/confdefs.h>`` to determine the actual 3645 * size of the statically allocated area to take architecture-specific 3646 * overheads into account. 3647 * 3648 * The 3649 * 3650 * * ``CONFIGURE_IDLE_TASK_STORAGE_SIZE``, and 3651 * 3652 * * @ref CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE 3653 * 3654 * configuration options are mutually exclusive. 3655 * @endparblock 3656 */ 3657 #define CONFIGURE_IDLE_TASK_STORAGE_SIZE 3658 3659 /** @} */ 3660 3661 /* Generated from spec:/acfg/if/group-mpci */ 3662 3663 /** 3664 * @defgroup RTEMSApplConfigMultiprocessingConfiguration \ 3665 * Multiprocessing Configuration 3666 * 3667 * @ingroup RTEMSApplConfig 3668 * 3669 * This section describes multiprocessing related configuration options. The 3670 * options are only used if RTEMS was built when the multiprocessing build 3671 * configuration option is enabled. The multiprocessing configuration is 3672 * distinct from the SMP configuration. Additionally, this class of 3673 * configuration options are only applicable if the configuration option @ref 3674 * CONFIGURE_MP_APPLICATION is defined. The multiprocessing (MPCI) support 3675 * must not be confused with the SMP support. 3676 * 3677 * @{ 3678 */ 3679 3680 /* Generated from spec:/acfg/if/mp-extra-server-stack */ 3681 3682 /** 3683 * @brief This configuration option is an integer define. 3684 * 3685 * @anchor CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK 3686 * 3687 * The value of this configuration option defines the number of bytes the 3688 * applications wishes to add to the MPCI task stack on top of @ref 3689 * CONFIGURE_MINIMUM_TASK_STACK_SIZE. 3690 * 3691 * @par Default Value 3692 * The default value is 0. 3693 * 3694 * @par Constraints 3695 * @parblock 3696 * The following constraints apply to this configuration option: 3697 * 3698 * * The value of the configuration option shall be greater than or equal to 3699 * zero. 3700 * 3701 * * The value of the configuration option shall be less than or equal to <a 3702 * href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>. 3703 * 3704 * * The value of the configuration option shall be small enough so that the 3705 * MPCI receive server stack area calculation carried out by 3706 * ``<rtems/confdefs.h>`` does not overflow an integer of type <a 3707 * href="https://en.cppreference.com/w/c/types/size_t">size_t</a>. 3708 * @endparblock 3709 * 3710 * @par Notes 3711 * This configuration option is only evaluated if @ref CONFIGURE_MP_APPLICATION 3712 * is defined. 3713 */ 3714 #define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK 3715 3716 /* Generated from spec:/acfg/if/mp-appl */ 3717 3718 /** 3719 * @brief This configuration option is a boolean feature define. 3720 * 3721 * @anchor CONFIGURE_MP_APPLICATION 3722 * 3723 * This configuration option is defined to indicate that the application 3724 * intends to be part of a multiprocessing configuration. Additional 3725 * configuration options are assumed to be provided. 3726 * 3727 * @par Default Configuration 3728 * If this configuration option is undefined, then the multiprocessing services 3729 * are not initialized. 3730 * 3731 * @par Notes 3732 * This configuration option shall be undefined if the multiprocessing support 3733 * is not enabled (e.g. RTEMS was built without the multiprocessing build 3734 * configuration option enabled). Otherwise a compile time error in the 3735 * configuration file will occur. 3736 */ 3737 #define CONFIGURE_MP_APPLICATION 3738 3739 /* Generated from spec:/acfg/if/mp-max-global-objects */ 3740 3741 /** 3742 * @brief This configuration option is an integer define. 3743 * 3744 * @anchor CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS 3745 * 3746 * The value of this configuration option defines the maximum number of 3747 * concurrently active global objects in a multiprocessor system. 3748 * 3749 * @par Default Value 3750 * The default value is 32. 3751 * 3752 * @par Constraints 3753 * @parblock 3754 * The following constraints apply to this configuration option: 3755 * 3756 * * The value of the configuration option shall be greater than or equal to 3757 * zero. 3758 * 3759 * * The value of the configuration option shall be less than or equal to <a 3760 * href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>. 3761 * @endparblock 3762 * 3763 * @par Notes 3764 * @parblock 3765 * This value corresponds to the total number of objects which can be created 3766 * with the #RTEMS_GLOBAL attribute. 3767 * 3768 * This configuration option is only evaluated if @ref CONFIGURE_MP_APPLICATION 3769 * is defined. 3770 * @endparblock 3771 */ 3772 #define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS 3773 3774 /* Generated from spec:/acfg/if/mp-max-nodes */ 3775 3776 /** 3777 * @brief This configuration option is an integer define. 3778 * 3779 * @anchor CONFIGURE_MP_MAXIMUM_NODES 3780 * 3781 * The value of this configuration option defines the maximum number of nodes 3782 * in a multiprocessor system. 3783 * 3784 * @par Default Value 3785 * The default value is 2. 3786 * 3787 * @par Constraints 3788 * @parblock 3789 * The following constraints apply to this configuration option: 3790 * 3791 * * The value of the configuration option shall be greater than or equal to 3792 * zero. 3793 * 3794 * * The value of the configuration option shall be less than or equal to <a 3795 * href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>. 3796 * @endparblock 3797 * 3798 * @par Notes 3799 * This configuration option is only evaluated if @ref CONFIGURE_MP_APPLICATION 3800 * is defined. 3801 */ 3802 #define CONFIGURE_MP_MAXIMUM_NODES 3803 3804 /* Generated from spec:/acfg/if/mp-max-proxies */ 3805 3806 /** 3807 * @brief This configuration option is an integer define. 3808 * 3809 * @anchor CONFIGURE_MP_MAXIMUM_PROXIES 3810 * 3811 * The value of this configuration option defines the maximum number of 3812 * concurrently active thread/task proxies on this node in a multiprocessor 3813 * system. 3814 * 3815 * @par Default Value 3816 * The default value is 32. 3817 * 3818 * @par Constraints 3819 * @parblock 3820 * The following constraints apply to this configuration option: 3821 * 3822 * * The value of the configuration option shall be greater than or equal to 3823 * zero. 3824 * 3825 * * The value of the configuration option shall be less than or equal to <a 3826 * href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>. 3827 * @endparblock 3828 * 3829 * @par Notes 3830 * @parblock 3831 * Since a proxy is used to represent a remote task/thread which is blocking on 3832 * this node. This configuration parameter reflects the maximum number of 3833 * remote tasks/threads which can be blocked on objects on this node, see <a 3834 * href="https://docs.rtems.org/branches/master/c-user/multiprocessing/background.html#proxies">Proxies</a>. 3835 * 3836 * This configuration option is only evaluated if @ref CONFIGURE_MP_APPLICATION 3837 * is defined. 3838 * @endparblock 3839 */ 3840 #define CONFIGURE_MP_MAXIMUM_PROXIES 3841 3842 /* Generated from spec:/acfg/if/mp-mpci-table-pointer */ 3843 3844 /** 3845 * @brief This configuration option is an initializer define. 3846 * 3847 * @anchor CONFIGURE_MP_MPCI_TABLE_POINTER 3848 * 3849 * The value of this configuration option initializes the MPCI Configuration 3850 * Table. 3851 * 3852 * @par Default Value 3853 * The default value is ``&MPCI_table``. 3854 * 3855 * @par Constraints 3856 * The value of the configuration option shall be a pointer to 3857 * ::rtems_mpci_table. 3858 * 3859 * @par Notes 3860 * @parblock 3861 * RTEMS provides a Shared Memory MPCI Device Driver which can be used on any 3862 * Multiprocessor System assuming the BSP provides the proper set of supporting 3863 * methods. 3864 * 3865 * This configuration option is only evaluated if @ref CONFIGURE_MP_APPLICATION 3866 * is defined. 3867 * @endparblock 3868 */ 3869 #define CONFIGURE_MP_MPCI_TABLE_POINTER 3870 3871 /* Generated from spec:/acfg/if/mp-node-number */ 3872 3873 /** 3874 * @brief This configuration option is an integer define. 3875 * 3876 * @anchor CONFIGURE_MP_NODE_NUMBER 3877 * 3878 * The value of this configuration option defines the node number of this node 3879 * in a multiprocessor system. 3880 * 3881 * @par Default Value 3882 * The default value is ``NODE_NUMBER``. 3883 * 3884 * @par Constraints 3885 * @parblock 3886 * The following constraints apply to this configuration option: 3887 * 3888 * * The value of the configuration option shall be greater than or equal to 3889 * zero. 3890 * 3891 * * The value of the configuration option shall be less than or equal to <a 3892 * href="https://en.cppreference.com/w/c/types/integer">UINT32_MAX</a>. 3893 * @endparblock 3894 * 3895 * @par Notes 3896 * @parblock 3897 * In the RTEMS Multiprocessing Test Suite, the node number is derived from the 3898 * Makefile variable ``NODE_NUMBER``. The same code is compiled with the 3899 * ``NODE_NUMBER`` set to different values. The test programs behave 3900 * differently based upon their node number. 3901 * 3902 * This configuration option is only evaluated if @ref CONFIGURE_MP_APPLICATION 3903 * is defined. 3904 * @endparblock 3905 */ 3906 #define CONFIGURE_MP_NODE_NUMBER 3907 3908 /** @} */ 3909 3910 /* Generated from spec:/acfg/if/group-posix */ 3911 3912 /** 3913 * @defgroup RTEMSApplConfigPOSIXAPIConfiguration POSIX API Configuration 3914 * 3915 * @ingroup RTEMSApplConfig 3916 * 3917 * This section describes configuration options related to the POSIX API. Most 3918 * POSIX API objects are available by default since RTEMS 5.1. The queued 3919 * signals and timers are only available if RTEMS was built with the enable 3920 * POSIX build configuration option. 3921 * 3922 * @{ 3923 */ 3924 3925 /* Generated from spec:/acfg/if/max-posix-keys */ 3926 3927 /** 3928 * @brief This configuration option is an integer define. 3929 * 3930 * @anchor CONFIGURE_MAXIMUM_POSIX_KEYS 3931 * 3932 * The value of this configuration option defines the maximum number of POSIX 3933 * API Keys that can be concurrently active. 3934 * 3935 * @par Default Value 3936 * The default value is 0. 3937 * 3938 * @par Constraints 3939 * @parblock 3940 * The following constraints apply to this configuration option: 3941 * 3942 * * The value of the configuration option shall be greater than or equal to 3943 * zero. 3944 * 3945 * * The value of the configuration option shall be less than or equal to 3946 * 65535. 3947 * 3948 * * The value of the configuration option shall be less than or equal to a 3949 * BSP-specific and application-specific value which depends on the size of 3950 * the memory available to the application. 3951 * 3952 * * The value of the configuration option may be defined through 3953 * rtems_resource_unlimited() the enable unlimited objects for the object 3954 * class, if the value passed to rtems_resource_unlimited() satisfies all 3955 * other constraints of the configuration option. 3956 * @endparblock 3957 * 3958 * @par Notes 3959 * This object class can be configured in unlimited allocation mode, see <a 3960 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 3961 * Objects</a>. 3962 */ 3963 #define CONFIGURE_MAXIMUM_POSIX_KEYS 3964 3965 /* Generated from spec:/acfg/if/max-posix-key-value-pairs */ 3966 3967 /** 3968 * @brief This configuration option is an integer define. 3969 * 3970 * @anchor CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS 3971 * 3972 * The value of this configuration option defines the maximum number of key 3973 * value pairs used by POSIX API Keys that can be concurrently active. 3974 * 3975 * @par Default Value 3976 * The default value is @ref CONFIGURE_MAXIMUM_POSIX_KEYS * ( @ref 3977 * CONFIGURE_MAXIMUM_TASKS + @ref CONFIGURE_MAXIMUM_POSIX_THREADS ). 3978 * 3979 * @par Constraints 3980 * @parblock 3981 * The following constraints apply to this configuration option: 3982 * 3983 * * The value of the configuration option shall be greater than or equal to 3984 * zero. 3985 * 3986 * * The value of the configuration option shall be less than or equal to 3987 * 65535. 3988 * 3989 * * The value of the configuration option shall be less than or equal to a 3990 * BSP-specific and application-specific value which depends on the size of 3991 * the memory available to the application. 3992 * 3993 * * The value of the configuration option may be defined through 3994 * rtems_resource_unlimited() the enable unlimited objects for the object 3995 * class, if the value passed to rtems_resource_unlimited() satisfies all 3996 * other constraints of the configuration option. 3997 * @endparblock 3998 * 3999 * @par Notes 4000 * @parblock 4001 * This object class can be configured in unlimited allocation mode, see <a 4002 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 4003 * Objects</a>. 4004 * 4005 * A key value pair is created by pthread_setspecific() if the value is not <a 4006 * href="https://en.cppreference.com/w/c/types/NULL">NULL</a>, otherwise it is 4007 * deleted. 4008 * @endparblock 4009 */ 4010 #define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS 4011 4012 /* Generated from spec:/acfg/if/max-posix-message-queues */ 4013 4014 /** 4015 * @brief This configuration option is an integer define. 4016 * 4017 * @anchor CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES 4018 * 4019 * The value of this configuration option defines the maximum number of POSIX 4020 * API Message Queues that can be concurrently active. 4021 * 4022 * @par Default Value 4023 * The default value is 0. 4024 * 4025 * @par Constraints 4026 * @parblock 4027 * The following constraints apply to this configuration option: 4028 * 4029 * * The value of the configuration option shall be greater than or equal to 4030 * zero. 4031 * 4032 * * The value of the configuration option shall be less than or equal to 4033 * 65535. 4034 * 4035 * * The value of the configuration option shall be less than or equal to a 4036 * BSP-specific and application-specific value which depends on the size of 4037 * the memory available to the application. 4038 * 4039 * * The value of the configuration option shall be small enough so that the 4040 * RTEMS Workspace size calculation carried out by ``<rtems/confdefs.h>`` 4041 * does not overflow an integer of type <a 4042 * href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>. 4043 * 4044 * * The value of the configuration option may be defined through 4045 * rtems_resource_unlimited() the enable unlimited objects for the object 4046 * class, if the value passed to rtems_resource_unlimited() satisfies all 4047 * other constraints of the configuration option. 4048 * @endparblock 4049 * 4050 * @par Notes 4051 * This object class can be configured in unlimited allocation mode, see <a 4052 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 4053 * Objects</a>. You have to account for the memory used to store the messages 4054 * of each message queue, see @ref CONFIGURE_MESSAGE_BUFFER_MEMORY. 4055 */ 4056 #define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES 4057 4058 /* Generated from spec:/acfg/if/max-posix-queued-signals */ 4059 4060 /** 4061 * @brief This configuration option is an integer define. 4062 * 4063 * @anchor CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS 4064 * 4065 * The value of this configuration option defines the maximum number of POSIX 4066 * API Queued Signals that can be concurrently active. 4067 * 4068 * @par Default Value 4069 * The default value is 0. 4070 * 4071 * @par Constraints 4072 * @parblock 4073 * The following constraints apply to this configuration option: 4074 * 4075 * * The value of the configuration option shall be greater than or equal to 4076 * zero. 4077 * 4078 * * The value of the configuration option shall be less than or equal to a 4079 * BSP-specific and application-specific value which depends on the size of 4080 * the memory available to the application. 4081 * 4082 * * The value of the configuration option shall be small enough so that the 4083 * RTEMS Workspace size calculation carried out by ``<rtems/confdefs.h>`` 4084 * does not overflow an integer of type <a 4085 * href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>. 4086 * 4087 * * The value of the configuration option shall be zero if the POSIX API is 4088 * not enabled (e.g. RTEMS was built without the ``RTEMS_POSIX_API = True`` 4089 * build configuration option). Otherwise a compile time error in the 4090 * configuration file will occur. 4091 * @endparblock 4092 * 4093 * @par Notes 4094 * @parblock 4095 * Unlimited objects are not available for queued signals. 4096 * 4097 * Queued signals are only available if RTEMS was built with the POSIX API 4098 * build configuration option enabled. 4099 * @endparblock 4100 */ 4101 #define CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS 4102 4103 /* Generated from spec:/acfg/if/max-posix-semaphores */ 4104 4105 /** 4106 * @brief This configuration option is an integer define. 4107 * 4108 * @anchor CONFIGURE_MAXIMUM_POSIX_SEMAPHORES 4109 * 4110 * The value of this configuration option defines the maximum number of POSIX 4111 * API Named Semaphores that can be concurrently active. 4112 * 4113 * @par Default Value 4114 * The default value is 0. 4115 * 4116 * @par Constraints 4117 * @parblock 4118 * The following constraints apply to this configuration option: 4119 * 4120 * * The value of the configuration option shall be greater than or equal to 4121 * zero. 4122 * 4123 * * The value of the configuration option shall be less than or equal to 4124 * 65535. 4125 * 4126 * * The value of the configuration option shall be less than or equal to a 4127 * BSP-specific and application-specific value which depends on the size of 4128 * the memory available to the application. 4129 * 4130 * * The value of the configuration option shall be small enough so that the 4131 * RTEMS Workspace size calculation carried out by ``<rtems/confdefs.h>`` 4132 * does not overflow an integer of type <a 4133 * href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>. 4134 * 4135 * * The value of the configuration option may be defined through 4136 * rtems_resource_unlimited() the enable unlimited objects for the object 4137 * class, if the value passed to rtems_resource_unlimited() satisfies all 4138 * other constraints of the configuration option. 4139 * @endparblock 4140 * 4141 * @par Notes 4142 * @parblock 4143 * This object class can be configured in unlimited allocation mode, see <a 4144 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 4145 * Objects</a>. 4146 * 4147 * Named semaphores are created with sem_open(). Semaphores initialized with 4148 * sem_init() are not affected by this configuration option since the storage 4149 * space for these semaphores is user-provided. 4150 * @endparblock 4151 */ 4152 #define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES 4153 4154 /* Generated from spec:/acfg/if/max-posix-shms */ 4155 4156 /** 4157 * @brief This configuration option is an integer define. 4158 * 4159 * @anchor CONFIGURE_MAXIMUM_POSIX_SHMS 4160 * 4161 * The value of this configuration option defines the maximum number of POSIX 4162 * API Shared Memory objects that can be concurrently active. 4163 * 4164 * @par Default Value 4165 * The default value is 0. 4166 * 4167 * @par Constraints 4168 * @parblock 4169 * The following constraints apply to this configuration option: 4170 * 4171 * * The value of the configuration option shall be greater than or equal to 4172 * zero. 4173 * 4174 * * The value of the configuration option shall be less than or equal to 4175 * 65535. 4176 * 4177 * * The value of the configuration option shall be less than or equal to a 4178 * BSP-specific and application-specific value which depends on the size of 4179 * the memory available to the application. 4180 * 4181 * * The value of the configuration option shall be small enough so that the 4182 * RTEMS Workspace size calculation carried out by ``<rtems/confdefs.h>`` 4183 * does not overflow an integer of type <a 4184 * href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>. 4185 * 4186 * * The value of the configuration option may be defined through 4187 * rtems_resource_unlimited() the enable unlimited objects for the object 4188 * class, if the value passed to rtems_resource_unlimited() satisfies all 4189 * other constraints of the configuration option. 4190 * @endparblock 4191 * 4192 * @par Notes 4193 * This object class can be configured in unlimited allocation mode, see <a 4194 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 4195 * Objects</a>. 4196 */ 4197 #define CONFIGURE_MAXIMUM_POSIX_SHMS 4198 4199 /* Generated from spec:/acfg/if/max-posix-threads */ 4200 4201 /** 4202 * @brief This configuration option is an integer define. 4203 * 4204 * @anchor CONFIGURE_MAXIMUM_POSIX_THREADS 4205 * 4206 * The value of this configuration option defines the maximum number of POSIX 4207 * API Threads that can be concurrently active. 4208 * 4209 * @par Default Value 4210 * The default value is 0. 4211 * 4212 * @par Constraints 4213 * @parblock 4214 * The following constraints apply to this configuration option: 4215 * 4216 * * The value of the configuration option shall be greater than or equal to 4217 * zero. 4218 * 4219 * * The value of the configuration option shall be less than or equal to 4220 * 65535. 4221 * 4222 * * The value of the configuration option shall be less than or equal to a 4223 * BSP-specific and application-specific value which depends on the size of 4224 * the memory available to the application. 4225 * 4226 * * The value of the configuration option shall be small enough so that the 4227 * task stack space calculation carried out by ``<rtems/confdefs.h>`` does 4228 * not overflow an integer of type <a 4229 * href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>. 4230 * @endparblock 4231 * 4232 * @par Notes 4233 * @parblock 4234 * This object class can be configured in unlimited allocation mode, see <a 4235 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 4236 * Objects</a>. 4237 * 4238 * This calculations for the required memory in the RTEMS Workspace for threads 4239 * assume that each thread has a minimum stack size and has floating point 4240 * support enabled. The configuration option @ref CONFIGURE_EXTRA_TASK_STACKS 4241 * is used to specify thread stack requirements **above** the minimum size 4242 * required. 4243 * 4244 * The maximum number of Classic API Tasks is specified by @ref 4245 * CONFIGURE_MAXIMUM_TASKS. 4246 * 4247 * All POSIX threads have floating point enabled. 4248 * @endparblock 4249 */ 4250 #define CONFIGURE_MAXIMUM_POSIX_THREADS 4251 4252 /* Generated from spec:/acfg/if/max-posix-timers */ 4253 4254 /** 4255 * @brief This configuration option is an integer define. 4256 * 4257 * @anchor CONFIGURE_MAXIMUM_POSIX_TIMERS 4258 * 4259 * The value of this configuration option defines the maximum number of POSIX 4260 * API Timers that can be concurrently active. 4261 * 4262 * @par Default Value 4263 * The default value is 0. 4264 * 4265 * @par Constraints 4266 * @parblock 4267 * The following constraints apply to this configuration option: 4268 * 4269 * * The value of the configuration option shall be greater than or equal to 4270 * zero. 4271 * 4272 * * The value of the configuration option shall be less than or equal to 4273 * 65535. 4274 * 4275 * * The value of the configuration option shall be less than or equal to a 4276 * BSP-specific and application-specific value which depends on the size of 4277 * the memory available to the application. 4278 * 4279 * * The value of the configuration option may be defined through 4280 * rtems_resource_unlimited() the enable unlimited objects for the object 4281 * class, if the value passed to rtems_resource_unlimited() satisfies all 4282 * other constraints of the configuration option. 4283 * 4284 * * The value of the configuration option shall be zero if the POSIX API is 4285 * not enabled (e.g. RTEMS was built without the ``RTEMS_POSIX_API = True`` 4286 * build configuration option). Otherwise a compile time error in the 4287 * configuration file will occur. 4288 * @endparblock 4289 * 4290 * @par Notes 4291 * @parblock 4292 * This object class can be configured in unlimited allocation mode, see <a 4293 * href="https://docs.rtems.org/branches/master/c-user/config/intro.html#unlimited-objects">Unlimited 4294 * Objects</a>. 4295 * 4296 * Timers are only available if RTEMS was built with the POSIX API build 4297 * configuration option enabled. 4298 * @endparblock 4299 */ 4300 #define CONFIGURE_MAXIMUM_POSIX_TIMERS 4301 4302 /* Generated from spec:/acfg/if/min-posix-thread-stack-size */ 4303 4304 /** 4305 * @brief This configuration option is an integer define. 4306 * 4307 * @anchor CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE 4308 * 4309 * The value of this configuration option defines the minimum stack size in 4310 * bytes for every POSIX thread in the system. 4311 * 4312 * @par Default Value 4313 * The default value is two times the value of @ref 4314 * CONFIGURE_MINIMUM_TASK_STACK_SIZE. 4315 * 4316 * @par Constraints 4317 * @parblock 4318 * The following constraints apply to this configuration option: 4319 * 4320 * * The value of the configuration option shall be small enough so that the 4321 * task stack space calculation carried out by ``<rtems/confdefs.h>`` does 4322 * not overflow an integer of type <a 4323 * href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>. 4324 * 4325 * * The value of the configuration option shall be greater than or equal to a 4326 * BSP-specific and application-specific minimum value. 4327 * @endparblock 4328 */ 4329 #define CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE 4330 4331 /** @} */ 4332 4333 /* Generated from spec:/acfg/if/group-posixinit */ 4334 4335 /** 4336 * @defgroup RTEMSApplConfigPOSIXInitializationThreadConfiguration \ 4337 * POSIX Initialization Thread Configuration 4338 * 4339 * @ingroup RTEMSApplConfig 4340 * 4341 * This section describes configuration options related to the POSIX 4342 * initialization thread. 4343 * 4344 * @{ 4345 */ 4346 4347 /* Generated from spec:/acfg/if/posix-init-thread-entry-point */ 4348 4349 /** 4350 * @brief This configuration option is an initializer define. 4351 * 4352 * @anchor CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT 4353 * 4354 * The value of this configuration option initializes the entry point of the 4355 * POSIX API initialization thread. 4356 * 4357 * @par Default Value 4358 * The default value is ``POSIX_Init``. 4359 * 4360 * @par Constraints 4361 * The value of the configuration option shall be defined to a valid function 4362 * pointer of the type ``void *( *entry_point )( void * )``. 4363 * 4364 * @par Notes 4365 * The application shall provide the function referenced by this configuration 4366 * option. 4367 */ 4368 #define CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT 4369 4370 /* Generated from spec:/acfg/if/posix-init-thread-stack-size */ 4371 4372 /** 4373 * @brief This configuration option is an integer define. 4374 * 4375 * @anchor CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE 4376 * 4377 * The value of this configuration option defines the thread stack size of the 4378 * POSIX API initialization thread. 4379 * 4380 * @par Default Value 4381 * The default value is @ref CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE. 4382 * 4383 * @par Constraints 4384 * @parblock 4385 * The following constraints apply to this configuration option: 4386 * 4387 * * The value of the configuration option shall be greater than or equal to 4388 * @ref CONFIGURE_MINIMUM_TASK_STACK_SIZE. 4389 * 4390 * * The value of the configuration option shall be small enough so that the 4391 * task stack space calculation carried out by ``<rtems/confdefs.h>`` does 4392 * not overflow an integer of type <a 4393 * href="https://en.cppreference.com/w/c/types/integer">uintptr_t</a>. 4394 * @endparblock 4395 */ 4396 #define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE 4397 4398 /* Generated from spec:/acfg/if/posix-init-thread-table */ 4399 4400 /** 4401 * @brief This configuration option is a boolean feature define. 4402 * 4403 * @anchor CONFIGURE_POSIX_INIT_THREAD_TABLE 4404 * 4405 * In case this configuration option is defined, then exactly one POSIX 4406 * initialization thread is configured. 4407 * 4408 * @par Default Configuration 4409 * If this configuration option is undefined, then the described feature is not 4410 * enabled. 4411 * 4412 * @par Notes 4413 * @parblock 4414 * The application shall define at least one of the following configuration 4415 * options 4416 * 4417 * * @ref CONFIGURE_RTEMS_INIT_TASKS_TABLE, 4418 * 4419 * * ``CONFIGURE_POSIX_INIT_THREAD_TABLE``, or 4420 * 4421 * * @ref CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION 4422 * 4423 * otherwise a compile time error in the configuration file will occur. 4424 * 4425 * If no Classic API initialization task is configured, then the POSIX API 4426 * initialization thread performs the <a 4427 * href="https://docs.rtems.org/branches/master/c-user/initialization/operations.html">Global 4428 * Construction</a>. 4429 * @endparblock 4430 */ 4431 #define CONFIGURE_POSIX_INIT_THREAD_TABLE 4432 4433 /** @} */ 4434 4435 /* Generated from spec:/acfg/if/group-schedgeneral */ 4436 4437 /** 4438 * @defgroup RTEMSApplConfigGeneralSchedulerConfiguration \ 4439 * General Scheduler Configuration 4440 * 4441 * @ingroup RTEMSApplConfig 4442 * 4443 * This section describes configuration options related to selecting a 4444 * scheduling algorithm for an application. A scheduler configuration is 4445 * optional and only necessary in very specific circumstances. A normal 4446 * application configuration does not need any of the configuration options 4447 * described in this section. 4448 * 4449 * By default, the <a 4450 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/uniprocessor-schedulers.html#deterministic-priority-scheduler">Deterministic 4451 * Priority Scheduler</a> algorithm is used in uniprocessor configurations. In 4452 * case SMP is enabled and the configured maximum processors (@ref 4453 * CONFIGURE_MAXIMUM_PROCESSORS) is greater than one, then the <a 4454 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/smp-schedulers.html#earliest-deadline-first-smp-scheduler">Earliest 4455 * Deadline First SMP Scheduler</a> is selected as the default scheduler 4456 * algorithm. 4457 * 4458 * For the schedulers provided by RTEMS (see <a 4459 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/index.html">Scheduling 4460 * Concepts</a>), the configuration is straightforward. All that is required 4461 * is to define the configuration option which specifies which scheduler you 4462 * want for in your application. 4463 * 4464 * The pluggable scheduler interface also enables the user to provide their own 4465 * scheduling algorithm. If you choose to do this, you must define multiple 4466 * configuration option. 4467 * 4468 * @{ 4469 */ 4470 4471 /* Generated from spec:/acfg/if/cbs-max-servers */ 4472 4473 /** 4474 * @brief This configuration option is an integer define. 4475 * 4476 * @anchor CONFIGURE_CBS_MAXIMUM_SERVERS 4477 * 4478 * The value of this configuration option defines the maximum number Constant 4479 * Bandwidth Servers that can be concurrently active. 4480 * 4481 * @par Default Value 4482 * The default value is @ref CONFIGURE_MAXIMUM_TASKS. 4483 * 4484 * @par Constraints 4485 * @parblock 4486 * The following constraints apply to this configuration option: 4487 * 4488 * * The value of the configuration option shall be greater than or equal to 4489 * zero. 4490 * 4491 * * The value of the configuration option shall be less than or equal to <a 4492 * href="https://en.cppreference.com/w/c/types/limits">SIZE_MAX</a>. 4493 * 4494 * * The value of the configuration option shall be less than or equal to a 4495 * BSP-specific and application-specific value which depends on the size of 4496 * the memory available to the application. 4497 * @endparblock 4498 * 4499 * @par Notes 4500 * This configuration option is only evaluated if the configuration option @ref 4501 * CONFIGURE_SCHEDULER_CBS is defined. 4502 */ 4503 #define CONFIGURE_CBS_MAXIMUM_SERVERS 4504 4505 /* Generated from spec:/acfg/if/max-priority */ 4506 4507 /** 4508 * @brief This configuration option is an integer define. 4509 * 4510 * @anchor CONFIGURE_MAXIMUM_PRIORITY 4511 * 4512 * For the following schedulers 4513 * 4514 * * <a 4515 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/uniprocessor-schedulers.html#deterministic-priority-scheduler">Deterministic 4516 * Priority Scheduler</a>, which is the default in uniprocessor 4517 * configurations and can be configured through the @ref 4518 * CONFIGURE_SCHEDULER_PRIORITY configuration option, 4519 * 4520 * * <a 4521 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/smp-schedulers.html#deterministic-priority-smp-scheduler">Deterministic 4522 * Priority SMP Scheduler</a> which can be configured through the @ref 4523 * CONFIGURE_SCHEDULER_PRIORITY_SMP configuration option, and 4524 * 4525 * * <a 4526 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/smp-schedulers.html#arbitrary-processor-affinity-priority-smp-scheduler">Arbitrary 4527 * Processor Affinity Priority SMP Scheduler</a> which can be configured 4528 * through the @ref CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP configuration 4529 * option 4530 * 4531 * this configuration option specifies the maximum numeric priority of any task 4532 * for these schedulers and one less that the number of priority levels for 4533 * these schedulers. For all other schedulers provided by RTEMS, this 4534 * configuration option has no effect. 4535 * 4536 * @par Default Value 4537 * The default value is 255. 4538 * 4539 * @par Constraints 4540 * The value of the configuration option shall be equal to 3, 7, 31, 63, 127, 4541 * or 255. 4542 * 4543 * @par Notes 4544 * @parblock 4545 * The numerically greatest priority is the logically lowest priority in the 4546 * system and will thus be used by the IDLE task. 4547 * 4548 * Priority zero is reserved for internal use by RTEMS and is not available to 4549 * applications. 4550 * 4551 * Reducing the number of priorities through this configuration option reduces 4552 * the amount of memory allocated by the schedulers listed above. These 4553 * schedulers use a chain control structure per priority and this structure 4554 * consists of three pointers. On a 32-bit architecture, the allocated memory 4555 * is 12 bytes * (``CONFIGURE_MAXIMUM_PRIORITY`` + 1), e.g. 3072 bytes for 256 4556 * priority levels (default), 48 bytes for 4 priority levels 4557 * (``CONFIGURE_MAXIMUM_PRIORITY == 3``). 4558 * 4559 * The default value is 255, because RTEMS shall support 256 priority levels to 4560 * be compliant with various standards. These priorities range from 0 to 255. 4561 * @endparblock 4562 */ 4563 #define CONFIGURE_MAXIMUM_PRIORITY 4564 4565 /* Generated from spec:/acfg/if/scheduler-assignments */ 4566 4567 /** 4568 * @brief This configuration option is an initializer define. 4569 * 4570 * @anchor CONFIGURE_SCHEDULER_ASSIGNMENTS 4571 * 4572 * The value of this configuration option is used to initialize the initial 4573 * scheduler to processor assignments. 4574 * 4575 * @par Default Value 4576 * The default value of this configuration option is computed so that the 4577 * default scheduler is assigned to each configured processor (up to 32). 4578 * 4579 * @par Constraints 4580 * @parblock 4581 * The following constraints apply to this configuration option: 4582 * 4583 * * The value of the configuration option shall be a list of the following 4584 * macros: 4585 * 4586 * * ``RTEMS_SCHEDULER_ASSIGN( scheduler_index, attributes )`` 4587 * 4588 * * ``RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER`` 4589 * 4590 * The ``scheduler_index`` macro parameter shall be a valid index of the 4591 * scheduler table defined by the @ref CONFIGURE_SCHEDULER_TABLE_ENTRIES 4592 * configuration option. 4593 * 4594 * The ``attributes`` macro parameter shall be set to exactly one of the 4595 * following constants: 4596 * 4597 * * ``RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY`` 4598 * 4599 * * ``RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL`` 4600 * 4601 * * The value of the configuration option shall be a list of exactly @ref 4602 * CONFIGURE_MAXIMUM_PROCESSORS elements. 4603 * @endparblock 4604 * 4605 * @par Notes 4606 * @parblock 4607 * Where the system was built with SMP support enabled, this configuration 4608 * option is evaluated, otherwise it is ignored. 4609 * 4610 * This is an advanced configuration option, see <a 4611 * href="https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html">Clustered 4612 * Scheduler Configuration</a>. 4613 * @endparblock 4614 */ 4615 #define CONFIGURE_SCHEDULER_ASSIGNMENTS 4616 4617 /* Generated from spec:/acfg/if/scheduler-cbs */ 4618 4619 /** 4620 * @brief This configuration option is a boolean feature define. 4621 * 4622 * @anchor CONFIGURE_SCHEDULER_CBS 4623 * 4624 * In case this configuration option is defined, then the <a 4625 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/uniprocessor-schedulers.html#constant-bandwidth-server-scheduling-cbs">Constant 4626 * Bandwidth Server Scheduling (CBS)</a> algorithm is made available to the 4627 * application. 4628 * 4629 * @par Default Configuration 4630 * If this configuration option is undefined, then the described feature is not 4631 * enabled. 4632 * 4633 * @par Notes 4634 * @parblock 4635 * This scheduler configuration option is an advanced configuration option. 4636 * Think twice before you use it. 4637 * 4638 * In case no explicit <a 4639 * href="https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html">Clustered 4640 * Scheduler Configuration</a> is present, then it is used as the scheduler for 4641 * exactly one processor. 4642 * @endparblock 4643 */ 4644 #define CONFIGURE_SCHEDULER_CBS 4645 4646 /* Generated from spec:/acfg/if/scheduler-edf */ 4647 4648 /** 4649 * @brief This configuration option is a boolean feature define. 4650 * 4651 * @anchor CONFIGURE_SCHEDULER_EDF 4652 * 4653 * In case this configuration option is defined, then the <a 4654 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/uniprocessor-schedulers.html#earliest-deadline-first-scheduler">Earliest 4655 * Deadline First Scheduler</a> algorithm is made available to the application. 4656 * 4657 * @par Default Configuration 4658 * If this configuration option is undefined, then the described feature is not 4659 * enabled. 4660 * 4661 * @par Notes 4662 * @parblock 4663 * This scheduler configuration option is an advanced configuration option. 4664 * Think twice before you use it. 4665 * 4666 * In case no explicit <a 4667 * href="https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html">Clustered 4668 * Scheduler Configuration</a> is present, then it is used as the scheduler for 4669 * exactly one processor. 4670 * @endparblock 4671 */ 4672 #define CONFIGURE_SCHEDULER_EDF 4673 4674 /* Generated from spec:/acfg/if/scheduler-edf-smp */ 4675 4676 /** 4677 * @brief This configuration option is a boolean feature define. 4678 * 4679 * @anchor CONFIGURE_SCHEDULER_EDF_SMP 4680 * 4681 * In case this configuration option is defined, then the <a 4682 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/smp-schedulers.html#earliest-deadline-first-smp-scheduler">Earliest 4683 * Deadline First SMP Scheduler</a> algorithm is made available to the 4684 * application. 4685 * 4686 * @par Default Configuration 4687 * If this configuration option is undefined, then the described feature is not 4688 * enabled. 4689 * 4690 * @par Notes 4691 * @parblock 4692 * This scheduler configuration option is an advanced configuration option. 4693 * Think twice before you use it. 4694 * 4695 * This scheduler algorithm is only available when RTEMS is built with SMP 4696 * support enabled. 4697 * 4698 * In case no explicit <a 4699 * href="https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html">Clustered 4700 * Scheduler Configuration</a> is present, then it is used as the scheduler for 4701 * up to 32 processors. 4702 * 4703 * This scheduler algorithm is the default in SMP configurations if @ref 4704 * CONFIGURE_MAXIMUM_PROCESSORS is greater than one. 4705 * @endparblock 4706 */ 4707 #define CONFIGURE_SCHEDULER_EDF_SMP 4708 4709 /* Generated from spec:/acfg/if/scheduler-name */ 4710 4711 /** 4712 * @brief This configuration option is an integer define. 4713 * 4714 * @anchor CONFIGURE_SCHEDULER_NAME 4715 * 4716 * The value of this configuration option defines the name of the default 4717 * scheduler. 4718 * 4719 * @par Default Value 4720 * @parblock 4721 * The default value is 4722 * 4723 * * ``"MEDF"`` for the <a 4724 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/smp-schedulers.html#earliest-deadline-first-smp-scheduler">Earliest 4725 * Deadline First SMP Scheduler</a>, 4726 * 4727 * * ``"MPA "`` for the <a 4728 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/smp-schedulers.html#arbitrary-processor-affinity-priority-smp-scheduler">Arbitrary 4729 * Processor Affinity Priority SMP Scheduler</a>, 4730 * 4731 * * ``"MPD "`` for the <a 4732 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/smp-schedulers.html#deterministic-priority-smp-scheduler">Deterministic 4733 * Priority SMP Scheduler</a>, 4734 * 4735 * * ``"MPS "`` for the <a 4736 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/smp-schedulers.html#simple-priority-smp-scheduler">Simple 4737 * Priority SMP Scheduler</a>, 4738 * 4739 * * ``"UCBS"`` for the <a 4740 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/uniprocessor-schedulers.html#constant-bandwidth-server-scheduling-cbs">Constant 4741 * Bandwidth Server Scheduling (CBS)</a>, 4742 * 4743 * * ``"UEDF"`` for the <a 4744 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/uniprocessor-schedulers.html#earliest-deadline-first-scheduler">Earliest 4745 * Deadline First Scheduler</a>, 4746 * 4747 * * ``"UPD "`` for the <a 4748 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/uniprocessor-schedulers.html#deterministic-priority-scheduler">Deterministic 4749 * Priority Scheduler</a>, and 4750 * 4751 * * ``"UPS "`` for the <a 4752 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/uniprocessor-schedulers.html#simple-priority-scheduler">Simple 4753 * Priority Scheduler</a>. 4754 * @endparblock 4755 * 4756 * @par Constraints 4757 * The value of the configuration option shall be convertible to an integer of 4758 * type ::rtems_name. 4759 * 4760 * @par Notes 4761 * @parblock 4762 * This scheduler configuration option is an advanced configuration option. 4763 * Think twice before you use it. 4764 * 4765 * Schedulers can be identified via rtems_scheduler_ident(). 4766 * 4767 * Use rtems_build_name() to define the scheduler name. 4768 * @endparblock 4769 */ 4770 #define CONFIGURE_SCHEDULER_NAME 4771 4772 /* Generated from spec:/acfg/if/scheduler-priority */ 4773 4774 /** 4775 * @brief This configuration option is a boolean feature define. 4776 * 4777 * @anchor CONFIGURE_SCHEDULER_PRIORITY 4778 * 4779 * In case this configuration option is defined, then the <a 4780 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/uniprocessor-schedulers.html#deterministic-priority-scheduler">Deterministic 4781 * Priority Scheduler</a> algorithm is made available to the application. 4782 * 4783 * @par Default Configuration 4784 * If this configuration option is undefined, then the described feature is not 4785 * enabled. 4786 * 4787 * @par Notes 4788 * @parblock 4789 * This scheduler configuration option is an advanced configuration option. 4790 * Think twice before you use it. 4791 * 4792 * In case no explicit <a 4793 * href="https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html">Clustered 4794 * Scheduler Configuration</a> is present, then it is used as the scheduler for 4795 * exactly one processor. 4796 * 4797 * This scheduler algorithm is the default when @ref 4798 * CONFIGURE_MAXIMUM_PROCESSORS is exactly one. 4799 * 4800 * The memory allocated for this scheduler depends on the @ref 4801 * CONFIGURE_MAXIMUM_PRIORITY configuration option. 4802 * @endparblock 4803 */ 4804 #define CONFIGURE_SCHEDULER_PRIORITY 4805 4806 /* Generated from spec:/acfg/if/scheduler-priority-affinity-smp */ 4807 4808 /** 4809 * @brief This configuration option is a boolean feature define. 4810 * 4811 * @anchor CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP 4812 * 4813 * In case this configuration option is defined, then the <a 4814 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/smp-schedulers.html#arbitrary-processor-affinity-priority-smp-scheduler">Arbitrary 4815 * Processor Affinity Priority SMP Scheduler</a> algorithm is made available to 4816 * the application. 4817 * 4818 * @par Default Configuration 4819 * If this configuration option is undefined, then the described feature is not 4820 * enabled. 4821 * 4822 * @par Notes 4823 * @parblock 4824 * This scheduler configuration option is an advanced configuration option. 4825 * Think twice before you use it. 4826 * 4827 * This scheduler algorithm is only available when RTEMS is built with SMP 4828 * support enabled. 4829 * 4830 * In case no explicit <a 4831 * href="https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html">Clustered 4832 * Scheduler Configuration</a> is present, then it is used as the scheduler for 4833 * up to 32 processors. 4834 * 4835 * The memory allocated for this scheduler depends on the @ref 4836 * CONFIGURE_MAXIMUM_PRIORITY configuration option. 4837 * @endparblock 4838 */ 4839 #define CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP 4840 4841 /* Generated from spec:/acfg/if/scheduler-priority-smp */ 4842 4843 /** 4844 * @brief This configuration option is a boolean feature define. 4845 * 4846 * @anchor CONFIGURE_SCHEDULER_PRIORITY_SMP 4847 * 4848 * In case this configuration option is defined, then the <a 4849 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/smp-schedulers.html#deterministic-priority-smp-scheduler">Deterministic 4850 * Priority SMP Scheduler</a> algorithm is made available to the application. 4851 * 4852 * @par Default Configuration 4853 * If this configuration option is undefined, then the described feature is not 4854 * enabled. 4855 * 4856 * @par Notes 4857 * @parblock 4858 * This scheduler configuration option is an advanced configuration option. 4859 * Think twice before you use it. 4860 * 4861 * This scheduler algorithm is only available when RTEMS is built with SMP 4862 * support enabled. 4863 * 4864 * In case no explicit <a 4865 * href="https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html">Clustered 4866 * Scheduler Configuration</a> is present, then it is used as the scheduler for 4867 * up to 32 processors. 4868 * 4869 * The memory allocated for this scheduler depends on the @ref 4870 * CONFIGURE_MAXIMUM_PRIORITY configuration option. 4871 * @endparblock 4872 */ 4873 #define CONFIGURE_SCHEDULER_PRIORITY_SMP 4874 4875 /* Generated from spec:/acfg/if/scheduler-simple */ 4876 4877 /** 4878 * @brief This configuration option is a boolean feature define. 4879 * 4880 * @anchor CONFIGURE_SCHEDULER_SIMPLE 4881 * 4882 * In case this configuration option is defined, then the <a 4883 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/uniprocessor-schedulers.html#simple-priority-scheduler">Simple 4884 * Priority Scheduler</a> algorithm is made available to the application. 4885 * 4886 * @par Default Configuration 4887 * If this configuration option is undefined, then the described feature is not 4888 * enabled. 4889 * 4890 * @par Notes 4891 * @parblock 4892 * This scheduler configuration option is an advanced configuration option. 4893 * Think twice before you use it. 4894 * 4895 * In case no explicit <a 4896 * href="https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html">Clustered 4897 * Scheduler Configuration</a> is present, then it is used as the scheduler for 4898 * exactly one processor. 4899 * @endparblock 4900 */ 4901 #define CONFIGURE_SCHEDULER_SIMPLE 4902 4903 /* Generated from spec:/acfg/if/scheduler-simple-smp */ 4904 4905 /** 4906 * @brief This configuration option is a boolean feature define. 4907 * 4908 * @anchor CONFIGURE_SCHEDULER_SIMPLE_SMP 4909 * 4910 * In case this configuration option is defined, then the <a 4911 * href="https://docs.rtems.org/branches/master/c-user/scheduling-concepts/smp-schedulers.html#simple-priority-smp-scheduler">Simple 4912 * Priority SMP Scheduler</a> algorithm is made available to the application. 4913 * 4914 * @par Default Configuration 4915 * If this configuration option is undefined, then the described feature is not 4916 * enabled. 4917 * 4918 * @par Notes 4919 * @parblock 4920 * This scheduler configuration option is an advanced configuration option. 4921 * Think twice before you use it. 4922 * 4923 * This scheduler algorithm is only available when RTEMS is built with SMP 4924 * support enabled. 4925 * 4926 * In case no explicit <a 4927 * href="https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html">Clustered 4928 * Scheduler Configuration</a> is present, then it is used as the scheduler for 4929 * up to 32 processors. 4930 * @endparblock 4931 */ 4932 #define CONFIGURE_SCHEDULER_SIMPLE_SMP 4933 4934 /* Generated from spec:/acfg/if/scheduler-strong-apa */ 4935 4936 /** 4937 * @brief This configuration option is a boolean feature define. 4938 * 4939 * @anchor CONFIGURE_SCHEDULER_STRONG_APA 4940 * 4941 * In case this configuration option is defined, then the Strong APA algorithm 4942 * is made available to the application. 4943 * 4944 * @par Default Configuration 4945 * If this configuration option is undefined, then the described feature is not 4946 * enabled. 4947 * 4948 * @par Notes 4949 * @parblock 4950 * This scheduler configuration option is an advanced configuration option. 4951 * Think twice before you use it. 4952 * 4953 * This scheduler algorithm is only available when RTEMS is built with SMP 4954 * support enabled. 4955 * 4956 * This scheduler algorithm is not correctly implemented. Do not use it. 4957 * @endparblock 4958 */ 4959 #define CONFIGURE_SCHEDULER_STRONG_APA 4960 4961 /* Generated from spec:/acfg/if/scheduler-table-entries */ 4962 4963 /** 4964 * @brief This configuration option is an initializer define. 4965 * 4966 * @anchor CONFIGURE_SCHEDULER_TABLE_ENTRIES 4967 * 4968 * The value of this configuration option is used to initialize the table of 4969 * configured schedulers. 4970 * 4971 * @par Default Value 4972 * The default value of this configuration option is the definition of exactly 4973 * one table entry for the configured scheduler. 4974 * 4975 * @par Constraints 4976 * @parblock 4977 * The following constraints apply to this configuration option: 4978 * 4979 * * The value of the configuration option shall be a list of the following 4980 * macros: 4981 * 4982 * * ``RTEMS_SCHEDULER_TABLE_CBS( name, obj_name )`` 4983 * 4984 * * ``RTEMS_SCHEDULER_TABLE_EDF( name, obj_name )`` 4985 * 4986 * * ``RTEMS_SCHEDULER_TABLE_EDF_SMP( name, obj_name )`` 4987 * 4988 * * ``RTEMS_SCHEDULER_TABLE_PRIORITY_AFFINITY_SMP( name, obj_name )`` 4989 * 4990 * * ``RTEMS_SCHEDULER_TABLE_PRIORITY( name, obj_name )`` 4991 * 4992 * * ``RTEMS_SCHEDULER_TABLE_PRIORITY_SMP( name, obj_name )`` 4993 * 4994 * * ``RTEMS_SCHEDULER_TABLE_SIMPLE( name, obj_name )`` 4995 * 4996 * * ``RTEMS_SCHEDULER_TABLE_SIMPLE_SMP( name, obj_name )`` 4997 * 4998 * * ``RTEMS_SCHEDULER_TABLE_STRONG_APA( name, obj_name )`` 4999 * 5000 * The ``name`` macro parameter shall be the name associated with the 5001 * scheduler data structures, see <a 5002 * href="https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html">Clustered 5003 * Scheduler Configuration</a>. 5004 * 5005 * The ``obj_name`` macro parameter shall be the scheduler object name. It 5006 * is recommended to define the scheduler object name through 5007 * rtems_build_name(). 5008 * 5009 * * Where the system was build with SMP support enabled, the table shall have 5010 * one or more entries, otherwise it shall have exactly one entry. 5011 * @endparblock 5012 * 5013 * @par Notes 5014 * @parblock 5015 * Schedulers registered in the scheduler table by this configuration option 5016 * are available to the application. The scheduler table entry index defines 5017 * the index of the scheduler. 5018 * 5019 * This is an advanced configuration option, see <a 5020 * href="https://docs.rtems.org/branches/master/c-user/config/scheduler-clustered.html">Clustered 5021 * Scheduler Configuration</a>. 5022 * @endparblock 5023 */ 5024 #define CONFIGURE_SCHEDULER_TABLE_ENTRIES 5025 5026 /* Generated from spec:/acfg/if/scheduler-user */ 5027 5028 /** 5029 * @brief This configuration option is a boolean feature define. 5030 * 5031 * @anchor CONFIGURE_SCHEDULER_USER 5032 * 5033 * In case this configuration option is defined, then the user shall provide a 5034 * scheduler algorithm to the application. 5035 * 5036 * @par Default Configuration 5037 * If this configuration option is undefined, then the described feature is not 5038 * enabled. 5039 * 5040 * @par Notes 5041 * @parblock 5042 * This scheduler configuration option is an advanced configuration option. 5043 * Think twice before you use it. 5044 * 5045 * RTEMS allows the application to provide its own task/thread scheduling 5046 * algorithm. In order to do this, one shall define 5047 * ``CONFIGURE_SCHEDULER_USER`` to indicate the application provides its own 5048 * scheduling algorithm. If ``CONFIGURE_SCHEDULER_USER`` is defined then the 5049 * following additional macros shall be defined: 5050 * 5051 * * ``CONFIGURE_SCHEDULER`` shall be defined to a static definition of the 5052 * scheduler data structures of the user scheduler. 5053 * 5054 * * ``CONFIGURE_SCHEDULER_TABLE_ENTRIES`` shall be defined to a scheduler 5055 * table entry initializer for the user scheduler. 5056 * 5057 * * ``CONFIGURE_SCHEDULER_USER_PER_THREAD`` shall be defined to the type of 5058 * the per-thread information of the user scheduler. 5059 * 5060 * At this time, the mechanics and requirements for writing a new scheduler are 5061 * evolving and not fully documented. It is recommended that you look at the 5062 * existing Deterministic Priority Scheduler in 5063 * ``cpukit/score/src/schedulerpriority*.c`` for guidance. For guidance on the 5064 * configuration macros, please examine 5065 * ``cpukit/include/rtems/confdefs/scheduler.h`` for how these are defined for 5066 * the Deterministic Priority Scheduler. 5067 * @endparblock 5068 */ 5069 #define CONFIGURE_SCHEDULER_USER 5070 5071 /** @} */ 5072 5073 /* Generated from spec:/acfg/if/group-stackalloc */ 5074 5075 /** 5076 * @defgroup RTEMSApplConfigTaskStackAllocatorConfiguration \ 5077 * Task Stack Allocator Configuration 5078 * 5079 * @ingroup RTEMSApplConfig 5080 * 5081 * This section describes configuration options related to the task stack 5082 * allocator. RTEMS allows the application or BSP to define its own allocation 5083 * and deallocation methods for task stacks. This can be used to place task 5084 * stacks in special areas of memory or to utilize a Memory Management Unit so 5085 * that stack overflows are detected in hardware. 5086 * 5087 * @{ 5088 */ 5089 5090 /* Generated from spec:/acfg/if/task-stack-allocator */ 5091 5092 /** 5093 * @brief This configuration option is an initializer define. 5094 * 5095 * @anchor CONFIGURE_TASK_STACK_ALLOCATOR 5096 * 5097 * The value of this configuration option initializes the stack allocator 5098 * allocate handler. 5099 * 5100 * @par Default Value 5101 * The default value is ``_Workspace_Allocate``, which indicates that task 5102 * stacks will be allocated from the RTEMS Workspace. 5103 * 5104 * @par Constraints 5105 * The value of the configuration option shall be defined to a valid function 5106 * pointer of the type ``void *( *allocate )( size_t )``. 5107 * 5108 * @par Notes 5109 * @parblock 5110 * A correctly configured system shall configure the following to be 5111 * consistent: 5112 * 5113 * * @ref CONFIGURE_TASK_STACK_ALLOCATOR_INIT 5114 * 5115 * * ``CONFIGURE_TASK_STACK_ALLOCATOR`` 5116 * 5117 * * @ref CONFIGURE_TASK_STACK_DEALLOCATOR 5118 * @endparblock 5119 */ 5120 #define CONFIGURE_TASK_STACK_ALLOCATOR 5121 5122 /* Generated from spec:/acfg/if/task-stack-no-workspace */ 5123 5124 /** 5125 * @brief This configuration option is a boolean feature define. 5126 * 5127 * @anchor CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE 5128 * 5129 * In case this configuration option is defined, then the system is informed 5130 * that the task stack allocator does not use the RTEMS Workspace. 5131 * 5132 * @par Default Configuration 5133 * If this configuration option is undefined, then the described feature is not 5134 * enabled. 5135 * 5136 * @par Notes 5137 * This configuration option may be used if a custom task stack allocator is 5138 * configured, see @ref CONFIGURE_TASK_STACK_ALLOCATOR. 5139 */ 5140 #define CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE 5141 5142 /* Generated from spec:/acfg/if/task-stack-allocator-for-idle */ 5143 5144 /** 5145 * @brief This configuration option is an initializer define. 5146 * 5147 * @anchor CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE 5148 * 5149 * The value of this configuration option is the address for the stack 5150 * allocator allocate handler used to allocate the task storage area of each 5151 * IDLE task. 5152 * 5153 * @par Default Value 5154 * By default, the IDLE task storage area will be allocated from the RTEMS 5155 * Workspace. 5156 * 5157 * @par Constraints 5158 * @parblock 5159 * The following constraints apply to this configuration option: 5160 * 5161 * * The value of the configuration option shall be defined to a valid function 5162 * pointer of the type ``void *( *allocate )( uint32_t, size_t * )``. 5163 * 5164 * * The IDLE task stack allocator shall return a pointer to the allocated 5165 * memory area or terminate the system with a fatal error if the allocation 5166 * request cannot be satisfied. 5167 * 5168 * * The IDLE task stack allocator may increase the size of the allocated 5169 * memory area. 5170 * @endparblock 5171 * 5172 * @par Notes 5173 * @parblock 5174 * This configuration option is independent of the other thread stack allocator 5175 * configuration options. It is assumed that any memory allocated for the task 5176 * storage area of an IDLE task will not be from the RTEMS Workspace. 5177 * 5178 * The IDLE task stack allocator may increase the size of the allocated memory 5179 * area to account for the actually allocated memory area. 5180 * 5181 * The 5182 * 5183 * * @ref CONFIGURE_IDLE_TASK_STORAGE_SIZE, and 5184 * 5185 * * ``CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE`` 5186 * 5187 * configuration options are mutually exclusive. 5188 * @endparblock 5189 */ 5190 #define CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE 5191 5192 /* Generated from spec:/acfg/if/task-stack-allocator-init */ 5193 5194 /** 5195 * @brief This configuration option is an initializer define. 5196 * 5197 * @anchor CONFIGURE_TASK_STACK_ALLOCATOR_INIT 5198 * 5199 * The value of this configuration option initializes the stack allocator 5200 * initialization handler. 5201 * 5202 * @par Default Value 5203 * The default value is <a 5204 * href="https://en.cppreference.com/w/c/types/NULL">NULL</a>. 5205 * 5206 * @par Constraints 5207 * The value of the configuration option shall be defined to a valid function 5208 * pointer of the type ``void ( *initialize )( size_t )`` or to <a 5209 * href="https://en.cppreference.com/w/c/types/NULL">NULL</a>. 5210 * 5211 * @par Notes 5212 * @parblock 5213 * A correctly configured system shall configure the following to be 5214 * consistent: 5215 * 5216 * * ``CONFIGURE_TASK_STACK_ALLOCATOR_INIT`` 5217 * 5218 * * @ref CONFIGURE_TASK_STACK_ALLOCATOR 5219 * 5220 * * @ref CONFIGURE_TASK_STACK_DEALLOCATOR 5221 * @endparblock 5222 */ 5223 #define CONFIGURE_TASK_STACK_ALLOCATOR_INIT 5224 5225 /* Generated from spec:/acfg/if/task-stack-deallocator */ 5226 5227 /** 5228 * @brief This configuration option is an initializer define. 5229 * 5230 * @anchor CONFIGURE_TASK_STACK_DEALLOCATOR 5231 * 5232 * The value of this configuration option initializes the stack allocator 5233 * deallocate handler. 5234 * 5235 * @par Default Value 5236 * The default value is ``_Workspace_Free``, which indicates that task stacks 5237 * will be allocated from the RTEMS Workspace. 5238 * 5239 * @par Constraints 5240 * The value of the configuration option shall be defined to a valid function 5241 * pointer of the type ``void ( *deallocate )( void * )``. 5242 * 5243 * @par Notes 5244 * @parblock 5245 * A correctly configured system shall configure the following to be 5246 * consistent: 5247 * 5248 * * @ref CONFIGURE_TASK_STACK_ALLOCATOR_INIT 5249 * 5250 * * @ref CONFIGURE_TASK_STACK_ALLOCATOR 5251 * 5252 * * ``CONFIGURE_TASK_STACK_DEALLOCATOR`` 5253 * @endparblock 5254 */ 5255 #define CONFIGURE_TASK_STACK_DEALLOCATOR 5256 5257 /* Generated from spec:/acfg/if/task-stack-from-alloc */ 5258 5259 /** 5260 * @brief This configuration option is an initializer define. 5261 * 5262 * @anchor CONFIGURE_TASK_STACK_FROM_ALLOCATOR 5263 * 5264 * The value of this configuration option is used to calculate the task stack 5265 * space size. 5266 * 5267 * @par Default Value 5268 * The default value is a macro which supports the system heap allocator. 5269 * 5270 * @par Constraints 5271 * The value of the configuration option shall be defined to a macro which 5272 * accepts exactly one parameter and returns an unsigned integer. The 5273 * parameter will be an allocation size and the macro shall return this size 5274 * plus the overhead of the allocator to manage an allocation request for this 5275 * size. 5276 * 5277 * @par Notes 5278 * This configuration option may be used if a custom task stack allocator is 5279 * configured, see @ref CONFIGURE_TASK_STACK_ALLOCATOR. 5280 */ 5281 #define CONFIGURE_TASK_STACK_FROM_ALLOCATOR 5282 5283 /** @} */
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |