/* SPDX-License-Identifier: BSD-2-Clause */
/*
* Copyright (C) 2019, 2022 embedded brains GmbH (http://www.embedded-brains.de)
* Copyright (C) 2010 Gedare Bloom
* Copyright (C) 1988, 2021 On-Line Applications Research Corporation (OAR)
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/*
* This file is part of the RTEMS quality process and was automatically
* generated. If you find something that needs to be fixed or
* worded better please post a report or patch to an RTEMS mailing list
* or raise a bug report:
*
* https://www.rtems.org/bugs.html
*
* For information on updating and regenerating please refer to the How-To
* section in the Software Requirements Engineering chapter of the
* RTEMS Software Engineering manual. The manual is provided as a part of
* a release. For development sources please refer to the online
* documentation at:
*
* https://docs.rtems.org
*/
/**
* @defgroup RTEMSApplConfig Application Configuration Options
*
* @ingroup RTEMSAPI
*/
/* Generated from spec:/acfg/if/group-bdbuf */
/**
* @defgroup RTEMSApplConfigBlockDeviceCacheConfiguration \
* Block Device Cache Configuration
*
* @ingroup RTEMSApplConfig
*
* This section describes configuration options related to the Block Device
* Cache (bdbuf).
*
* @{
*/
/* Generated from spec:/acfg/if/appl-needs-libblock */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Block Device Cache is
* initialized during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* Each option of the Block Device Cache (bdbuf) configuration can be
* explicitly set by the user with the configuration options below. The Block
* Device Cache is used for example by the RFS and DOSFS filesystems.
*/
#define CONFIGURE_APPLICATION_NEEDS_LIBBLOCK
/* Generated from spec:/acfg/if/bdbuf-buffer-max-size */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum size of a buffer
* in bytes.
*
* @par Default Value
* The default value is 4096.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be an integral multiple of #CONFIGURE_BDBUF_BUFFER_MIN_SIZE.
* @endparblock
*/
#define CONFIGURE_BDBUF_BUFFER_MAX_SIZE
/* Generated from spec:/acfg/if/bdbuf-buffer-min-size */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the minimum size of a buffer
* in bytes.
*
* @par Default Value
* The default value is 512.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to UINT32_MAX.
* @endparblock
*/
#define CONFIGURE_BDBUF_BUFFER_MIN_SIZE
/* Generated from spec:/acfg/if/bdbuf-cache-memory-size */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the size of the cache memory
* in bytes.
*
* @par Default Value
* The default value is 32768.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to SIZE_MAX.
* @endparblock
*/
#define CONFIGURE_BDBUF_CACHE_MEMORY_SIZE
/* Generated from spec:/acfg/if/bdbuf-max-read-ahead-blocks */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum blocks per
* read-ahead request.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to UINT32_MAX.
* @endparblock
*
* @par Notes
* A value of 0 disables the read-ahead task (default). The read-ahead task
* will issue speculative read transfers if a sequential access pattern is
* detected. This can improve the performance on some systems.
*/
#define CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS
/* Generated from spec:/acfg/if/bdbuf-max-write-blocks */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum blocks per write
* request.
*
* @par Default Value
* The default value is 16.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to UINT32_MAX.
* @endparblock
*/
#define CONFIGURE_BDBUF_MAX_WRITE_BLOCKS
/* Generated from spec:/acfg/if/bdbuf-read-ahead-task-priority */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the read-ahead task priority.
*
* @par Default Value
* The default value is 15.
*
* @par Value Constraints
* The value of this configuration option shall be a valid Classic API task
* priority. The set of valid task priorities depends on the scheduler
* configuration.
*/
#define CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY
/* Generated from spec:/acfg/if/bdbuf-task-stack-size */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the task stack size of the
* Block Device Cache tasks in bytes.
*
* @par Default Value
* The default value is #RTEMS_MINIMUM_STACK_SIZE.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It shall be small enough so that the task stack space calculation carried
* out by ```` does not overflow an integer of type uintptr_t.
* @endparblock
*/
#define CONFIGURE_BDBUF_TASK_STACK_SIZE
/* Generated from spec:/acfg/if/bdbuf-swapout-block-hold */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the swapout task maximum
* block hold time in milliseconds.
*
* @par Default Value
* The default value is 1000.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to UINT32_MAX.
* @endparblock
*/
#define CONFIGURE_SWAPOUT_BLOCK_HOLD
/* Generated from spec:/acfg/if/bdbuf-swapout-swap-period */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the swapout task swap period
* in milliseconds.
*
* @par Default Value
* The default value is 250.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to UINT32_MAX.
* @endparblock
*/
#define CONFIGURE_SWAPOUT_SWAP_PERIOD
/* Generated from spec:/acfg/if/bdbuf-swapout-task-priority */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the swapout task priority.
*
* @par Default Value
* The default value is 15.
*
* @par Value Constraints
* The value of this configuration option shall be a valid Classic API task
* priority. The set of valid task priorities depends on the scheduler
* configuration.
*/
#define CONFIGURE_SWAPOUT_TASK_PRIORITY
/* Generated from spec:/acfg/if/bdbuf-swapout-worker-tasks */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the swapout worker task
* count.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to UINT32_MAX.
* @endparblock
*/
#define CONFIGURE_SWAPOUT_WORKER_TASKS
/* Generated from spec:/acfg/if/bdbuf-swapout-worker-taskp-riority */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the swapout worker task
* priority.
*
* @par Default Value
* The default value is 15.
*
* @par Value Constraints
* The value of this configuration option shall be a valid Classic API task
* priority. The set of valid task priorities depends on the scheduler
* configuration.
*/
#define CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY
/** @} */
/* Generated from spec:/acfg/if/group-bsp */
/**
* @defgroup RTEMSApplConfigBSPRelatedConfigurationOptions \
* BSP Related Configuration Options
*
* @ingroup RTEMSApplConfig
*
* This section describes configuration options related to the BSP. Some
* configuration options may have a BSP-specific setting which is defined by
* ````. The BSP-specific settings can be disabled by the
* #CONFIGURE_DISABLE_BSP_SETTINGS configuration option.
*
* @{
*/
/* Generated from spec:/acfg/if/bsp-idle-task-body */
/**
* @brief This configuration option is an initializer define.
*
* If
*
* * this configuration option is defined by the BSP
*
* * and #CONFIGURE_DISABLE_BSP_SETTINGS is undefined,
*
* then the value of this configuration option defines the default value of
* #CONFIGURE_IDLE_TASK_BODY.
*
* @par Default Value
* The default value is BSP-specific.
*
* @par Value Constraints
* The value of this configuration option shall be defined to a valid function
* pointer of the type ``void *( *idle_body )( uintptr_t )``.
*
* @par Notes
* As it has knowledge of the specific CPU model, system controller logic, and
* peripheral buses, a BSP-specific IDLE task may be capable of turning
* components off to save power during extended periods of no task activity.
*/
#define BSP_IDLE_TASK_BODY
/* Generated from spec:/acfg/if/bsp-idle-task-stack-size */
/**
* @brief This configuration option is an integer define.
*
* If
*
* * this configuration option is defined by the BSP
*
* * and #CONFIGURE_DISABLE_BSP_SETTINGS is undefined,
*
* then the value of this configuration option defines the default value of
* #CONFIGURE_IDLE_TASK_STACK_SIZE.
*
* @par Default Value
* The default value is BSP-specific.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to a BSP-specific and
* application-specific minimum value.
*
* * It shall be small enough so that the IDLE task stack area calculation
* carried out by ```` does not overflow an integer of type
* size_t.
* @endparblock
*/
#define BSP_IDLE_TASK_STACK_SIZE
/* Generated from spec:/acfg/if/bsp-initial-extension */
/**
* @brief This configuration option is an initializer define.
*
* If
*
* * this configuration option is defined by the BSP
*
* * and #CONFIGURE_DISABLE_BSP_SETTINGS is undefined,
*
* then the value of this configuration option is used to initialize the table
* of initial user extensions.
*
* @par Default Value
* The default value is BSP-specific.
*
* @par Value Constraints
* The value of this configuration option shall be a list of initializers for
* structures of type ::rtems_extensions_table.
*
* @par Notes
* The value of this configuration option is placed after the entries of all
* other initial user extensions.
*/
#define BSP_INITIAL_EXTENSION
/* Generated from spec:/acfg/if/bsp-interrupt-stack-size */
/**
* @brief This configuration option is an integer define.
*
* If
*
* * this configuration option is defined by the BSP
*
* * and #CONFIGURE_DISABLE_BSP_SETTINGS is undefined,
*
* then the value of this configuration option defines the default value of
* #CONFIGURE_INTERRUPT_STACK_SIZE.
*
* @par Default Value
* The default value is BSP-specific.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to a BSP-specific and
* application-specific minimum value.
*
* * It shall be small enough so that the interrupt stack area calculation
* carried out by ```` does not overflow an integer of type
* size_t.
*
* * It shall be aligned according to #CPU_INTERRUPT_STACK_ALIGNMENT.
* @endparblock
*/
#define BSP_INTERRUPT_STACK_SIZE
/* Generated from spec:/acfg/if/bsp-prerequisite-drivers */
/**
* @brief This configuration option is an initializer define.
*
* If
*
* * this configuration option is defined by the BSP
*
* * and #CONFIGURE_DISABLE_BSP_SETTINGS is undefined,
*
* then the value of this configuration option is used to add BSP-provided
* prerequisite drivers to the Device Driver Table.
*
* @par Default Value
* The default value is BSP-specific.
*
* @par Value Constraints
* The value of this configuration option shall be a list of initializers for
* structures of type ::rtems_extensions_table.
*
* @par Notes
* The value of this configuration option is placed before the entries of all
* other initial user extensions (including
* #CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS).
*/
#define CONFIGURE_BSP_PREREQUISITE_DRIVERS
/* Generated from spec:/acfg/if/disable-bsp-settings */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the following BSP related
* configuration options are undefined:
*
* * #BSP_IDLE_TASK_BODY
*
* * #BSP_IDLE_TASK_STACK_SIZE
*
* * #BSP_INITIAL_EXTENSION
*
* * #BSP_INTERRUPT_STACK_SIZE
*
* * #CONFIGURE_BSP_PREREQUISITE_DRIVERS
*
* * #CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*/
#define CONFIGURE_DISABLE_BSP_SETTINGS
/* Generated from spec:/acfg/if/malloc-bsp-supports-sbrk */
/**
* @brief This configuration option is a boolean feature define.
*
* If
*
* * this configuration option is defined by the BSP
*
* * and #CONFIGURE_DISABLE_BSP_SETTINGS is undefined,
*
* then not all memory is made available to the C Program Heap immediately at
* system initialization time. When malloc() or other standard memory
* allocation functions are unable to allocate memory, they will call the BSP
* supplied sbrk() function to obtain more memory.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* This option should not be defined by the application. Only the BSP knows how
* it allocates memory to the C Program Heap.
*/
#define CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK
/** @} */
/* Generated from spec:/acfg/if/group-classic */
/**
* @defgroup RTEMSApplConfigClassicAPIConfiguration Classic API Configuration
*
* @ingroup RTEMSApplConfig
*
* This section describes configuration options related to the Classic API.
*
* @{
*/
/* Generated from spec:/acfg/if/max-barriers */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of Classic
* API Barriers that can be concurrently active.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to 65535.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It may be defined through rtems_resource_unlimited() the enable unlimited
* objects for the object class, if the value passed to
* rtems_resource_unlimited() satisfies all other constraints of the
* configuration option.
* @endparblock
*
* @par Notes
* This object class can be configured in unlimited allocation mode, see Unlimited
* Objects.
*/
#define CONFIGURE_MAXIMUM_BARRIERS
/* Generated from spec:/acfg/if/max-message-queues */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of Classic
* API Message Queues that can be concurrently active.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to 65535.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It may be defined through rtems_resource_unlimited() the enable unlimited
* objects for the object class, if the value passed to
* rtems_resource_unlimited() satisfies all other constraints of the
* configuration option.
* @endparblock
*
* @par Notes
* This object class can be configured in unlimited allocation mode, see Unlimited
* Objects. You have to account for the memory used to store the messages
* of each message queue, see #CONFIGURE_MESSAGE_BUFFER_MEMORY.
*/
#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES
/* Generated from spec:/acfg/if/max-partitions */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of Classic
* API Partitions that can be concurrently active.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to 65535.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It may be defined through rtems_resource_unlimited() the enable unlimited
* objects for the object class, if the value passed to
* rtems_resource_unlimited() satisfies all other constraints of the
* configuration option.
* @endparblock
*
* @par Notes
* This object class can be configured in unlimited allocation mode, see Unlimited
* Objects.
*/
#define CONFIGURE_MAXIMUM_PARTITIONS
/* Generated from spec:/acfg/if/max-periods */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of Classic
* API Periods that can be concurrently active.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to 65535.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It may be defined through rtems_resource_unlimited() the enable unlimited
* objects for the object class, if the value passed to
* rtems_resource_unlimited() satisfies all other constraints of the
* configuration option.
* @endparblock
*
* @par Notes
* This object class can be configured in unlimited allocation mode, see Unlimited
* Objects.
*/
#define CONFIGURE_MAXIMUM_PERIODS
/* Generated from spec:/acfg/if/max-ports */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of Classic
* API Ports that can be concurrently active.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to 65535.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It may be defined through rtems_resource_unlimited() the enable unlimited
* objects for the object class, if the value passed to
* rtems_resource_unlimited() satisfies all other constraints of the
* configuration option.
* @endparblock
*
* @par Notes
* This object class can be configured in unlimited allocation mode, see Unlimited
* Objects.
*/
#define CONFIGURE_MAXIMUM_PORTS
/* Generated from spec:/acfg/if/max-regions */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of Classic
* API Regions that can be concurrently active.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to 65535.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It may be defined through rtems_resource_unlimited() the enable unlimited
* objects for the object class, if the value passed to
* rtems_resource_unlimited() satisfies all other constraints of the
* configuration option.
* @endparblock
*
* @par Notes
* This object class can be configured in unlimited allocation mode, see Unlimited
* Objects.
*/
#define CONFIGURE_MAXIMUM_REGIONS
/* Generated from spec:/acfg/if/max-semaphores */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of Classic
* API Semaphore that can be concurrently active.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to 65535.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It may be defined through rtems_resource_unlimited() the enable unlimited
* objects for the object class, if the value passed to
* rtems_resource_unlimited() satisfies all other constraints of the
* configuration option.
* @endparblock
*
* @par Notes
* @parblock
* This object class can be configured in unlimited allocation mode, see Unlimited
* Objects.
*
* In SMP configurations, the size of a Semaphore Control Block depends on the
* scheduler count (see Configuration
* Step 3 - Scheduler Table). The semaphores using the Multiprocessor
* Resource Sharing Protocol (MrsP) need a ceiling priority per scheduler.
* @endparblock
*/
#define CONFIGURE_MAXIMUM_SEMAPHORES
/* Generated from spec:/acfg/if/max-tasks */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of Classic
* API Tasks that can be concurrently active.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to 65535.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It shall be small enough so that the task stack space calculation carried
* out by ```` does not overflow an integer of type uintptr_t.
*
* * It may be defined through rtems_resource_unlimited() the enable unlimited
* objects for the object class, if the value passed to
* rtems_resource_unlimited() satisfies all other constraints of the
* configuration option.
* @endparblock
*
* @par Notes
* @parblock
* This object class can be configured in unlimited allocation mode, see Unlimited
* Objects.
*
* The calculations for the required memory in the RTEMS Workspace for tasks
* assume that each task has a minimum stack size and has floating point
* support enabled. The configuration option #CONFIGURE_EXTRA_TASK_STACKS is
* used to specify task stack requirements *above* the minimum size required.
*
* The maximum number of POSIX threads is specified by
* #CONFIGURE_MAXIMUM_POSIX_THREADS.
*
* A future enhancement to ```` could be to eliminate the
* assumption that all tasks have floating point enabled. This would require
* the addition of a new configuration parameter to specify the number of tasks
* which enable floating point support.
* @endparblock
*/
#define CONFIGURE_MAXIMUM_TASKS
/* Generated from spec:/acfg/if/max-thread-local-storage-size */
/**
* @brief This configuration option is an integer define.
*
* If the value of this configuration option is greater than zero, then it
* defines the maximum thread-local storage size, otherwise the thread-local
* storage size is defined by the linker depending on the thread-local storage
* objects used by the application in the statically-linked executable.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to SIZE_MAX.
*
* * It shall be an integral multiple of #RTEMS_TASK_STORAGE_ALIGNMENT.
* @endparblock
*
* @par Notes
* @parblock
* This configuration option can be used to reserve space for the dynamic
* linking of modules with thread-local storage objects.
*
* If the thread-local storage size defined by the thread-local storage objects
* used by the application in the statically-linked executable is greater than
* a non-zero value of this configuration option, then a fatal error will occur
* during system initialization.
*
* Use RTEMS_ALIGN_UP() and #RTEMS_TASK_STORAGE_ALIGNMENT to adjust the size to
* meet the minimum alignment requirement of a thread-local storage area.
*
* The actual thread-local storage size is determined when the application
* executable is linked. The ``rtems-exeinfo`` command line tool included in
* the RTEMS Tools can be used to obtain the thread-local storage size and
* alignment of an application executable.
* @endparblock
*/
#define CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE
/* Generated from spec:/acfg/if/max-timers */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of Classic
* API Timers that can be concurrently active.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to 65535.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It may be defined through rtems_resource_unlimited() the enable unlimited
* objects for the object class, if the value passed to
* rtems_resource_unlimited() satisfies all other constraints of the
* configuration option.
* @endparblock
*
* @par Notes
* This object class can be configured in unlimited allocation mode, see Unlimited
* Objects.
*/
#define CONFIGURE_MAXIMUM_TIMERS
/* Generated from spec:/acfg/if/max-user-extensions */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of Classic
* API User Extensions that can be concurrently active.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to 65535.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
* @endparblock
*
* @par Notes
* This object class cannot be configured in unlimited allocation mode.
*/
#define CONFIGURE_MAXIMUM_USER_EXTENSIONS
/* Generated from spec:/acfg/if/min-tasks-with-user-provided-storage */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the minimum count of Classic
* API Tasks which are constructed by rtems_task_construct().
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to #CONFIGURE_MAXIMUM_TASKS.
* @endparblock
*
* @par Notes
* By default, the calculation for the required memory in the RTEMS Workspace
* for tasks assumes that all Classic API Tasks are created by
* rtems_task_create(). This configuration option can be used to reduce the
* required memory for the system-provided task storage areas since tasks
* constructed by rtems_task_construct() use a user-provided task storage area.
*/
#define CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE
/** @} */
/* Generated from spec:/acfg/if/group-classicinit */
/**
* @defgroup RTEMSApplConfigClassicAPIInitializationTaskConfiguration \
* Classic API Initialization Task Configuration
*
* @ingroup RTEMSApplConfig
*
* This section describes configuration options related to the Classic API
* initialization task.
*
* @{
*/
/* Generated from spec:/acfg/if/init-task-arguments */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines task argument of the Classic
* API initialization task.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* The value of this configuration option shall be convertible to an integer of
* type ::rtems_task_argument.
*/
#define CONFIGURE_INIT_TASK_ARGUMENTS
/* Generated from spec:/acfg/if/init-task-attributes */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the task attributes of the
* Classic API initialization task.
*
* @par Default Value
* The default value is #RTEMS_DEFAULT_ATTRIBUTES.
*
* @par Value Constraints
* The value of this configuration option shall be a valid task attribute set.
*/
#define CONFIGURE_INIT_TASK_ATTRIBUTES
/* Generated from spec:/acfg/if/init-task-construct-storage-size */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the task storage size of the
* Classic API initialization task.
*
* @par Default Value
* This configuration option has no default value. If it is not specified,
* then the Classic API initialization task will be created with the stack size
* defined by the #CONFIGURE_INIT_TASK_STACK_SIZE configuration option.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
*
* * It shall be defined using RTEMS_TASK_STORAGE_SIZE().
* @endparblock
*
* @par Notes
* @parblock
* If this configuration option is specified, then
*
* * a task storage area of the specified size is statically allocated by
* ```` for the Classic API initialization task,
*
* * the Classic API initialization task is constructed by
* rtems_task_construct() instead of using rtems_task_create(),
*
* * the maximum thread-local storage size defined by
* #CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE is used for the Classic API
* initialization task,
*
* * the Classic API initialization task should be accounted for in
* #CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE, and
*
* * the task storage area used for the Classic API initialization task is not
* reclaimed by the system if the task is deleted.
*
* The
*
* * #CONFIGURE_INIT_TASK_STACK_SIZE and
*
* * ``CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE``
*
* configuration options are mutually exclusive.
* @endparblock
*/
#define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE
/* Generated from spec:/acfg/if/init-task-entrypoint */
/**
* @brief This configuration option is an initializer define.
*
* The value of this configuration option initializes the entry point of the
* Classic API initialization task.
*
* @par Default Value
* The default value is ``Init``.
*
* @par Value Constraints
* The value of this configuration option shall be defined to a valid function
* pointer of the type ``void ( *entry_point )( rtems_task_argument )``.
*
* @par Notes
* The application shall provide the function referenced by this configuration
* option.
*/
#define CONFIGURE_INIT_TASK_ENTRY_POINT
/* Generated from spec:/acfg/if/init-task-initial-modes */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the initial execution mode of
* the Classic API initialization task.
*
* @par Default Value
* In SMP configurations, the default value is #RTEMS_DEFAULT_MODES otherwise
* the default value is #RTEMS_NO_PREEMPT.
*
* @par Value Constraints
* The value of this configuration option shall be a valid task mode set.
*/
#define CONFIGURE_INIT_TASK_INITIAL_MODES
/* Generated from spec:/acfg/if/init-task-name */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the name of the Classic API
* initialization task.
*
* @par Default Value
* The default value is ``rtems_build_name( 'U', 'I', '1', ' ' )``.
*
* @par Value Constraints
* The value of this configuration option shall be convertible to an integer of
* type ::rtems_name.
*
* @par Notes
* Use rtems_build_name() to define the task name.
*/
#define CONFIGURE_INIT_TASK_NAME
/* Generated from spec:/acfg/if/init-task-priority */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the initial priority of the
* Classic API initialization task.
*
* @par Default Value
* The default value is 1.
*
* @par Value Constraints
* The value of this configuration option shall be a valid Classic API task
* priority. The set of valid task priorities depends on the scheduler
* configuration.
*/
#define CONFIGURE_INIT_TASK_PRIORITY
/* Generated from spec:/acfg/if/init-task-stack-size */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the task stack size of the
* Classic API initialization task.
*
* @par Default Value
* The default value is #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
*
* * It shall be small enough so that the task stack space calculation carried
* out by ```` does not overflow an integer of type uintptr_t.
* @endparblock
*
* @par Notes
* @parblock
* The
*
* * ``CONFIGURE_INIT_TASK_STACK_SIZE`` and
*
* * #CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE
*
* configuration options are mutually exclusive.
* @endparblock
*/
#define CONFIGURE_INIT_TASK_STACK_SIZE
/* Generated from spec:/acfg/if/rtems-init-tasks-table */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then exactly one Classic API
* initialization task is configured.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* The application shall define exactly one of the following configuration
* options
*
* * ``CONFIGURE_RTEMS_INIT_TASKS_TABLE``,
*
* * #CONFIGURE_POSIX_INIT_THREAD_TABLE, or
*
* * #CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
*
* otherwise a compile time error in the configuration file will occur.
* @endparblock
*/
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
/** @} */
/* Generated from spec:/acfg/if/group-devdrv */
/**
* @defgroup RTEMSApplConfigDeviceDriverConfiguration \
* Device Driver Configuration
*
* @ingroup RTEMSApplConfig
*
* This section describes configuration options related to the device drivers.
* Note that network device drivers are not covered by the following options.
*
* @{
*/
/* Generated from spec:/acfg/if/appl-does-not-need-clock-driver */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then **no** Clock Driver is
* initialized during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then a Clock Driver may be
* initialized during system initialization.
*
* @par Notes
* @parblock
* This configuration parameter is intended to prevent the common user error of
* using the Hello World example as the baseline for an application and leaving
* out a clock tick source.
*
* The application shall define exactly one of the following configuration
* options
*
* * #CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER,
*
* * ``CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER``, or
*
* * #CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER,
*
* otherwise a compile time error in the configuration file will occur.
* @endparblock
*/
#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
/* Generated from spec:/acfg/if/appl-extra-drivers */
/**
* @brief This configuration option is an initializer define.
*
* The value of this configuration option is used to initialize the Device
* Driver Table.
*
* @par Default Value
* The default value is the empty list.
*
* @par Value Constraints
* The value of this configuration option shall be a list of initializers for
* structures of type ::rtems_driver_address_table.
*
* @par Notes
* @parblock
* The value of this configuration option is placed after the entries of other
* device driver configuration options.
*
* See #CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS for an alternative placement
* of application device driver initializers.
* @endparblock
*/
#define CONFIGURE_APPLICATION_EXTRA_DRIVERS
/* Generated from spec:/acfg/if/appl-needs-ata-driver */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the ATA Driver is
* initialized during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* Most BSPs do not include support for an ATA Driver.
*
* If this option is defined and the BSP does not have this device driver, then
* the user will get a link time error for an undefined symbol.
* @endparblock
*/
#define CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER
/* Generated from spec:/acfg/if/appl-needs-clock-driver */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Clock Driver is
* initialized during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* The Clock Driver is responsible for providing a regular interrupt which
* invokes a clock tick directive.
*
* The application shall define exactly one of the following configuration
* options
*
* * ``CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER``,
*
* * #CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER, or
*
* * #CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER,
*
* otherwise a compile time error in the configuration file will occur.
* @endparblock
*/
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
/* Generated from spec:/acfg/if/appl-needs-console-driver */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Console Driver is
* initialized during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* The Console Driver is responsible for providing the ``/dev/console`` device
* file. This device is used to initialize the standard input, output, and
* error file descriptors.
*
* BSPs should be constructed in a manner that allows printk() to work properly
* without the need for the Console Driver to be configured.
*
* The
*
* * ``CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER``,
*
* * #CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER, and
*
* * #CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER
*
* configuration options are mutually exclusive.
* @endparblock
*/
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
/* Generated from spec:/acfg/if/appl-needs-framebuffer-driver */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Frame Buffer Driver
* is initialized during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* Most BSPs do not include support for a Frame Buffer Driver. This is because
* many boards do not include the required hardware.
*
* If this option is defined and the BSP does not have this device driver, then
* the user will get a link time error for an undefined symbol.
* @endparblock
*/
#define CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER
/* Generated from spec:/acfg/if/appl-needs-ide-driver */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the IDE Driver is
* initialized during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* Most BSPs do not include support for an IDE Driver.
*
* If this option is defined and the BSP does not have this device driver, then
* the user will get a link time error for an undefined symbol.
* @endparblock
*/
#define CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER
/* Generated from spec:/acfg/if/appl-needs-null-driver */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the ``/dev/null`` Driver
* is initialized during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* This device driver is supported by all BSPs.
*/
#define CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
/* Generated from spec:/acfg/if/appl-needs-rtc-driver */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Real-Time Clock
* Driver is initialized during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* Most BSPs do not include support for a real-time clock (RTC). This is
* because many boards do not include the required hardware.
*
* If this is defined and the BSP does not have this device driver, then the
* user will get a link time error for an undefined symbol.
* @endparblock
*/
#define CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
/* Generated from spec:/acfg/if/appl-needs-simple-console-driver */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Simple Console Driver
* is initialized during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* This device driver is responsible for providing the ``/dev/console`` device
* file. This device is used to initialize the standard input, output, and
* error file descriptors.
*
* This device driver reads via getchark().
*
* This device driver writes via rtems_putc().
*
* The Termios framework is not used. There is no support to change device
* settings, e.g. baud, stop bits, parity, etc.
*
* The
*
* * #CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER,
*
* * ``CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER``, and
*
* * #CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER
*
* configuration options are mutually exclusive.
* @endparblock
*/
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
/* Generated from spec:/acfg/if/appl-needs-simple-task-console-driver */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Simple Task Console
* Driver is initialized during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* This device driver is responsible for providing the ``/dev/console`` device
* file. This device is used to initialize the standard input, output, and
* error file descriptors.
*
* This device driver reads via getchark().
*
* This device driver writes into a write buffer. The count of characters
* written into the write buffer is returned. It might be less than the
* requested count, in case the write buffer is full. The write is
* non-blocking and may be called from interrupt context. A dedicated task
* reads from the write buffer and outputs the characters via rtems_putc().
* This task runs with the least important priority. The write buffer size is
* 2047 characters and it is not configurable.
*
* Use ``fsync( STDOUT_FILENO )`` or ``fdatasync( STDOUT_FILENO )`` to drain
* the write buffer.
*
* The Termios framework is not used. There is no support to change device
* settings, e.g. baud, stop bits, parity, etc.
*
* The
*
* * #CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER,
*
* * #CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER, and
*
* * ``CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER``
*
* configuration options are mutually exclusive.
* @endparblock
*/
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER
/* Generated from spec:/acfg/if/appl-needs-stub-driver */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Stub Driver is
* initialized during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* This device driver simply provides entry points that return successful and
* is primarily a test fixture. It is supported by all BSPs.
*/
#define CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
/* Generated from spec:/acfg/if/appl-needs-timer-driver */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Benchmark Timer
* Driver is initialized during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* The Benchmark Timer Driver is intended for the benchmark tests of the RTEMS
* Testsuite. Applications should not use this driver.
*
* The application shall define exactly one of the following configuration
* options
*
* * #CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER,
*
* * #CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER, or
*
* * ``CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER``,
*
* otherwise a compile time error will occur.
* @endparblock
*/
#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
/* Generated from spec:/acfg/if/appl-needs-watchdog-driver */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Watchdog Driver is
* initialized during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* Most BSPs do not include support for a watchdog device driver. This is
* because many boards do not include the required hardware.
*
* If this is defined and the BSP does not have this device driver, then the
* user will get a link time error for an undefined symbol.
* @endparblock
*/
#define CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER
/* Generated from spec:/acfg/if/appl-needs-zero-driver */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the ``/dev/zero`` Driver
* is initialized during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* This device driver is supported by all BSPs.
*/
#define CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER
/* Generated from spec:/acfg/if/appl-prerequisite-drivers */
/**
* @brief This configuration option is an initializer define.
*
* The value of this configuration option is used to initialize the Device
* Driver Table.
*
* @par Default Value
* The default value is the empty list.
*
* @par Value Constraints
* The value of this configuration option shall be a list of initializers for
* structures of type ::rtems_driver_address_table.
*
* @par Notes
* @parblock
* The value of this configuration option is placed after the entries defined
* by #CONFIGURE_BSP_PREREQUISITE_DRIVERS and before all other device driver
* configuration options.
*
* See #CONFIGURE_APPLICATION_EXTRA_DRIVERS for an alternative placement of
* application device driver initializers.
* @endparblock
*/
#define CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS
/* Generated from spec:/acfg/if/ata-driver-task-priority */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the ATA task priority.
*
* @par Default Value
* The default value is 140.
*
* @par Value Constraints
* The value of this configuration option shall be a valid Classic API task
* priority. The set of valid task priorities depends on the scheduler
* configuration.
*
* @par Notes
* This configuration option is only evaluated if the configuration option
* #CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER is defined.
*/
#define CONFIGURE_ATA_DRIVER_TASK_PRIORITY
/* Generated from spec:/acfg/if/exception-to-signal-mapping */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the machine exception to
* POSIX signal mapping is configured during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* This device driver is responsible for setting up a mapping from machine
* exceptions to POSIX signals so that applications may consume them and alter
* task execution as necessary.
*
* This is especially useful for applications written in Ada or C++.
* @endparblock
*/
#define CONFIGURE_EXCEPTION_TO_SIGNAL_MAPPING
/* Generated from spec:/acfg/if/max-drivers */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the number of device drivers.
*
* @par Default Value
* @parblock
* This is computed by default, and is set to the number of statically
* configured device drivers configured using the following configuration
* options:
*
* * #CONFIGURE_APPLICATION_EXTRA_DRIVERS
*
* * #CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER
*
* * #CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
*
* * #CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
*
* * #CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER
*
* * #CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER
*
* * #CONFIGURE_APPLICATION_NEEDS_LIBBLOCK
*
* * #CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
*
* * #CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
*
* * #CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
*
* * #CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER
*
* * #CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
*
* * #CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
*
* * #CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER
*
* * #CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER
*
* * #CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS
*
* * #CONFIGURE_BSP_PREREQUISITE_DRIVERS
* @endparblock
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be less than or equal to SIZE_MAX.
*
* * It shall be greater than or equal than the number of statically configured
* device drivers.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
* @endparblock
*
* @par Notes
* If the application will dynamically install device drivers, then the
* configuration option value shall be larger than the number of statically
* configured device drivers.
*/
#define CONFIGURE_MAXIMUM_DRIVERS
/** @} */
/* Generated from spec:/acfg/if/group-eventrecord */
/**
* @defgroup RTEMSApplConfigEventRecordingConfiguration \
* Event Recording Configuration
*
* @ingroup RTEMSApplConfig
*
* This section describes configuration options related to the event recording.
*
* @{
*/
/* Generated from spec:/acfg/if/record-extensions-enabled */
/**
* @brief This configuration option is a boolean feature define.
*
* In case
*
* * this configuration option is defined
*
* * and #CONFIGURE_RECORD_PER_PROCESSOR_ITEMS is properly defined,
*
* then the event record extensions are enabled.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* The record extensions capture thread create, start, restart, delete, switch,
* begin, exitted and terminate events.
*/
#define CONFIGURE_RECORD_EXTENSIONS_ENABLED
/* Generated from spec:/acfg/if/record-fatal-dump-base64 */
/**
* @brief This configuration option is a boolean feature define.
*
* In case
*
* * this configuration option is defined
*
* * and #CONFIGURE_RECORD_PER_PROCESSOR_ITEMS is properly defined,
*
* * and #CONFIGURE_RECORD_FATAL_DUMP_BASE64_ZLIB is undefined,
*
* then the event records are dumped in Base64 encoding in a fatal error
* extension (see Announcing
* a Fatal Error).
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* This extension can be used to produce crash dumps.
*/
#define CONFIGURE_RECORD_FATAL_DUMP_BASE64
/* Generated from spec:/acfg/if/record-fatal-dump-base64-zlib */
/**
* @brief This configuration option is a boolean feature define.
*
* In case
*
* * this configuration option is defined
*
* * and #CONFIGURE_RECORD_PER_PROCESSOR_ITEMS is properly defined,
*
* then the event records are compressed by zlib and dumped in Base64 encoding
* in a fatal error extension (see Announcing
* a Fatal Error).
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* The zlib compression needs about 512KiB of RAM. This extension can be used
* to produce crash dumps.
*/
#define CONFIGURE_RECORD_FATAL_DUMP_BASE64_ZLIB
/* Generated from spec:/acfg/if/record-per-processor-items */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the event record item count
* per processor.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to 16.
*
* * It shall be less than or equal to SIZE_MAX.
*
* * It shall be a power of two.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
* @endparblock
*
* @par Notes
* The event record buffers are statically allocated for each configured
* processor (#CONFIGURE_MAXIMUM_PROCESSORS). If the value of this
* configuration option is zero, then nothing is allocated.
*/
#define CONFIGURE_RECORD_PER_PROCESSOR_ITEMS
/** @} */
/* Generated from spec:/acfg/if/group-filesystem */
/**
* @defgroup RTEMSApplConfigFilesystemConfiguration Filesystem Configuration
*
* @ingroup RTEMSApplConfig
*
* This section describes configuration options related to filesytems. By
* default, the In-Memory Filesystem (IMFS) is used as the base filesystem
* (also known as root filesystem). In order to save some memory for your
* application, you can disable the filesystem support with the
* #CONFIGURE_APPLICATION_DISABLE_FILESYSTEM configuration option.
* Alternatively, you can strip down the features of the base filesystem with
* the #CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM and
* #CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM configuration options. These three
* configuration options are mutually exclusive. They are intended for an
* advanced application configuration.
*
* Features of the IMFS can be disabled and enabled with the following
* configuration options:
*
* * #CONFIGURE_IMFS_DISABLE_CHMOD
*
* * #CONFIGURE_IMFS_DISABLE_CHOWN
*
* * #CONFIGURE_IMFS_DISABLE_LINK
*
* * #CONFIGURE_IMFS_DISABLE_MKNOD
*
* * #CONFIGURE_IMFS_DISABLE_MKNOD_FILE
*
* * #CONFIGURE_IMFS_DISABLE_MOUNT
*
* * #CONFIGURE_IMFS_DISABLE_READDIR
*
* * #CONFIGURE_IMFS_DISABLE_READLINK
*
* * #CONFIGURE_IMFS_DISABLE_RENAME
*
* * #CONFIGURE_IMFS_DISABLE_RMNOD
*
* * #CONFIGURE_IMFS_DISABLE_SYMLINK
*
* * #CONFIGURE_IMFS_DISABLE_UNMOUNT
*
* * #CONFIGURE_IMFS_DISABLE_UTIME
*
* * #CONFIGURE_IMFS_ENABLE_MKFIFO
*
* @{
*/
/* Generated from spec:/acfg/if/appl-disable-filesystem */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then **no base filesystem** is
* initialized during system initialization and **no filesystems** are
* configured.
*
* @par Default Configuration
* If this configuration option is undefined, then a base filesystem and the
* configured filesystems are initialized during system initialization.
*
* @par Notes
* Filesystems shall be initialized to support file descriptor based device
* drivers and basic input/output functions such as printf(). Filesystems can
* be disabled to reduce the memory footprint of an application.
*/
#define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
/* Generated from spec:/acfg/if/filesystem-all */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the following
* configuration options will be defined as well
*
* * #CONFIGURE_FILESYSTEM_DOSFS,
*
* * #CONFIGURE_FILESYSTEM_FTPFS,
*
* * #CONFIGURE_FILESYSTEM_IMFS,
*
* * #CONFIGURE_FILESYSTEM_JFFS2,
*
* * #CONFIGURE_FILESYSTEM_NFS,
*
* * #CONFIGURE_FILESYSTEM_RFS, and
*
* * #CONFIGURE_FILESYSTEM_TFTPFS.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*/
#define CONFIGURE_FILESYSTEM_ALL
/* Generated from spec:/acfg/if/filesystem-dosfs */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the DOS (FAT) filesystem
* is registered, so that instances of this filesystem can be mounted by the
* application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* This filesystem requires a Block Device Cache configuration, see
* #CONFIGURE_APPLICATION_NEEDS_LIBBLOCK.
*/
#define CONFIGURE_FILESYSTEM_DOSFS
/* Generated from spec:/acfg/if/filesystem-ftpfs */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the FTP filesystem (FTP
* client) is registered, so that instances of this filesystem can be mounted
* by the application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*/
#define CONFIGURE_FILESYSTEM_FTPFS
/* Generated from spec:/acfg/if/filesystem-imfs */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the In-Memory Filesystem
* (IMFS) is registered, so that instances of this filesystem can be mounted by
* the application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* Applications will rarely need this configuration option. This configuration
* option is intended for test programs. You do not need to define this
* configuration option for the base filesystem (also known as root
* filesystem).
*/
#define CONFIGURE_FILESYSTEM_IMFS
/* Generated from spec:/acfg/if/filesystem-jffs2 */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the JFFS2 filesystem is
* registered, so that instances of this filesystem can be mounted by the
* application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*/
#define CONFIGURE_FILESYSTEM_JFFS2
/* Generated from spec:/acfg/if/filesystem-nfs */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Network Filesystem
* (NFS) client is registered, so that instances of this filesystem can be
* mounted by the application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*/
#define CONFIGURE_FILESYSTEM_NFS
/* Generated from spec:/acfg/if/filesystem-rfs */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the RTEMS Filesystem
* (RFS) is registered, so that instances of this filesystem can be mounted by
* the application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* This filesystem requires a Block Device Cache configuration, see
* #CONFIGURE_APPLICATION_NEEDS_LIBBLOCK.
*/
#define CONFIGURE_FILESYSTEM_RFS
/* Generated from spec:/acfg/if/filesystem-tftpfs */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the TFTP filesystem (TFTP
* client) is registered, so that instances of this filesystem can be mounted
* by the application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*/
#define CONFIGURE_FILESYSTEM_TFTPFS
/* Generated from spec:/acfg/if/imfs-disable-chmod */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the root IMFS does not
* support changing the mode of files (no support for chmod()).
*
* @par Default Configuration
* If this configuration option is undefined, then the root IMFS supports
* changing the mode of files.
*/
#define CONFIGURE_IMFS_DISABLE_CHMOD
/* Generated from spec:/acfg/if/imfs-disable-chown */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the root IMFS does not
* support changing the ownership of files (no support for chown()).
*
* @par Default Configuration
* If this configuration option is undefined, then the root IMFS supports
* changing the ownership of files.
*/
#define CONFIGURE_IMFS_DISABLE_CHOWN
/* Generated from spec:/acfg/if/imfs-disable-link */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the root IMFS does not
* support hard links (no support for link()).
*
* @par Default Configuration
* If this configuration option is undefined, then the root IMFS supports hard
* links.
*/
#define CONFIGURE_IMFS_DISABLE_LINK
/* Generated from spec:/acfg/if/imfs-disable-mknod */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the root IMFS does not
* support making files (no support for mknod()).
*
* @par Default Configuration
* If this configuration option is undefined, then the root IMFS supports
* making files.
*/
#define CONFIGURE_IMFS_DISABLE_MKNOD
/* Generated from spec:/acfg/if/imfs-disable-mknod-device */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the root IMFS does not
* support making device files.
*
* @par Default Configuration
* If this configuration option is undefined, then the root IMFS supports
* making device files.
*/
#define CONFIGURE_IMFS_DISABLE_MKNOD_DEVICE
/* Generated from spec:/acfg/if/imfs-disable-mknod-file */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the root IMFS does not
* support making regular files.
*
* @par Default Configuration
* If this configuration option is undefined, then the root IMFS supports
* making regular files.
*/
#define CONFIGURE_IMFS_DISABLE_MKNOD_FILE
/* Generated from spec:/acfg/if/imfs-disable-mount */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the root IMFS does not
* support mounting other filesystems (no support for mount()).
*
* @par Default Configuration
* If this configuration option is undefined, then the root IMFS supports
* mounting other filesystems.
*/
#define CONFIGURE_IMFS_DISABLE_MOUNT
/* Generated from spec:/acfg/if/imfs-disable-readdir */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the root IMFS does not
* support reading directories (no support for readdir()). It is still
* possible to open files in a directory.
*
* @par Default Configuration
* If this configuration option is undefined, then the root IMFS supports
* reading directories.
*/
#define CONFIGURE_IMFS_DISABLE_READDIR
/* Generated from spec:/acfg/if/imfs-disable-readlink */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the root IMFS does not
* support reading symbolic links (no support for readlink()).
*
* @par Default Configuration
* If this configuration option is undefined, then the root IMFS supports
* reading symbolic links.
*/
#define CONFIGURE_IMFS_DISABLE_READLINK
/* Generated from spec:/acfg/if/imfs-disable-rename */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the root IMFS does not
* support renaming files (no support for rename()).
*
* @par Default Configuration
* If this configuration option is undefined, then the root IMFS supports
* renaming files.
*/
#define CONFIGURE_IMFS_DISABLE_RENAME
/* Generated from spec:/acfg/if/imfs-disable-rmnod */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the root IMFS does not
* support removing files (no support for rmnod()).
*
* @par Default Configuration
* If this configuration option is undefined, then the root IMFS supports
* removing files.
*/
#define CONFIGURE_IMFS_DISABLE_RMNOD
/* Generated from spec:/acfg/if/imfs-disable-symlink */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the root IMFS does not
* support creating symbolic links (no support for symlink()).
*
* @par Default Configuration
* If this configuration option is undefined, then the root IMFS supports
* creating symbolic links.
*/
#define CONFIGURE_IMFS_DISABLE_SYMLINK
/* Generated from spec:/acfg/if/imfs-disable-unmount */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the root IMFS does not
* support unmounting other filesystems (no support for unmount()).
*
* @par Default Configuration
* If this configuration option is undefined, then the root IMFS supports
* unmounting other filesystems.
*/
#define CONFIGURE_IMFS_DISABLE_UNMOUNT
/* Generated from spec:/acfg/if/imfs-disable-utime */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the root IMFS does not
* support changing file times (no support for utime()).
*
* @par Default Configuration
* If this configuration option is undefined, then the root IMFS supports
* changing file times.
*/
#define CONFIGURE_IMFS_DISABLE_UTIME
/* Generated from spec:/acfg/if/imfs-enable-mkfifo */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the root IMFS supports
* making FIFOs.
*
* @par Default Configuration
* If this configuration option is undefined, then the root IMFS does not
* support making FIFOs (no support for mkfifo()).
*/
#define CONFIGURE_IMFS_ENABLE_MKFIFO
/* Generated from spec:/acfg/if/imfs-memfile-bytes-per-block */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the block size for in-memory
* files managed by the IMFS.
*
* @par Default Value
* The default value is 128.
*
* @par Value Constraints
* The value of this configuration option shall be equal to 16, 32, 64, 128,
* 256, or 512.
*
* @par Notes
* @parblock
* The configured block size has two impacts. The first is the average amount
* of unused memory in the last block of each file. For example, when the
* block size is 512, on average one-half of the last block of each file will
* remain unused and the memory is wasted. In contrast, when the block size is
* 16, the average unused memory per file is only 8 bytes. However, it requires
* more allocations for the same size file and thus more overhead per block for
* the dynamic memory management.
*
* Second, the block size has an impact on the maximum size file that can be
* stored in the IMFS. With smaller block size, the maximum file size is
* correspondingly smaller. The following shows the maximum file size possible
* based on the configured block size:
*
* * when the block size is 16 bytes, the maximum file size is 1,328 bytes.
*
* * when the block size is 32 bytes, the maximum file size is 18,656 bytes.
*
* * when the block size is 64 bytes, the maximum file size is 279,488 bytes.
*
* * when the block size is 128 bytes, the maximum file size is 4,329,344
* bytes.
*
* * when the block size is 256 bytes, the maximum file size is 68,173,568
* bytes.
*
* * when the block size is 512 bytes, the maximum file size is 1,082,195,456
* bytes.
* @endparblock
*/
#define CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK
/* Generated from spec:/acfg/if/use-devfs-as-base-filesystem */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then an IMFS with a reduced
* feature set will be the base filesystem (also known as root filesystem).
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* In case this configuration option is defined, then the following
* configuration options will be defined as well
*
* * #CONFIGURE_IMFS_DISABLE_CHMOD,
*
* * #CONFIGURE_IMFS_DISABLE_CHOWN,
*
* * #CONFIGURE_IMFS_DISABLE_LINK,
*
* * #CONFIGURE_IMFS_DISABLE_MKNOD_FILE,
*
* * #CONFIGURE_IMFS_DISABLE_MOUNT,
*
* * #CONFIGURE_IMFS_DISABLE_READDIR,
*
* * #CONFIGURE_IMFS_DISABLE_READLINK,
*
* * #CONFIGURE_IMFS_DISABLE_RENAME,
*
* * #CONFIGURE_IMFS_DISABLE_RMNOD,
*
* * #CONFIGURE_IMFS_DISABLE_SYMLINK,
*
* * #CONFIGURE_IMFS_DISABLE_UTIME, and
*
* * #CONFIGURE_IMFS_DISABLE_UNMOUNT.
*
* In addition, a simplified path evaluation is enabled. It allows only a look
* up of absolute paths.
*
* This configuration of the IMFS is basically a device-only filesystem. It is
* comparable in functionality to the pseudo-filesystem name space provided
* before RTEMS release 4.5.0.
* @endparblock
*/
#define CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM
/* Generated from spec:/acfg/if/use-miniimfs-as-base-filesystem */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then an IMFS with a reduced
* feature set will be the base filesystem (also known as root filesystem).
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* In case this configuration option is defined, then the following
* configuration options will be defined as well
*
* * #CONFIGURE_IMFS_DISABLE_CHMOD,
*
* * #CONFIGURE_IMFS_DISABLE_CHOWN,
*
* * #CONFIGURE_IMFS_DISABLE_LINK,
*
* * #CONFIGURE_IMFS_DISABLE_READLINK,
*
* * #CONFIGURE_IMFS_DISABLE_RENAME,
*
* * #CONFIGURE_IMFS_DISABLE_SYMLINK,
*
* * #CONFIGURE_IMFS_DISABLE_UTIME, and
*
* * #CONFIGURE_IMFS_DISABLE_UNMOUNT.
* @endparblock
*/
#define CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
/** @} */
/* Generated from spec:/acfg/if/group-general */
/**
* @defgroup RTEMSApplConfigGeneralSystemConfiguration \
* General System Configuration
*
* @ingroup RTEMSApplConfig
*
* This section describes general system configuration options.
*
* @{
*/
/* Generated from spec:/acfg/if/dirty-memory */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the memory areas used for
* the RTEMS Workspace and the C Program Heap are dirtied with a ``0xCF`` byte
* pattern during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* Dirtying memory can add significantly to system initialization time. It may
* assist in finding code that incorrectly assumes the contents of free memory
* areas is cleared to zero during system initialization. In case
* #CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY is also defined, then the memory is
* first dirtied and then zeroed.
*
* See also #CONFIGURE_MALLOC_DIRTY.
* @endparblock
*/
#define CONFIGURE_DIRTY_MEMORY
/* Generated from spec:/acfg/if/disable-newlib-reentrancy */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Newlib reentrancy
* support per thread is disabled and a global reentrancy structure is used.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* You can enable this option to reduce the size of the :term:`TCB`. Use this
* option with care, since it can lead to race conditions and undefined system
* behaviour. For example, #errno is no longer a thread-local variable if this
* option is enabled.
*/
#define CONFIGURE_DISABLE_NEWLIB_REENTRANCY
/* Generated from spec:/acfg/if/executive-ram-size */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the RTEMS Workspace size in
* bytes.
*
* @par Default Value
* If this configuration option is undefined, then the RTEMS Workspace and task
* stack space size is calculated by ```` based on the values
* configuration options.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to UINTPTR_MAX.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
* @endparblock
*
* @par Notes
* This is an advanced configuration option. Use it only if you know exactly
* what you are doing.
*/
#define CONFIGURE_EXECUTIVE_RAM_SIZE
/* Generated from spec:/acfg/if/extra-task-stacks */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the number of bytes the
* applications wishes to add to the task stack requirements calculated by
* ````.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be small enough so that the task stack space calculation carried
* out by ```` does not overflow an integer of type uintptr_t.
* @endparblock
*
* @par Notes
* This parameter is very important. If the application creates tasks with
* stacks larger then the minimum, then that memory is **not** accounted for by
* ````.
*/
#define CONFIGURE_EXTRA_TASK_STACKS
/* Generated from spec:/acfg/if/initial-extensions */
/**
* @brief This configuration option is an initializer define.
*
* The value of this configuration option is used to initialize the table of
* initial user extensions.
*
* @par Default Value
* The default value is the empty list.
*
* @par Value Constraints
* The value of this configuration option shall be a list of initializers for
* structures of type ::rtems_extensions_table.
*
* @par Notes
* The value of this configuration option is placed before the entries of
* #BSP_INITIAL_EXTENSION and after the entries of all other initial user
* extensions.
*/
#define CONFIGURE_INITIAL_EXTENSIONS
/* Generated from spec:/acfg/if/interrupt-stack-size */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the size of an interrupt
* stack in bytes.
*
* @par Default Value
* The default value is #BSP_INTERRUPT_STACK_SIZE in case it is defined,
* otherwise the default value is #CPU_STACK_MINIMUM_SIZE.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to a BSP-specific and
* application-specific minimum value.
*
* * It shall be small enough so that the interrupt stack area calculation
* carried out by ```` does not overflow an integer of type
* size_t.
*
* * It shall be aligned according to #CPU_INTERRUPT_STACK_ALIGNMENT.
* @endparblock
*
* @par Notes
* @parblock
* There is one interrupt stack available for each configured processor
* (#CONFIGURE_MAXIMUM_PROCESSORS). The interrupt stack areas are statically
* allocated in a special linker section (``.rtemsstack.interrupt``). The
* placement of this linker section is BSP-specific.
*
* Some BSPs use the interrupt stack as the initialization stack which is used
* to perform the sequential system initialization before the multithreading is
* started.
*
* The interrupt stacks are covered by the stack checker, see
* #CONFIGURE_STACK_CHECKER_ENABLED. However, using a too small interrupt
* stack size may still result in undefined behaviour.
*
* In releases before RTEMS 5.1 the default value was
* #CONFIGURE_MINIMUM_TASK_STACK_SIZE instead of #CPU_STACK_MINIMUM_SIZE.
* @endparblock
*/
#define CONFIGURE_INTERRUPT_STACK_SIZE
/* Generated from spec:/acfg/if/malloc-dirty */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then each memory area returned
* by C Program Heap allocator functions such as malloc() is dirtied with a
* ``0xCF`` byte pattern before it is handed over to the application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* The dirtying performed by this option is carried out for each successful
* memory allocation from the C Program Heap in contrast to
* #CONFIGURE_DIRTY_MEMORY which dirties the memory only once during the system
* initialization.
*/
#define CONFIGURE_MALLOC_DIRTY
/* Generated from spec:/acfg/if/max-file-descriptors */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of file
* like objects that can be concurrently open.
*
* @par Default Value
* The default value is 3.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to SIZE_MAX.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
* @endparblock
*
* @par Notes
* The default value of three file descriptors allows RTEMS to support standard
* input, output, and error I/O streams on ``/dev/console``.
*/
#define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS
/* Generated from spec:/acfg/if/max-processors */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of
* processors an application intends to use. The number of actually available
* processors depends on the hardware and may be less. It is recommended to
* use the smallest value suitable for the application in order to save memory.
* Each processor needs an IDLE task stack and interrupt stack for example.
*
* @par Default Value
* The default value is 1.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to one.
*
* * It shall be less than or equal to #CPU_MAXIMUM_PROCESSORS.
* @endparblock
*
* @par Notes
* @parblock
* If there are more processors available than configured, the rest will be
* ignored.
*
* This configuration option is only evaluated in SMP configurations (e.g.
* RTEMS was built with the ``--enable-smp`` build configuration option). In
* all other configurations it has no effect.
* @endparblock
*/
#define CONFIGURE_MAXIMUM_PROCESSORS
/* Generated from spec:/acfg/if/max-thread-name-size */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum thread name size
* including the terminating ``NUL`` character.
*
* @par Default Value
* The default value is 16.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to SIZE_MAX.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
* @endparblock
*
* @par Notes
* @parblock
* The default value was chosen for Linux compatibility, see PTHREAD_SETNAME_NP(3).
*
* The size of the thread control block is increased by the maximum thread name
* size.
*
* This configuration option is available since RTEMS 5.1.
* @endparblock
*/
#define CONFIGURE_MAXIMUM_THREAD_NAME_SIZE
/* Generated from spec:/acfg/if/memory-overhead */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the number of kilobytes the
* application wishes to add to the RTEMS Workspace size calculated by
* ````.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It shall be small enough so that the RTEMS Workspace size calculation
* carried out by ```` does not overflow an integer of type
* uintptr_t.
* @endparblock
*
* @par Notes
* This configuration option should only be used when it is suspected that a
* bug in ```` has resulted in an underestimation. Typically
* the memory allocation will be too low when an application does not account
* for all message queue buffers or task stacks, see
* #CONFIGURE_MESSAGE_BUFFER_MEMORY.
*/
#define CONFIGURE_MEMORY_OVERHEAD
/* Generated from spec:/acfg/if/message-buffer-memory */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the number of bytes reserved
* for message queue buffers in the RTEMS Workspace.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It shall be small enough so that the RTEMS Workspace size calculation
* carried out by ```` does not overflow an integer of type
* uintptr_t.
* @endparblock
*
* @par Notes
* @parblock
* The configuration options #CONFIGURE_MAXIMUM_MESSAGE_QUEUES and
* #CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES define only how many message queues
* can be created by the application. The memory for the message buffers is
* configured by this option. For each message queue you have to reserve some
* memory for the message buffers. The size depends on the maximum number of
* pending messages and the maximum size of the messages of a message queue.
* Use the ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE()`` macro to specify the
* message buffer memory for each message queue and sum them up to define the
* value for ``CONFIGURE_MAXIMUM_MESSAGE_QUEUES``.
*
* The interface for the ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE()`` help macro
* is as follows:
*
* @code
* CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( max_messages, max_msg_size )
* @endcode
*
* Where ``max_messages`` is the maximum number of pending messages and
* ``max_msg_size`` is the maximum size in bytes of the messages of the
* corresponding message queue. Both parameters shall be compile time
* constants. Not using this help macro (e.g. just using ``max_messages *
* max_msg_size``) may result in an underestimate of the RTEMS Workspace size.
*
* The following example illustrates how the
* ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE()`` help macro can be used to assist
* in calculating the message buffer memory required. In this example, there
* are two message queues used in this application. The first message queue
* has a maximum of 24 pending messages with the message structure defined by
* the type ``one_message_type``. The other message queue has a maximum of 500
* pending messages with the message structure defined by the type
* ``other_message_type``.
*
* @code
* #define CONFIGURE_MESSAGE_BUFFER_MEMORY ( \
* CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( \
* 24, \
* sizeof( one_message_type ) \
* ) \
* + CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( \
* 500, \
* sizeof( other_message_type ) \
* ) \
* )
* @endcode
* @endparblock
*/
#define CONFIGURE_MESSAGE_BUFFER_MEMORY
/* Generated from spec:/acfg/if/microseconds-per-tick */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the length of time in
* microseconds between clock ticks (clock tick quantum).
*
* When the clock tick quantum value is too low, the system will spend so much
* time processing clock ticks that it does not have processing time available
* to perform application work. In this case, the system will become
* unresponsive.
*
* The lowest practical time quantum varies widely based upon the speed of the
* target hardware and the architectural overhead associated with interrupts.
* In general terms, you do not want to configure it lower than is needed for
* the application.
*
* The clock tick quantum should be selected such that it all blocking and
* delay times in the application are evenly divisible by it. Otherwise,
* rounding errors will be introduced which may negatively impact the
* application.
*
* @par Default Value
* The default value is 10000.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to a value defined by the Clock Driver.
*
* * It shall be less than or equal to a value defined by the Clock Driver.
*
* * The resulting clock ticks per second should be an integer.
* @endparblock
*
* @par Notes
* @parblock
* This configuration option has no impact if the Clock Driver is not
* configured, see #CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER.
*
* There may be Clock Driver specific limits on the resolution or maximum value
* of a clock tick quantum.
* @endparblock
*/
#define CONFIGURE_MICROSECONDS_PER_TICK
/* Generated from spec:/acfg/if/min-task-stack-size */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the minimum stack size in
* bytes for every user task or thread in the system.
*
* @par Default Value
* The default value is #CPU_STACK_MINIMUM_SIZE.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be small enough so that the task stack space calculation carried
* out by ```` does not overflow an integer of type uintptr_t.
*
* * It shall be greater than or equal to a BSP-specific and
* application-specific minimum value.
* @endparblock
*
* @par Notes
* @parblock
* Adjusting this parameter should be done with caution. Examining the actual
* stack usage using the stack checker usage reporting facility is recommended
* (see also #CONFIGURE_STACK_CHECKER_ENABLED).
*
* This parameter can be used to lower the minimum from that recommended. This
* can be used in low memory systems to reduce memory consumption for stacks.
* However, this shall be done with caution as it could increase the
* possibility of a blown task stack.
*
* This parameter can be used to increase the minimum from that recommended.
* This can be used in higher memory systems to reduce the risk of stack
* overflow without performing analysis on actual consumption.
*
* By default, this configuration parameter defines also the minimum stack size
* of POSIX threads. This can be changed with the
* #CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE configuration option.
*
* In releases before RTEMS 5.1 the ``CONFIGURE_MINIMUM_TASK_STACK_SIZE`` was
* used to define the default value of #CONFIGURE_INTERRUPT_STACK_SIZE.
* @endparblock
*/
#define CONFIGURE_MINIMUM_TASK_STACK_SIZE
/* Generated from spec:/acfg/if/stack-checker-enabled */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the stack checker is
* enabled.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* The stack checker performs run-time stack bounds checking. This increases
* the time required to create tasks as well as adding overhead to each context
* switch.
*
* In 4.9 and older, this configuration option was named ``STACK_CHECKER_ON``.
* @endparblock
*/
#define CONFIGURE_STACK_CHECKER_ENABLED
/* Generated from spec:/acfg/if/ticks-per-time-slice */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the length of the timeslice
* quantum in ticks for each task.
*
* @par Default Value
* The default value is 50.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to UINT32_MAX.
* @endparblock
*
* @par Notes
* This configuration option has no impact if the Clock Driver is not
* configured, see #CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER.
*/
#define CONFIGURE_TICKS_PER_TIMESLICE
/* Generated from spec:/acfg/if/unified-work-areas */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the RTEMS Workspace and
* the C Program Heap will be one pool of memory.
*
* @par Default Configuration
* If this configuration option is undefined, then there will be separate
* memory pools for the RTEMS Workspace and C Program Heap.
*
* @par Notes
* @parblock
* Having separate pools does have some advantages in the event a task blows a
* stack or writes outside its memory area. However, in low memory systems the
* overhead of the two pools plus the potential for unused memory in either
* pool is very undesirable.
*
* In high memory environments, this is desirable when you want to use the Unlimited
* Objects option. You will be able to create objects until you run out of
* all available memory rather then just until you run out of RTEMS Workspace.
* @endparblock
*/
#define CONFIGURE_UNIFIED_WORK_AREAS
/* Generated from spec:/acfg/if/unlimited-allocation-size */
/**
* @brief This configuration option is an integer define.
*
* If #CONFIGURE_UNLIMITED_OBJECTS is defined, then the value of this
* configuration option defines the default objects maximum of all object
* classes supporting Unlimited
* Objects to ``rtems_resource_unlimited(
* CONFIGURE_UNLIMITED_ALLOCATION_SIZE )``.
*
* @par Default Value
* The default value is 8.
*
* @par Value Constraints
* The value of this configuration option shall meet the constraints of all
* object classes to which it is applied.
*
* @par Notes
* @parblock
* By allowing users to declare all resources as being unlimited the user can
* avoid identifying and limiting the resources used.
*
* The object maximum of each class can be configured also individually using
* the rtems_resource_unlimited() macro.
* @endparblock
*/
#define CONFIGURE_UNLIMITED_ALLOCATION_SIZE
/* Generated from spec:/acfg/if/unlimited-objects */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then unlimited objects are
* used by default.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* When using unlimited objects, it is common practice to also specify
* #CONFIGURE_UNIFIED_WORK_AREAS so the system operates with a single pool of
* memory for both RTEMS Workspace and C Program Heap.
*
* This option does not override an explicit configuration for a particular
* object class by the user.
*
* See also #CONFIGURE_UNLIMITED_ALLOCATION_SIZE.
* @endparblock
*/
#define CONFIGURE_UNLIMITED_OBJECTS
/* Generated from spec:/acfg/if/verbose-system-init */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the system initialization
* is verbose.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* You may use this feature to debug system initialization issues. The
* printk() function is used to print the information.
*/
#define CONFIGURE_VERBOSE_SYSTEM_INITIALIZATION
/* Generated from spec:/acfg/if/zero-workspace-automatically */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the memory areas used for
* the RTEMS Workspace and the C Program Heap are zeroed with a ``0x00`` byte
* pattern during system initialization.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* Zeroing memory can add significantly to the system initialization time. It
* is not necessary for RTEMS but is often assumed by support libraries. In
* case #CONFIGURE_DIRTY_MEMORY is also defined, then the memory is first
* dirtied and then zeroed.
*/
#define CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY
/** @} */
/* Generated from spec:/acfg/if/group-idle */
/**
* @defgroup RTEMSApplConfigIdleTaskConfiguration Idle Task Configuration
*
* @ingroup RTEMSApplConfig
*
* This section describes configuration options related to the idle tasks.
*
* @{
*/
/* Generated from spec:/acfg/if/idle-task-body */
/**
* @brief This configuration option is an initializer define.
*
* The value of this configuration option initializes the IDLE thread body.
*
* @par Default Value
* If #BSP_IDLE_TASK_BODY is defined, then this will be the default value,
* otherwise the default value is ``_CPU_Thread_Idle_body``.
*
* @par Value Constraints
* The value of this configuration option shall be defined to a valid function
* pointer of the type ``void *( *idle_body )( uintptr_t )``.
*
* @par Notes
* @parblock
* IDLE threads shall not block. A blocking IDLE thread results in undefined
* system behaviour because the scheduler assume that at least one ready thread
* exists.
*
* IDLE threads can be used to initialize the application, see configuration
* option #CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION.
* @endparblock
*/
#define CONFIGURE_IDLE_TASK_BODY
/* Generated from spec:/acfg/if/idle-task-init-appl */
/**
* @brief This configuration option is a boolean feature define.
*
* This configuration option is defined to indicate that the user has
* configured **no** user initialization tasks or threads and that the user
* provided IDLE task will perform application initialization and then
* transform itself into an IDLE task.
*
* @par Default Configuration
* If this configuration option is undefined, then the user is assumed to
* provide one or more initialization tasks.
*
* @par Notes
* @parblock
* If you use this option be careful, the user IDLE task **cannot** block at
* all during the initialization sequence. Further, once application
* initialization is complete, it shall make itself preemptible and enter an
* idle body loop.
*
* The IDLE task shall run at the lowest priority of all tasks in the system.
*
* If this configuration option is defined, then it is mandatory to configure a
* user IDLE task with the #CONFIGURE_IDLE_TASK_BODY configuration option,
* otherwise a compile time error in the configuration file will occur.
*
* The application shall define exactly one of the following configuration
* options
*
* * #CONFIGURE_RTEMS_INIT_TASKS_TABLE,
*
* * #CONFIGURE_POSIX_INIT_THREAD_TABLE, or
*
* * ``CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION``
*
* otherwise a compile time error in the configuration file will occur.
* @endparblock
*/
#define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
/* Generated from spec:/acfg/if/idle-task-stack-size */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the task stack size for an
* IDLE task.
*
* @par Default Value
* The default value is #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to a BSP-specific and
* application-specific minimum value.
*
* * It shall be small enough so that the IDLE task stack area calculation
* carried out by ```` does not overflow an integer of type
* size_t.
* @endparblock
*
* @par Notes
* In SMP configurations, there is one IDLE task per configured processor, see
* #CONFIGURE_MAXIMUM_PROCESSORS.
*/
#define CONFIGURE_IDLE_TASK_STACK_SIZE
/** @} */
/* Generated from spec:/acfg/if/group-mpci */
/**
* @defgroup RTEMSApplConfigMultiprocessingConfiguration \
* Multiprocessing Configuration
*
* @ingroup RTEMSApplConfig
*
* This section describes multiprocessing related configuration options. The
* options are only used if RTEMS was built with the
* ``--enable-multiprocessing`` build configuration option. Additionally, this
* class of configuration options are only applicable if the configuration
* option #CONFIGURE_MP_APPLICATION is defined. The multiprocessing (MPCI)
* support must not be confused with the SMP support.
*
* @{
*/
/* Generated from spec:/acfg/if/mp-extra-server-stack */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the number of bytes the
* applications wishes to add to the MPCI task stack on top of
* #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to UINT32_MAX.
*
* * It shall be small enough so that the MPCI receive server stack area
* calculation carried out by ```` does not overflow an
* integer of type size_t.
* @endparblock
*
* @par Notes
* This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
* defined.
*/
#define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
/* Generated from spec:/acfg/if/mp-appl */
/**
* @brief This configuration option is a boolean feature define.
*
* This configuration option is defined to indicate that the application
* intends to be part of a multiprocessing configuration. Additional
* configuration options are assumed to be provided.
*
* @par Default Configuration
* If this configuration option is undefined, then the multiprocessing services
* are not initialized.
*
* @par Notes
* This configuration option shall be undefined if the multiprocessing support
* is not enabled (e.g. RTEMS was built without the
* ``--enable-multiprocessing`` build configuration option). Otherwise a
* compile time error in the configuration file will occur.
*/
#define CONFIGURE_MP_APPLICATION
/* Generated from spec:/acfg/if/mp-max-global-objects */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of
* concurrently active global objects in a multiprocessor system.
*
* @par Default Value
* The default value is 32.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to UINT32_MAX.
* @endparblock
*
* @par Notes
* @parblock
* This value corresponds to the total number of objects which can be created
* with the #RTEMS_GLOBAL attribute.
*
* This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
* defined.
* @endparblock
*/
#define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
/* Generated from spec:/acfg/if/mp-max-nodes */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of nodes
* in a multiprocessor system.
*
* @par Default Value
* The default value is 2.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to UINT32_MAX.
* @endparblock
*
* @par Notes
* This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
* defined.
*/
#define CONFIGURE_MP_MAXIMUM_NODES
/* Generated from spec:/acfg/if/mp-max-proxies */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of
* concurrently active thread/task proxies on this node in a multiprocessor
* system.
*
* @par Default Value
* The default value is 32.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to UINT32_MAX.
* @endparblock
*
* @par Notes
* @parblock
* Since a proxy is used to represent a remote task/thread which is blocking on
* this node. This configuration parameter reflects the maximum number of
* remote tasks/threads which can be blocked on objects on this node, see Proxies.
*
* This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
* defined.
* @endparblock
*/
#define CONFIGURE_MP_MAXIMUM_PROXIES
/* Generated from spec:/acfg/if/mp-mpci-table-pointer */
/**
* @brief This configuration option is an initializer define.
*
* The value of this configuration option initializes the MPCI Configuration
* Table.
*
* @par Default Value
* The default value is ``&MPCI_table``.
*
* @par Value Constraints
* The value of this configuration option shall be a pointer to
* ::rtems_mpci_table.
*
* @par Notes
* @parblock
* RTEMS provides a Shared Memory MPCI Device Driver which can be used on any
* Multiprocessor System assuming the BSP provides the proper set of supporting
* methods.
*
* This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
* defined.
* @endparblock
*/
#define CONFIGURE_MP_MPCI_TABLE_POINTER
/* Generated from spec:/acfg/if/mp-node-number */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the node number of this node
* in a multiprocessor system.
*
* @par Default Value
* The default value is ``NODE_NUMBER``.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to UINT32_MAX.
* @endparblock
*
* @par Notes
* @parblock
* In the RTEMS Multiprocessing Test Suite, the node number is derived from the
* Makefile variable ``NODE_NUMBER``. The same code is compiled with the
* ``NODE_NUMBER`` set to different values. The test programs behave
* differently based upon their node number.
*
* This configuration option is only evaluated if #CONFIGURE_MP_APPLICATION is
* defined.
* @endparblock
*/
#define CONFIGURE_MP_NODE_NUMBER
/** @} */
/* Generated from spec:/acfg/if/group-posix */
/**
* @defgroup RTEMSApplConfigPOSIXAPIConfiguration POSIX API Configuration
*
* @ingroup RTEMSApplConfig
*
* This section describes configuration options related to the POSIX API. Most
* POSIX API objects are available by default since RTEMS 5.1. The queued
* signals and timers are only available if RTEMS was built with the
* ``--enable-posix`` build configuration option.
*
* @{
*/
/* Generated from spec:/acfg/if/max-posix-keys */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of POSIX
* API Keys that can be concurrently active.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to 65535.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It may be defined through rtems_resource_unlimited() the enable unlimited
* objects for the object class, if the value passed to
* rtems_resource_unlimited() satisfies all other constraints of the
* configuration option.
* @endparblock
*
* @par Notes
* This object class can be configured in unlimited allocation mode, see Unlimited
* Objects.
*/
#define CONFIGURE_MAXIMUM_POSIX_KEYS
/* Generated from spec:/acfg/if/max-posix-key-value-pairs */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of key
* value pairs used by POSIX API Keys that can be concurrently active.
*
* @par Default Value
* The default value is #CONFIGURE_MAXIMUM_POSIX_KEYS *
* #CONFIGURE_MAXIMUM_TASKS + #CONFIGURE_MAXIMUM_POSIX_THREADS.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to 65535.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It may be defined through rtems_resource_unlimited() the enable unlimited
* objects for the object class, if the value passed to
* rtems_resource_unlimited() satisfies all other constraints of the
* configuration option.
* @endparblock
*
* @par Notes
* @parblock
* This object class can be configured in unlimited allocation mode, see Unlimited
* Objects.
*
* A key value pair is created by pthread_setspecific() if the value is not NULL, otherwise it is
* deleted.
* @endparblock
*/
#define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS
/* Generated from spec:/acfg/if/max-posix-message-queues */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of POSIX
* API Message Queues that can be concurrently active.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to 65535.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It shall be small enough so that the RTEMS Workspace size calculation
* carried out by ```` does not overflow an integer of type
* uintptr_t.
*
* * It may be defined through rtems_resource_unlimited() the enable unlimited
* objects for the object class, if the value passed to
* rtems_resource_unlimited() satisfies all other constraints of the
* configuration option.
* @endparblock
*
* @par Notes
* This object class can be configured in unlimited allocation mode, see Unlimited
* Objects. You have to account for the memory used to store the messages
* of each message queue, see #CONFIGURE_MESSAGE_BUFFER_MEMORY.
*/
#define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES
/* Generated from spec:/acfg/if/max-posix-queued-signals */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of POSIX
* API Queued Signals that can be concurrently active.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It shall be small enough so that the RTEMS Workspace size calculation
* carried out by ```` does not overflow an integer of type
* uintptr_t.
*
* * It shall be zero if the POSIX API is not enabled (e.g. RTEMS was built
* without the ``RTEMS_POSIX_API = True`` build configuration option).
* Otherwise a compile time error in the configuration file will occur.
* @endparblock
*
* @par Notes
* @parblock
* Unlimited objects are not available for queued signals.
*
* Queued signals are only available if RTEMS was built with the
* ``--enable-posix`` build configuration option.
* @endparblock
*/
#define CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS
/* Generated from spec:/acfg/if/max-posix-semaphores */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of POSIX
* API Named Semaphores that can be concurrently active.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to 65535.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It shall be small enough so that the RTEMS Workspace size calculation
* carried out by ```` does not overflow an integer of type
* uintptr_t.
*
* * It may be defined through rtems_resource_unlimited() the enable unlimited
* objects for the object class, if the value passed to
* rtems_resource_unlimited() satisfies all other constraints of the
* configuration option.
* @endparblock
*
* @par Notes
* @parblock
* This object class can be configured in unlimited allocation mode, see Unlimited
* Objects.
*
* Named semaphores are created with sem_open(). Semaphores initialized with
* sem_init() are not affected by this configuration option since the storage
* space for these semaphores is user-provided.
* @endparblock
*/
#define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
/* Generated from spec:/acfg/if/max-posix-shms */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of POSIX
* API Shared Memory objects that can be concurrently active.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to 65535.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It shall be small enough so that the RTEMS Workspace size calculation
* carried out by ```` does not overflow an integer of type
* uintptr_t.
*
* * It may be defined through rtems_resource_unlimited() the enable unlimited
* objects for the object class, if the value passed to
* rtems_resource_unlimited() satisfies all other constraints of the
* configuration option.
* @endparblock
*
* @par Notes
* This object class can be configured in unlimited allocation mode, see Unlimited
* Objects.
*/
#define CONFIGURE_MAXIMUM_POSIX_SHMS
/* Generated from spec:/acfg/if/max-posix-threads */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of POSIX
* API Threads that can be concurrently active.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to 65535.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It shall be small enough so that the task stack space calculation carried
* out by ```` does not overflow an integer of type uintptr_t.
* @endparblock
*
* @par Notes
* @parblock
* This object class can be configured in unlimited allocation mode, see Unlimited
* Objects.
*
* This calculations for the required memory in the RTEMS Workspace for threads
* assume that each thread has a minimum stack size and has floating point
* support enabled. The configuration option #CONFIGURE_EXTRA_TASK_STACKS is
* used to specify thread stack requirements **above** the minimum size
* required.
*
* The maximum number of Classic API Tasks is specified by
* #CONFIGURE_MAXIMUM_TASKS.
*
* All POSIX threads have floating point enabled.
* @endparblock
*/
#define CONFIGURE_MAXIMUM_POSIX_THREADS
/* Generated from spec:/acfg/if/max-posix-timers */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number of POSIX
* API Timers that can be concurrently active.
*
* @par Default Value
* The default value is 0.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to 65535.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
*
* * It may be defined through rtems_resource_unlimited() the enable unlimited
* objects for the object class, if the value passed to
* rtems_resource_unlimited() satisfies all other constraints of the
* configuration option.
*
* * It shall be zero if the POSIX API is not enabled (e.g. RTEMS was built
* without the ``RTEMS_POSIX_API = True`` build configuration option).
* Otherwise a compile time error in the configuration file will occur.
* @endparblock
*
* @par Notes
* @parblock
* This object class can be configured in unlimited allocation mode, see Unlimited
* Objects.
*
* Timers are only available if RTEMS was built with the ``--enable-posix``
* build configuration option.
* @endparblock
*/
#define CONFIGURE_MAXIMUM_POSIX_TIMERS
/* Generated from spec:/acfg/if/min-posix-thread-stack-size */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the minimum stack size in
* bytes for every POSIX thread in the system.
*
* @par Default Value
* The default value is two times the value of
* #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be small enough so that the task stack space calculation carried
* out by ```` does not overflow an integer of type uintptr_t.
*
* * It shall be greater than or equal to a BSP-specific and
* application-specific minimum value.
* @endparblock
*/
#define CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
/** @} */
/* Generated from spec:/acfg/if/group-posixinit */
/**
* @defgroup RTEMSApplConfigPOSIXInitializationThreadConfiguration \
* POSIX Initialization Thread Configuration
*
* @ingroup RTEMSApplConfig
*
* This section describes configuration options related to the POSIX
* initialization thread.
*
* @{
*/
/* Generated from spec:/acfg/if/posix-init-thread-entry-point */
/**
* @brief This configuration option is an initializer define.
*
* The value of this configuration option initializes the entry point of the
* POSIX API initialization thread.
*
* @par Default Value
* The default value is ``POSIX_Init``.
*
* @par Value Constraints
* The value of this configuration option shall be defined to a valid function
* pointer of the type ``void *( *entry_point )( void * )``.
*
* @par Notes
* The application shall provide the function referenced by this configuration
* option.
*/
#define CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT
/* Generated from spec:/acfg/if/posix-init-thread-stack-size */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the thread stack size of the
* POSIX API initialization thread.
*
* @par Default Value
* The default value is #CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
*
* * It shall be small enough so that the task stack space calculation carried
* out by ```` does not overflow an integer of type uintptr_t.
* @endparblock
*/
#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
/* Generated from spec:/acfg/if/posix-init-thread-table */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then exactly one POSIX
* initialization thread is configured.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* The application shall define exactly one of the following configuration
* options
*
* * #CONFIGURE_RTEMS_INIT_TASKS_TABLE,
*
* * ``CONFIGURE_POSIX_INIT_THREAD_TABLE``, or
*
* * #CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
*
* otherwise a compile time error in the configuration file will occur.
* @endparblock
*/
#define CONFIGURE_POSIX_INIT_THREAD_TABLE
/** @} */
/* Generated from spec:/acfg/if/group-schedgeneral */
/**
* @defgroup RTEMSApplConfigGeneralSchedulerConfiguration \
* General Scheduler Configuration
*
* @ingroup RTEMSApplConfig
*
* This section describes configuration options related to selecting a
* scheduling algorithm for an application. A scheduler configuration is
* optional and only necessary in very specific circumstances. A normal
* application configuration does not need any of the configuration options
* described in this section.
*
* By default, the Deterministic
* Priority Scheduler algorithm is used in uniprocessor configurations. In
* case SMP is enabled and the configured maximum processors
* (#CONFIGURE_MAXIMUM_PROCESSORS) is greater than one, then the Earliest
* Deadline First SMP Scheduler is selected as the default scheduler
* algorithm.
*
* For the schedulers provided by RTEMS (see Scheduling
* Concepts), the configuration is straightforward. All that is required
* is to define the configuration option which specifies which scheduler you
* want for in your application.
*
* The pluggable scheduler interface also enables the user to provide their own
* scheduling algorithm. If you choose to do this, you must define multiple
* configuration option.
*
* @{
*/
/* Generated from spec:/acfg/if/cbs-max-servers */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the maximum number Constant
* Bandwidth Servers that can be concurrently active.
*
* @par Default Value
* The default value is #CONFIGURE_MAXIMUM_TASKS.
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be greater than or equal to zero.
*
* * It shall be less than or equal to SIZE_MAX.
*
* * It shall be less than or equal to a BSP-specific and application-specific
* value which depends on the size of the memory available to the
* application.
* @endparblock
*
* @par Notes
* This configuration option is only evaluated if the configuration option
* #CONFIGURE_SCHEDULER_CBS is defined.
*/
#define CONFIGURE_CBS_MAXIMUM_SERVERS
/* Generated from spec:/acfg/if/max-priority */
/**
* @brief This configuration option is an integer define.
*
* For the following schedulers
*
* * Deterministic
* Priority Scheduler, which is the default in uniprocessor
* configurations and can be configured through the
* #CONFIGURE_SCHEDULER_PRIORITY configuration option,
*
* * Deterministic
* Priority SMP Scheduler which can be configured through the
* #CONFIGURE_SCHEDULER_PRIORITY_SMP configuration option, and
*
* * Arbitrary
* Processor Affinity Priority SMP Scheduler which can be configured
* through the #CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP configuration
* option
*
* this configuration option specifies the maximum numeric priority of any task
* for these schedulers and one less that the number of priority levels for
* these schedulers. For all other schedulers provided by RTEMS, this
* configuration option has no effect.
*
* @par Default Value
* The default value is 255.
*
* @par Value Constraints
* The value of this configuration option shall be equal to 3, 7, 31, 63, 127,
* or 255.
*
* @par Notes
* @parblock
* The numerically greatest priority is the logically lowest priority in the
* system and will thus be used by the IDLE task.
*
* Priority zero is reserved for internal use by RTEMS and is not available to
* applications.
*
* Reducing the number of priorities through this configuration option reduces
* the amount of memory allocated by the schedulers listed above. These
* schedulers use a chain control structure per priority and this structure
* consists of three pointers. On a 32-bit architecture, the allocated memory
* is 12 bytes * (``CONFIGURE_MAXIMUM_PRIORITY`` + 1), e.g. 3072 bytes for 256
* priority levels (default), 48 bytes for 4 priority levels
* (``CONFIGURE_MAXIMUM_PRIORITY == 3``).
*
* The default value is 255, because RTEMS shall support 256 priority levels to
* be compliant with various standards. These priorities range from 0 to 255.
* @endparblock
*/
#define CONFIGURE_MAXIMUM_PRIORITY
/* Generated from spec:/acfg/if/scheduler-assignments */
/**
* @brief This configuration option is an initializer define.
*
* The value of this configuration option is used to initialize the initial
* scheduler to processor assignments.
*
* @par Default Value
* The default value of this configuration option is computed so that the
* default scheduler is assigned to each configured processor (up to 32).
*
* @par Value Constraints
* @parblock
* The value of this configuration option shall satisfy all of the following
* constraints:
*
* * It shall be a list of the following macros:
*
* * ``RTEMS_SCHEDULER_ASSIGN( scheduler_index, attributes )``
*
* * ``RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER``
*
* The ``scheduler_index`` macro parameter shall be a valid index of the
* scheduler table defined by the #CONFIGURE_SCHEDULER_TABLE_ENTRIES
* configuration option.
*
* The ``attributes`` macro parameter shall be set to exactly one of the
* following constants:
*
* * ``RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY``
*
* * ``RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL``
*
* * The value of the configuration option shall be a list of exactly
* #CONFIGURE_MAXIMUM_PROCESSORS elements.
* @endparblock
*
* @par Notes
* @parblock
* Where the system was built with SMP support enabled, this configuration
* option is evaluated, otherwise it is ignored.
*
* This is an advanced configuration option, see Clustered
* Scheduler Configuration.
* @endparblock
*/
#define CONFIGURE_SCHEDULER_ASSIGNMENTS
/* Generated from spec:/acfg/if/scheduler-cbs */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Constant
* Bandwidth Server Scheduling (CBS) algorithm is made available to the
* application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* This scheduler configuration option is an advanced configuration option.
* Think twice before you use it.
*
* In case no explicit Clustered
* Scheduler Configuration is present, then it is used as the scheduler for
* exactly one processor.
* @endparblock
*/
#define CONFIGURE_SCHEDULER_CBS
/* Generated from spec:/acfg/if/scheduler-edf */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Earliest
* Deadline First Scheduler algorithm is made available to the application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* This scheduler configuration option is an advanced configuration option.
* Think twice before you use it.
*
* In case no explicit Clustered
* Scheduler Configuration is present, then it is used as the scheduler for
* exactly one processor.
* @endparblock
*/
#define CONFIGURE_SCHEDULER_EDF
/* Generated from spec:/acfg/if/scheduler-edf-smp */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Earliest
* Deadline First SMP Scheduler algorithm is made available to the
* application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* This scheduler configuration option is an advanced configuration option.
* Think twice before you use it.
*
* This scheduler algorithm is only available when RTEMS is built with SMP
* support enabled.
*
* In case no explicit Clustered
* Scheduler Configuration is present, then it is used as the scheduler for
* up to 32 processors.
*
* This scheduler algorithm is the default in SMP configurations if
* #CONFIGURE_MAXIMUM_PROCESSORS is greater than one.
* @endparblock
*/
#define CONFIGURE_SCHEDULER_EDF_SMP
/* Generated from spec:/acfg/if/scheduler-name */
/**
* @brief This configuration option is an integer define.
*
* The value of this configuration option defines the name of the default
* scheduler.
*
* @par Default Value
* @parblock
* The default value is
*
* * ``"MEDF"`` for the Earliest
* Deadline First SMP Scheduler,
*
* * ``"MPA "`` for the Arbitrary
* Processor Affinity Priority SMP Scheduler,
*
* * ``"MPD "`` for the Deterministic
* Priority SMP Scheduler,
*
* * ``"MPS "`` for the Simple
* Priority SMP Scheduler,
*
* * ``"UCBS"`` for the Constant
* Bandwidth Server Scheduling (CBS),
*
* * ``"UEDF"`` for the Earliest
* Deadline First Scheduler,
*
* * ``"UPD "`` for the Deterministic
* Priority Scheduler, and
*
* * ``"UPS "`` for the Simple
* Priority Scheduler.
* @endparblock
*
* @par Value Constraints
* The value of this configuration option shall be convertible to an integer of
* type ::rtems_name.
*
* @par Notes
* @parblock
* This scheduler configuration option is an advanced configuration option.
* Think twice before you use it.
*
* Schedulers can be identified via rtems_scheduler_ident().
*
* Use rtems_build_name() to define the scheduler name.
* @endparblock
*/
#define CONFIGURE_SCHEDULER_NAME
/* Generated from spec:/acfg/if/scheduler-priority */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Deterministic
* Priority Scheduler algorithm is made available to the application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* This scheduler configuration option is an advanced configuration option.
* Think twice before you use it.
*
* In case no explicit Clustered
* Scheduler Configuration is present, then it is used as the scheduler for
* exactly one processor.
*
* This scheduler algorithm is the default when #CONFIGURE_MAXIMUM_PROCESSORS
* is exactly one.
*
* The memory allocated for this scheduler depends on the
* #CONFIGURE_MAXIMUM_PRIORITY configuration option.
* @endparblock
*/
#define CONFIGURE_SCHEDULER_PRIORITY
/* Generated from spec:/acfg/if/scheduler-priority-affinity-smp */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Arbitrary
* Processor Affinity Priority SMP Scheduler algorithm is made available to
* the application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* This scheduler configuration option is an advanced configuration option.
* Think twice before you use it.
*
* This scheduler algorithm is only available when RTEMS is built with SMP
* support enabled.
*
* In case no explicit Clustered
* Scheduler Configuration is present, then it is used as the scheduler for
* up to 32 processors.
*
* The memory allocated for this scheduler depends on the
* #CONFIGURE_MAXIMUM_PRIORITY configuration option.
* @endparblock
*/
#define CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP
/* Generated from spec:/acfg/if/scheduler-priority-smp */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Deterministic
* Priority SMP Scheduler algorithm is made available to the application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* This scheduler configuration option is an advanced configuration option.
* Think twice before you use it.
*
* This scheduler algorithm is only available when RTEMS is built with SMP
* support enabled.
*
* In case no explicit Clustered
* Scheduler Configuration is present, then it is used as the scheduler for
* up to 32 processors.
*
* The memory allocated for this scheduler depends on the
* #CONFIGURE_MAXIMUM_PRIORITY configuration option.
* @endparblock
*/
#define CONFIGURE_SCHEDULER_PRIORITY_SMP
/* Generated from spec:/acfg/if/scheduler-simple */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Simple
* Priority Scheduler algorithm is made available to the application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* This scheduler configuration option is an advanced configuration option.
* Think twice before you use it.
*
* In case no explicit Clustered
* Scheduler Configuration is present, then it is used as the scheduler for
* exactly one processor.
* @endparblock
*/
#define CONFIGURE_SCHEDULER_SIMPLE
/* Generated from spec:/acfg/if/scheduler-simple-smp */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Simple
* Priority SMP Scheduler algorithm is made available to the application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* This scheduler configuration option is an advanced configuration option.
* Think twice before you use it.
*
* This scheduler algorithm is only available when RTEMS is built with SMP
* support enabled.
*
* In case no explicit Clustered
* Scheduler Configuration is present, then it is used as the scheduler for
* up to 32 processors.
* @endparblock
*/
#define CONFIGURE_SCHEDULER_SIMPLE_SMP
/* Generated from spec:/acfg/if/scheduler-strong-apa */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the Strong APA algorithm
* is made available to the application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* This scheduler configuration option is an advanced configuration option.
* Think twice before you use it.
*
* This scheduler algorithm is only available when RTEMS is built with SMP
* support enabled.
*
* This scheduler algorithm is not correctly implemented. Do not use it.
* @endparblock
*/
#define CONFIGURE_SCHEDULER_STRONG_APA
/* Generated from spec:/acfg/if/scheduler-table-entries */
/**
* @brief This configuration option is an initializer define.
*
* The value of this configuration option is used to initialize the table of
* configured schedulers.
*
* @par Default Value
* The default value of this configuration option is the definition of exactly
* one table entry for the configured scheduler.
*
* @par Constraints
* @parblock
* The following constraints apply to this configuration option:
*
* * The value of the configuration option shall be a list of the following
* macros:
*
* * ``RTEMS_SCHEDULER_TABLE_CBS( name, obj_name )``
*
* * ``RTEMS_SCHEDULER_TABLE_EDF( name, obj_name )``
*
* * ``RTEMS_SCHEDULER_TABLE_EDF_SMP( name, obj_name )``
*
* * ``RTEMS_SCHEDULER_TABLE_PRIORITY_AFFINITY_SMP( name, obj_name )``
*
* * ``RTEMS_SCHEDULER_TABLE_PRIORITY( name, obj_name )``
*
* * ``RTEMS_SCHEDULER_TABLE_PRIORITY_SMP( name, obj_name )``
*
* * ``RTEMS_SCHEDULER_TABLE_SIMPLE( name, obj_name )``
*
* * ``RTEMS_SCHEDULER_TABLE_SIMPLE_SMP( name, obj_name )``
*
* * ``RTEMS_SCHEDULER_TABLE_STRONG_APA( name, obj_name )``
*
* The ``name`` macro parameter shall be the name associated with the
* scheduler data structures, see Clustered
* Scheduler Configuration.
*
* The ``obj_name`` macro parameter shall be the scheduler object name. It
* is recommended to define the scheduler object name through
* rtems_build_name().
*
* * Where the system was build with SMP support enabled, the table shall have
* one or more entries, otherwise it shall have exactly one entry.
* @endparblock
*
* @par Notes
* @parblock
* Schedulers registered in the scheduler table by this configuration option
* are available to the application. The scheduler table entry index defines
* the index of the scheduler.
*
* This is an advanced configuration option, see Clustered
* Scheduler Configuration.
* @endparblock
*/
#define CONFIGURE_SCHEDULER_TABLE_ENTRIES
/* Generated from spec:/acfg/if/scheduler-user */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the user shall provide a
* scheduler algorithm to the application.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* @parblock
* This scheduler configuration option is an advanced configuration option.
* Think twice before you use it.
*
* RTEMS allows the application to provide its own task/thread scheduling
* algorithm. In order to do this, one shall define
* ``CONFIGURE_SCHEDULER_USER`` to indicate the application provides its own
* scheduling algorithm. If ``CONFIGURE_SCHEDULER_USER`` is defined then the
* following additional macros shall be defined:
*
* * ``CONFIGURE_SCHEDULER`` shall be defined to a static definition of the
* scheduler data structures of the user scheduler.
*
* * ``CONFIGURE_SCHEDULER_TABLE_ENTRIES`` shall be defined to a scheduler
* table entry initializer for the user scheduler.
*
* * ``CONFIGURE_SCHEDULER_USER_PER_THREAD`` shall be defined to the type of
* the per-thread information of the user scheduler.
*
* At this time, the mechanics and requirements for writing a new scheduler are
* evolving and not fully documented. It is recommended that you look at the
* existing Deterministic Priority Scheduler in
* ``cpukit/score/src/schedulerpriority*.c`` for guidance. For guidance on the
* configuration macros, please examine ``cpukit/sapi/include/confdefs.h`` for
* how these are defined for the Deterministic Priority Scheduler.
* @endparblock
*/
#define CONFIGURE_SCHEDULER_USER
/** @} */
/* Generated from spec:/acfg/if/group-stackalloc */
/**
* @defgroup RTEMSApplConfigTaskStackAllocatorConfiguration \
* Task Stack Allocator Configuration
*
* @ingroup RTEMSApplConfig
*
* This section describes configuration options related to the task stack
* allocator. RTEMS allows the application or BSP to define its own allocation
* and deallocation methods for task stacks. This can be used to place task
* stacks in special areas of memory or to utilize a Memory Management Unit so
* that stack overflows are detected in hardware.
*
* @{
*/
/* Generated from spec:/acfg/if/task-stack-allocator */
/**
* @brief This configuration option is an initializer define.
*
* The value of this configuration option initializes the stack allocator
* allocate handler.
*
* @par Default Value
* The default value is ``_Workspace_Allocate``, which indicates that task
* stacks will be allocated from the RTEMS Workspace.
*
* @par Value Constraints
* The value of this configuration option shall be defined to a valid function
* pointer of the type ``void *( *allocate )( size_t )``.
*
* @par Notes
* @parblock
* A correctly configured system shall configure the following to be
* consistent:
*
* * #CONFIGURE_TASK_STACK_ALLOCATOR_INIT
*
* * ``CONFIGURE_TASK_STACK_ALLOCATOR``
*
* * #CONFIGURE_TASK_STACK_DEALLOCATOR
* @endparblock
*/
#define CONFIGURE_TASK_STACK_ALLOCATOR
/* Generated from spec:/acfg/if/task-stack-no-workspace */
/**
* @brief This configuration option is a boolean feature define.
*
* In case this configuration option is defined, then the system is informed
* that the task stack allocator does not use the RTEMS Workspace.
*
* @par Default Configuration
* If this configuration option is undefined, then the described feature is not
* enabled.
*
* @par Notes
* This configuration option may be used if a custom task stack allocator is
* configured, see #CONFIGURE_TASK_STACK_ALLOCATOR.
*/
#define CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE
/* Generated from spec:/acfg/if/task-stack-allocator-for-idle */
/**
* @brief This configuration option is an initializer define.
*
* The value of this configuration option is the address for the stack
* allocator allocate handler used to allocate the task stack of each IDLE
* task.
*
* @par Default Value
* The default value is ``_Stack_Allocator_allocate_for_idle_default``, which
* indicates that IDLE task stacks will be allocated from an area statically
* allocated by ````.
*
* @par Value Constraints
* The value of this configuration option shall be defined to a valid function
* pointer of the type ``void *( *allocate )( uint32_t, size_t )``.
*
* @par Notes
* This configuration option is independent of the other thread stack allocator
* configuration options. It is assumed that any memory allocated for the
* stack of an IDLE task will not be from the RTEMS Workspace or the memory
* statically allocated by default.
*/
#define CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE
/* Generated from spec:/acfg/if/task-stack-allocator-init */
/**
* @brief This configuration option is an initializer define.
*
* The value of this configuration option initializes the stack allocator
* initialization handler.
*
* @par Default Value
* The default value is NULL.
*
* @par Value Constraints
* The value of this configuration option shall be defined to a valid function
* pointer of the type ``void ( *initialize )( size_t )`` or to NULL.
*
* @par Notes
* @parblock
* A correctly configured system shall configure the following to be
* consistent:
*
* * ``CONFIGURE_TASK_STACK_ALLOCATOR_INIT``
*
* * #CONFIGURE_TASK_STACK_ALLOCATOR
*
* * #CONFIGURE_TASK_STACK_DEALLOCATOR
* @endparblock
*/
#define CONFIGURE_TASK_STACK_ALLOCATOR_INIT
/* Generated from spec:/acfg/if/task-stack-deallocator */
/**
* @brief This configuration option is an initializer define.
*
* The value of this configuration option initializes the stack allocator
* deallocate handler.
*
* @par Default Value
* The default value is ``_Workspace_Free``, which indicates that task stacks
* will be allocated from the RTEMS Workspace.
*
* @par Value Constraints
* The value of this configuration option shall be defined to a valid function
* pointer of the type ``void ( *deallocate )( void * )``.
*
* @par Notes
* @parblock
* A correctly configured system shall configure the following to be
* consistent:
*
* * #CONFIGURE_TASK_STACK_ALLOCATOR_INIT
*
* * #CONFIGURE_TASK_STACK_ALLOCATOR
*
* * ``CONFIGURE_TASK_STACK_DEALLOCATOR``
* @endparblock
*/
#define CONFIGURE_TASK_STACK_DEALLOCATOR
/* Generated from spec:/acfg/if/task-stack-from-alloc */
/**
* @brief This configuration option is an initializer define.
*
* The value of this configuration option is used to calculate the task stack
* space size.
*
* @par Default Value
* The default value is a macro which supports the system heap allocator.
*
* @par Value Constraints
* The value of this configuration option shall be defined to a macro which
* accepts exactly one parameter and returns an unsigned integer. The
* parameter will be an allocation size and the macro shall return this size
* plus the overhead of the allocator to manage an allocation request for this
* size.
*
* @par Notes
* This configuration option may be used if a custom task stack allocator is
* configured, see #CONFIGURE_TASK_STACK_ALLOCATOR.
*/
#define CONFIGURE_TASK_STACK_FROM_ALLOCATOR
/** @} */