Back to home page

LXR

 
 

    


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 /** @} */