c-user: Use new template for integer config opts

Try to bring all descriptions up to date.  Add cross-references to
several options.  Clarify configuration value constraints.

Use this template also for initializer type options.

Close #3901.
This commit is contained in:
Sebastian Huber 2020-03-27 12:53:09 +01:00
parent e26f87497e
commit 7bad8940ad
14 changed files with 1210 additions and 755 deletions

View File

@ -1,5 +1,6 @@
.. SPDX-License-Identifier: CC-BY-SA-4.0 .. SPDX-License-Identifier: CC-BY-SA-4.0
.. Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) .. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
Block Device Cache Configuration Block Device Cache Configuration
@ -44,17 +45,23 @@ CONFIGURE_BDBUF_BUFFER_MAX_SIZE
CONSTANT: CONSTANT:
``CONFIGURE_BDBUF_BUFFER_MAX_SIZE`` ``CONFIGURE_BDBUF_BUFFER_MAX_SIZE``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
It must be positive and an integral multiple of the buffer minimum size.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 4096 bytes. The default value is 4096.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* It shall be an integral multiple of :ref:`CONFIGURE_BDBUF_BUFFER_MIN_SIZE`.
DESCRIPTION: DESCRIPTION:
Defines the maximum size of a buffer in bytes. The value of this configuration option defines the maximum size of a buffer
in bytes.
NOTES: NOTES:
None. None.
@ -69,17 +76,19 @@ CONFIGURE_BDBUF_BUFFER_MIN_SIZE
CONSTANT: CONSTANT:
``CONFIGURE_BDBUF_BUFFER_MIN_SIZE`` ``CONFIGURE_BDBUF_BUFFER_MIN_SIZE``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 512 bytes. The default value is 512.
VALUE CONSTRAINTS:
The value of this configuration option shall be greater than or equal to 0
and less than or equal to ``UINT32_MAX``.
DESCRIPTION: DESCRIPTION:
Defines the minimum size of a buffer in bytes. The value of this configuration option defines the minimum size of a buffer
in bytes.
NOTES: NOTES:
None. None.
@ -94,17 +103,19 @@ CONFIGURE_BDBUF_CACHE_MEMORY_SIZE
CONSTANT: CONSTANT:
``CONFIGURE_BDBUF_CACHE_MEMORY_SIZE`` ``CONFIGURE_BDBUF_CACHE_MEMORY_SIZE``
DATA TYPE: OPTION TYPE:
Unsigned integer (``size_t``). This configuration option is an integer define.
RANGE:
Positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 32768 bytes. The default value is 32768.
VALUE CONSTRAINTS:
The value of this configuration option shall be greater than or equal to 0
and less than or equal to ``SIZE_MAX``.
DESCRIPTION: DESCRIPTION:
Size of the cache memory in bytes. The value of this configuration option defines the size of the cache memory
in bytes.
NOTES: NOTES:
None. None.
@ -119,17 +130,19 @@ CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS
CONSTANT: CONSTANT:
``CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS`` ``CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall be greater than or equal to 0
and less than or equal to ``UINT32_MAX``.
DESCRIPTION: DESCRIPTION:
Defines the maximum blocks per read-ahead request. The value of this configuration option defines the maximum blocks per
read-ahead request.
NOTES: NOTES:
A value of 0 disables the read-ahead task (default). The read-ahead task A value of 0 disables the read-ahead task (default). The read-ahead task
@ -146,17 +159,19 @@ CONFIGURE_BDBUF_MAX_WRITE_BLOCKS
CONSTANT: CONSTANT:
``CONFIGURE_BDBUF_MAX_WRITE_BLOCKS`` ``CONFIGURE_BDBUF_MAX_WRITE_BLOCKS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 16. The default value is 16.
VALUE CONSTRAINTS:
The value of this configuration option shall be greater than or equal to 0
and less than or equal to ``UINT32_MAX``.
DESCRIPTION: DESCRIPTION:
Defines the maximum blocks per write request. The value of this configuration option defines the maximum blocks per write
request.
NOTES: NOTES:
None. None.
@ -171,17 +186,18 @@ CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY
CONSTANT: CONSTANT:
``CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY`` ``CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY``
DATA TYPE: OPTION TYPE:
Task priority (``rtems_task_priority``). This configuration option is an integer define.
RANGE:
Valid task priority.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 15. The default value is 15.
VALUE CONSTRAINTS:
The value of this configuration option shall be a valid Classic API task
priority. The set of valid task priorities is scheduler-specific.
DESCRIPTION: DESCRIPTION:
Defines the read-ahead task priority. The value of this configuration option defines the read-ahead task priority.
NOTES: NOTES:
None. None.
@ -196,17 +212,29 @@ CONFIGURE_BDBUF_TASK_STACK_SIZE
CONSTANT: CONSTANT:
``CONFIGURE_BDBUF_TASK_STACK_SIZE`` ``CONFIGURE_BDBUF_TASK_STACK_SIZE``
DATA TYPE: OPTION TYPE:
Unsigned integer (``size_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is RTEMS_MINIMUM_STACK_SIZE. The default value is ``RTEMS_MINIMUM_STACK_SIZE``.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to :ref:`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 ``<rtems/confdefs.h>`` does not
overflow an integer of type ``uintptr_t``.
DESCRIPTION: DESCRIPTION:
Defines the task stack size of the Block Device Cache tasks in bytes. The value of this configuration option defines the task stack size of the
Block Device Cache tasks in bytes.
NOTES: NOTES:
None. None.
@ -221,17 +249,19 @@ CONFIGURE_SWAPOUT_BLOCK_HOLD
CONSTANT: CONSTANT:
``CONFIGURE_SWAPOUT_BLOCK_HOLD`` ``CONFIGURE_SWAPOUT_BLOCK_HOLD``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 1000 milliseconds. The default value is 1000.
VALUE CONSTRAINTS:
The value of this configuration option shall be greater than or equal to 0
and less than or equal to ``UINT32_MAX``.
DESCRIPTION: DESCRIPTION:
Defines the swapout task maximum block hold time in milliseconds. The value of this configuration option defines the swapout task maximum block
hold time in milliseconds.
NOTES: NOTES:
None. None.
@ -246,17 +276,19 @@ CONFIGURE_SWAPOUT_SWAP_PERIOD
CONSTANT: CONSTANT:
``CONFIGURE_SWAPOUT_SWAP_PERIOD`` ``CONFIGURE_SWAPOUT_SWAP_PERIOD``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 250 milliseconds. The default value is 250.
VALUE CONSTRAINTS:
The value of this configuration option shall be greater than or equal to 0
and less than or equal to ``UINT32_MAX``.
DESCRIPTION: DESCRIPTION:
Defines the swapout task swap period in milliseconds. The value of this configuration option defines the swapout task swap period
in milliseconds.
NOTES: NOTES:
None. None.
@ -271,17 +303,18 @@ CONFIGURE_SWAPOUT_TASK_PRIORITY
CONSTANT: CONSTANT:
``CONFIGURE_SWAPOUT_TASK_PRIORITY`` ``CONFIGURE_SWAPOUT_TASK_PRIORITY``
DATA TYPE: OPTION TYPE:
Task priority (``rtems_task_priority``). This configuration option is an integer define.
RANGE:
Valid task priority.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 15. The default value is 15.
VALUE CONSTRAINTS:
The value of this configuration option shall be a valid Classic API task
priority. The set of valid task priorities is scheduler-specific.
DESCRIPTION: DESCRIPTION:
Defines the swapout task priority. The value of this configuration option defines the swapout task priority.
NOTES: NOTES:
None. None.
@ -296,17 +329,19 @@ CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY
CONSTANT: CONSTANT:
``CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY`` ``CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY``
DATA TYPE: OPTION TYPE:
Task priority (``rtems_task_priority``). This configuration option is an integer define.
RANGE:
Valid task priority.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 15. The default value is 15.
VALUE CONSTRAINTS:
The value of this configuration option shall be a valid Classic API task
priority. The set of valid task priorities is scheduler-specific.
DESCRIPTION: DESCRIPTION:
Defines the swapout worker task priority. The value of this configuration option defines the swapout worker task
priority.
NOTES: NOTES:
None. None.
@ -321,17 +356,18 @@ CONFIGURE_SWAPOUT_WORKER_TASKS
CONSTANT: CONSTANT:
``CONFIGURE_SWAPOUT_WORKER_TASKS`` ``CONFIGURE_SWAPOUT_WORKER_TASKS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``size_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall be greater than or equal to 0
and less than or equal to ``UINT32_MAX``.
DESCRIPTION: DESCRIPTION:
Defines the swapout worker task count. The value of this configuration option defines the swapout worker task count.
NOTES: NOTES:
None. None.

View File

@ -1,5 +1,6 @@
.. SPDX-License-Identifier: CC-BY-SA-4.0 .. SPDX-License-Identifier: CC-BY-SA-4.0
.. Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) .. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
BSP Related Configuration Options BSP Related Configuration Options
@ -20,24 +21,30 @@ BSP_IDLE_TASK_BODY
CONSTANT: CONSTANT:
``BSP_IDLE_TASK_BODY`` ``BSP_IDLE_TASK_BODY``
DATA TYPE: OPTION TYPE:
Function pointer. This configuration option is an initializer define.
RANGE:
Undefined or valid function pointer.
DEFAULT VALUE: DEFAULT VALUE:
This option is BSP specific. The default value is BSP-specific.
VALUE CONSTRAINTS:
The value of this configuration option shall be defined to a valid function
pointer of the type ``void *( *idle_body )( uintptr_t )``.
DESCRIPTION: DESCRIPTION:
If ``BSP_IDLE_TASK_BODY`` is defined by the BSP and If
``CONFIGURE_IDLE_TASK_BODY`` is not defined by the application, then this
BSP specific idle task body will be used. * this configuration option is defined by the BSP
* and :ref:`CONFIGURE_DISABLE_BSP_SETTINGS` is undefined,
then the value of this configuration option defines the default value of
:ref:`CONFIGURE_IDLE_TASK_BODY`.
NOTES: NOTES:
As it has knowledge of the specific CPU model, system controller logic, and 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 peripheral buses, a BSP-specific IDLE task may be capable of turning
components off to save power during extended periods of no task activity components off to save power during extended periods of no task activity.
.. index:: BSP_IDLE_TASK_STACK_SIZE .. index:: BSP_IDLE_TASK_STACK_SIZE
@ -49,30 +56,35 @@ BSP_IDLE_TASK_STACK_SIZE
CONSTANT: CONSTANT:
``BSP_IDLE_TASK_STACK_SIZE`` ``BSP_IDLE_TASK_STACK_SIZE``
DATA TYPE: OPTION TYPE:
Unsigned integer (``size_t``). This configuration option is an integer define.
RANGE:
Undefined or positive.
DEFAULT VALUE: DEFAULT VALUE:
This option is BSP specific. The default value is BSP-specific.
VALUE CONSTRAINTS:
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 ``<rtems/confdefs.h>`` does not
overflow an integer of type ``size_t``.
DESCRIPTION: DESCRIPTION:
If ``BSP_IDLE_TASK_STACK_SIZE`` is defined by the BSP and If
``CONFIGURE_IDLE_TASK_STACK_SIZE`` is not defined by the application, then
this BSP suggested idle task stack size will be used. * this configuration option is defined by the BSP
* and :ref:`CONFIGURE_DISABLE_BSP_SETTINGS` is undefined,
then the value of this configuration option defines the default value of
:ref:`CONFIGURE_IDLE_TASK_SIZE`.
NOTES: NOTES:
The order of precedence for configuring the IDLE task stack size is: None.
- RTEMS default minimum stack size.
- If defined, then ``CONFIGURE_MINIMUM_TASK_STACK_SIZE``.
- If defined, then the BSP specific ``BSP_IDLE_TASK_SIZE``.
- If defined, then the application specified ``CONFIGURE_IDLE_TASK_SIZE``.
.. index:: BSP_INITIAL_EXTENSION .. index:: BSP_INITIAL_EXTENSION
@ -84,22 +96,29 @@ BSP_INITIAL_EXTENSION
CONSTANT: CONSTANT:
``BSP_INITIAL_EXTENSION`` ``BSP_INITIAL_EXTENSION``
DATA TYPE: OPTION TYPE:
List of user extension initializers (``rtems_extensions_table``). This configuration option is an initializer define.
RANGE:
Undefined or a list of user extension initializers.
DEFAULT VALUE: DEFAULT VALUE:
This option is BSP specific. The default value is BSP-specific.
VALUE CONSTRAINTS:
The value of this configuration option shall be a list of initializers for
structures of type :c:type:`rtems_extensions_table`.
DESCRIPTION: DESCRIPTION:
If ``BSP_INITIAL_EXTENSION`` is defined by the BSP, then this BSP specific If
initial extension will be placed as the last entry in the initial extension
table. * this configuration option is defined by the BSP
* and :ref:`CONFIGURE_DISABLE_BSP_SETTINGS` is undefined,
then the value of this configuration option is used to initialize the table
of initial user extensions.
NOTES: NOTES:
None. The value of this configuration option is placed after the entries of all
other initial user extensions.
.. index:: BSP_INTERRUPT_STACK_SIZE .. index:: BSP_INTERRUPT_STACK_SIZE
@ -111,53 +130,39 @@ BSP_INTERRUPT_STACK_SIZE
CONSTANT: CONSTANT:
``BSP_INTERRUPT_STACK_SIZE`` ``BSP_INTERRUPT_STACK_SIZE``
DATA TYPE: OPTION TYPE:
Unsigned integer (``size_t``). This configuration option is an integer define.
RANGE:
Undefined or positive.
DEFAULT VALUE: DEFAULT VALUE:
This option is BSP specific. The default value is BSP-specific.
VALUE CONSTRAINTS:
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 ``<rtems/confdefs.h>`` does
not overflow an integer of type ``size_t``.
* It shall be aligned according to
``CPU_INTERRUPT_STACK_ALIGNMENT``.
DESCRIPTION: DESCRIPTION:
If ``BSP_INTERRUPT_STACK_SIZE`` is defined by the BSP and If
``CONFIGURE_INTERRUPT_STACK_SIZE`` is not defined by the application, then
this BSP specific interrupt stack size will be used. * this configuration option is defined by the BSP
* and :ref:`CONFIGURE_DISABLE_BSP_SETTINGS` is undefined,
then the value of this configuration option defines the default value of
:ref:`CONFIGURE_INTERRUPT_STACK_SIZE`.
NOTES: NOTES:
None. None.
.. index:: BSP_MAXIMUM_DEVICES
.. _BSP_MAXIMUM_DEVICES:
BSP_MAXIMUM_DEVICES
-------------------
CONSTANT:
``BSP_MAXIMUM_DEVICES``
DATA TYPE:
Unsigned integer (``size_t``).
RANGE:
Undefined or positive.
DEFAULT VALUE:
This option is BSP specific.
DESCRIPTION:
If ``BSP_MAXIMUM_DEVICES`` is defined by the BSP and
``CONFIGURE_MAXIMUM_DEVICES`` is not defined by the application, then this
BSP specific maximum device count will be used.
NOTES:
This option is specific to the device file system (devFS) and should not be
confused with the ``CONFIGURE_MAXIMUM_DRIVERS`` option. This parameter
only impacts the devFS and thus is only used by ``<rtems/confdefs.h>`` when
``CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM`` is specified.
.. index:: CONFIGURE_BSP_PREREQUISITE_DRIVERS .. index:: CONFIGURE_BSP_PREREQUISITE_DRIVERS
.. _CONFIGURE_BSP_PREREQUISITE_DRIVERS: .. _CONFIGURE_BSP_PREREQUISITE_DRIVERS:
@ -168,26 +173,30 @@ CONFIGURE_BSP_PREREQUISITE_DRIVERS
CONSTANT: CONSTANT:
``CONFIGURE_BSP_PREREQUISITE_DRIVERS`` ``CONFIGURE_BSP_PREREQUISITE_DRIVERS``
DATA TYPE: OPTION TYPE:
List of device driver initializers (``rtems_driver_address_table``). This configuration option is an initializer define.
RANGE:
Undefined or array of device drivers.
DEFAULT VALUE: DEFAULT VALUE:
This option is BSP specific. The default value is BSP-specific.
VALUE CONSTRAINTS:
The value of this configuration option shall be a list of initializers for
structures of type :c:type:`rtems_extensions_table`.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_BSP_PREREQUISITE_DRIVERS`` is defined if the BSP has device If
drivers it needs to include in the Device Driver Table. This should be
defined to the set of device driver entries that will be placed in the * this configuration option is defined by the BSP
table at the *FRONT* of the Device Driver Table and initialized before any
other drivers *INCLUDING* any application prerequisite drivers. * and :ref:`CONFIGURE_DISABLE_BSP_SETTINGS` is undefined,
then the value of this configuration option is used to initialize the table
of initial user extensions.
NOTES: NOTES:
``CONFIGURE_BSP_PREREQUISITE_DRIVERS`` is typically used by BSPs to The value of this configuration option is placed before the entries of all
configure common infrastructure such as bus controllers or probe for other initial user extensions (including
devices. :ref:`CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS`).
.. index:: CONFIGURE_DISABLE_BSP_SETTINGS .. index:: CONFIGURE_DISABLE_BSP_SETTINGS

View File

@ -1,5 +1,6 @@
.. SPDX-License-Identifier: CC-BY-SA-4.0 .. SPDX-License-Identifier: CC-BY-SA-4.0
.. Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) .. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
Classic API Configuration Classic API Configuration
@ -17,21 +18,36 @@ CONFIGURE_MAXIMUM_BARRIERS
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_BARRIERS`` ``CONFIGURE_MAXIMUM_BARRIERS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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
:c:func:`rtems_resource_unlimited` the enable unlimited objects for this
object class, if the value passed to :c:func:`rtems_resource_unlimited`
satisfies all other constraints of this configuration option.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_BARRIERS`` is the maximum number of Classic API The value of this configuration option defines the maximum number of Classic
Barriers that can be concurrently active. API Barriers that can be concurrently active.
NOTES: NOTES:
This object class can be configured in unlimited allocation mode. This object class can be configured in unlimited allocation mode, see
:ref:`ConfigUnlimitedObjects`.
.. index:: CONFIGURE_MAXIMUM_MESSAGE_QUEUES .. index:: CONFIGURE_MAXIMUM_MESSAGE_QUEUES
@ -43,23 +59,38 @@ CONFIGURE_MAXIMUM_MESSAGE_QUEUES
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_MESSAGE_QUEUES`` ``CONFIGURE_MAXIMUM_MESSAGE_QUEUES``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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
:c:func:`rtems_resource_unlimited` the enable unlimited objects for this
object class, if the value passed to :c:func:`rtems_resource_unlimited`
satisfies all other constraints of this configuration option.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_MESSAGE_QUEUES`` is the maximum number of Classic API The value of this configuration option defines the maximum number of Classic
Message Queues that can be concurrently active. API Message Queues that can be concurrently active.
NOTES: NOTES:
This object class can be configured in unlimited allocation mode. You have This object class can be configured in unlimited allocation mode, see
to account for the memory used to store the messages of each message queue, :ref:`ConfigUnlimitedObjects`. You have to account for the memory used to
see :ref:`CONFIGURE_MESSAGE_BUFFER_MEMORY`. store the messages of each message queue, see
:ref:`CONFIGURE_MESSAGE_BUFFER_MEMORY`.
.. index:: CONFIGURE_MAXIMUM_PARTITIONS .. index:: CONFIGURE_MAXIMUM_PARTITIONS
@ -71,21 +102,36 @@ CONFIGURE_MAXIMUM_PARTITIONS
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_PARTITIONS`` ``CONFIGURE_MAXIMUM_PARTITIONS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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
:c:func:`rtems_resource_unlimited` the enable unlimited objects for this
object class, if the value passed to :c:func:`rtems_resource_unlimited`
satisfies all other constraints of this configuration option.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_PARTITIONS`` is the maximum number of Classic API The value of this configuration option defines the maximum number of Classic
Partitions that can be concurrently active. API Partitions that can be concurrently active.
NOTES: NOTES:
This object class can be configured in unlimited allocation mode. This object class can be configured in unlimited allocation mode, see
:ref:`ConfigUnlimitedObjects`.
.. index:: CONFIGURE_MAXIMUM_PERIODS .. index:: CONFIGURE_MAXIMUM_PERIODS
@ -97,21 +143,36 @@ CONFIGURE_MAXIMUM_PERIODS
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_PERIODS`` ``CONFIGURE_MAXIMUM_PERIODS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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
:c:func:`rtems_resource_unlimited` the enable unlimited objects for this
object class, if the value passed to :c:func:`rtems_resource_unlimited`
satisfies all other constraints of this configuration option.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_PERIODS`` is the maximum number of Classic API Periods The value of this configuration option defines the maximum number of Classic
that can be concurrently active. API Periods that can be concurrently active.
NOTES: NOTES:
This object class can be configured in unlimited allocation mode. This object class can be configured in unlimited allocation mode, see
:ref:`ConfigUnlimitedObjects`.
.. index:: CONFIGURE_MAXIMUM_PORTS .. index:: CONFIGURE_MAXIMUM_PORTS
@ -123,21 +184,36 @@ CONFIGURE_MAXIMUM_PORTS
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_PORTS`` ``CONFIGURE_MAXIMUM_PORTS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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
:c:func:`rtems_resource_unlimited` the enable unlimited objects for this
object class, if the value passed to :c:func:`rtems_resource_unlimited`
satisfies all other constraints of this configuration option.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_PORTS`` is the maximum number of Classic API Ports that The value of this configuration option defines the maximum number of Classic
can be concurrently active. API Ports that can be concurrently active.
NOTES: NOTES:
This object class can be configured in unlimited allocation mode. This object class can be configured in unlimited allocation mode, see
:ref:`ConfigUnlimitedObjects`.
.. index:: CONFIGURE_MAXIMUM_REGIONS .. index:: CONFIGURE_MAXIMUM_REGIONS
@ -149,21 +225,36 @@ CONFIGURE_MAXIMUM_REGIONS
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_REGIONS`` ``CONFIGURE_MAXIMUM_REGIONS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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
:c:func:`rtems_resource_unlimited` the enable unlimited objects for this
object class, if the value passed to :c:func:`rtems_resource_unlimited`
satisfies all other constraints of this configuration option.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_REGIONS`` is the maximum number of Classic API Regions The value of this configuration option defines the maximum number of Classic
that can be concurrently active. API Regions that can be concurrently active.
NOTES: NOTES:
None. This object class can be configured in unlimited allocation mode, see
:ref:`ConfigUnlimitedObjects`.
.. index:: CONFIGURE_MAXIMUM_SEMAPHORES .. index:: CONFIGURE_MAXIMUM_SEMAPHORES
@ -175,21 +266,36 @@ CONFIGURE_MAXIMUM_SEMAPHORES
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_SEMAPHORES`` ``CONFIGURE_MAXIMUM_SEMAPHORES``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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
:c:func:`rtems_resource_unlimited` the enable unlimited objects for this
object class, if the value passed to :c:func:`rtems_resource_unlimited`
satisfies all other constraints of this configuration option.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_SEMAPHORES`` is the maximum number of Classic API The value of this configuration option defines the maximum number of Classic
Semaphores that can be concurrently active. API Semaphore that can be concurrently active.
NOTES: NOTES:
This object class can be configured in unlimited allocation mode. This object class can be configured in unlimited allocation mode, see
:ref:`ConfigUnlimitedObjects`.
In SMP configurations, the size of a Semaphore Control Block depends on the In SMP configurations, the size of a Semaphore Control Block depends on the
scheduler count (see :ref:`ConfigurationSchedulerTable`). The semaphores scheduler count (see :ref:`ConfigurationSchedulerTable`). The semaphores
@ -205,21 +311,40 @@ CONFIGURE_MAXIMUM_TASKS
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_TASKS`` ``CONFIGURE_MAXIMUM_TASKS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is ``0``. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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 ``<rtems/confdefs.h>`` does not
overflow an integer of type ``uintptr_t``.
* It may be defined through
:c:func:`rtems_resource_unlimited` the enable unlimited objects for this
object class, if the value passed to :c:func:`rtems_resource_unlimited`
satisfies all other constraints of this configuration option.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_TASKS`` is the maximum number of Classic API Tasks that The value of this configuration option defines the maximum number of Classic
can be concurrently active. API Tasks that can be concurrently active.
NOTES: NOTES:
This object class can be configured in unlimited allocation mode. This object class can be configured in unlimited allocation mode, see
:ref:`ConfigUnlimitedObjects`.
The calculations for the required memory in the RTEMS Workspace for tasks 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 assume that each task has a minimum stack size and has floating point
@ -230,7 +355,7 @@ NOTES:
``CONFIGURE_EXTRA_TASK_STACKS``. ``CONFIGURE_EXTRA_TASK_STACKS``.
The maximum number of POSIX threads is specified by The maximum number of POSIX threads is specified by
:ref:`CONFIGURE_MAXIMUM_POSIX_THREADS <CONFIGURE_MAXIMUM_POSIX_THREADS>`. :ref:`CONFIGURE_MAXIMUM_POSIX_THREADS`.
A future enhancement to ``<rtems/confdefs.h>`` could be to eliminate the A future enhancement to ``<rtems/confdefs.h>`` could be to eliminate the
assumption that all tasks have floating point enabled. This would require assumption that all tasks have floating point enabled. This would require
@ -247,21 +372,36 @@ CONFIGURE_MAXIMUM_TIMERS
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_TIMERS`` ``CONFIGURE_MAXIMUM_TIMERS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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
:c:func:`rtems_resource_unlimited` the enable unlimited objects for this
object class, if the value passed to :c:func:`rtems_resource_unlimited`
satisfies all other constraints of this configuration option.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_TIMERS`` is the maximum number of Classic API Timers The value of this configuration option defines the maximum number of Classic
that can be concurrently active. API Timers that can be concurrently active.
NOTES: NOTES:
This object class can be configured in unlimited allocation mode. This object class can be configured in unlimited allocation mode, see
:ref:`ConfigUnlimitedObjects`.
.. index:: CONFIGURE_MAXIMUM_USER_EXTENSIONS .. index:: CONFIGURE_MAXIMUM_USER_EXTENSIONS
@ -273,18 +413,27 @@ CONFIGURE_MAXIMUM_USER_EXTENSIONS
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_USER_EXTENSIONS`` ``CONFIGURE_MAXIMUM_USER_EXTENSIONS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_USER_EXTENSIONS`` is the maximum number of Classic API The value of this configuration option defines the maximum number of Classic
User Extensions that can be concurrently active. API User Extensions that can be concurrently active.
NOTES: NOTES:
This object class can be configured in unlimited allocation mode. This object class cannot be configured in unlimited allocation mode.

View File

@ -1,5 +1,6 @@
.. SPDX-License-Identifier: CC-BY-SA-4.0 .. SPDX-License-Identifier: CC-BY-SA-4.0
.. Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) .. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
Classic API Initialization Task Configuration Classic API Initialization Task Configuration
@ -18,18 +19,19 @@ CONFIGURE_INIT_TASK_ARGUMENTS
CONSTANT: CONSTANT:
``CONFIGURE_INIT_TASK_ARGUMENTS`` ``CONFIGURE_INIT_TASK_ARGUMENTS``
DATA TYPE: OPTION TYPE:
RTEMS Task Argument (``rtems_task_argument``). This configuration option is an integer define.
RANGE:
Complete range of the type.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall be a valid integer of type
``rtems_task_argument``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_INIT_TASK_ARGUMENTS`` is the task argument of the single The value of this configuration option defines task argument of the Classic
initialization task defined by the Classic API Initialization Tasks Table. API initialization task.
NOTES: NOTES:
None. None.
@ -44,18 +46,18 @@ CONFIGURE_INIT_TASK_ATTRIBUTES
CONSTANT: CONSTANT:
``CONFIGURE_INIT_TASK_ATTRIBUTES`` ``CONFIGURE_INIT_TASK_ATTRIBUTES``
DATA TYPE: OPTION TYPE:
RTEMS Attributes (``rtems_attribute``). This configuration option is an integer define.
RANGE:
Valid task attribute sets.
DEFAULT VALUE: DEFAULT VALUE:
The default value is ``RTEMS_DEFAULT_ATTRIBUTES``. The default value is ``RTEMS_DEFAULT_ATTRIBUTES``.
VALUE CONSTRAINTS:
The value of this configuration option shall be a valid task attribute set.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_INIT_TASK_ATTRIBUTES`` is the task attributes of the single The value of this configuration option defines the task attributes of the
initialization task defined by the Classic API Initialization Tasks Table. Classic API initialization task.
NOTES: NOTES:
None. None.
@ -70,23 +72,23 @@ CONFIGURE_INIT_TASK_ENTRY_POINT
CONSTANT: CONSTANT:
``CONFIGURE_INIT_TASK_ENTRY_POINT`` ``CONFIGURE_INIT_TASK_ENTRY_POINT``
DATA TYPE: OPTION TYPE:
Task entry function pointer (``rtems_task_entry``). This configuration option is an initializer define.
RANGE:
Valid task entry function pointer.
DEFAULT VALUE: DEFAULT VALUE:
The default value is ``Init``. The default value is ``Init``.
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 )``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_INIT_TASK_ENTRY_POINT`` is the entry point (a.k.a. function The value of this configuration option initializes the entry point of the
name) of the single initialization task defined by the Classic API Classic API initialization task.
Initialization Tasks Table.
NOTES: NOTES:
The user must implement the function ``Init`` or the function name provided The application shall provide the function referenced by this configuration
in this configuration parameter. option.
.. index:: CONFIGURE_INIT_TASK_INITIAL_MODES .. index:: CONFIGURE_INIT_TASK_INITIAL_MODES
@ -98,19 +100,19 @@ CONFIGURE_INIT_TASK_INITIAL_MODES
CONSTANT: CONSTANT:
``CONFIGURE_INIT_TASK_INITIAL_MODES`` ``CONFIGURE_INIT_TASK_INITIAL_MODES``
DATA TYPE: OPTION TYPE:
RTEMS Mode (``rtems_mode``). This configuration option is an integer define.
RANGE:
Valid task mode sets.
DEFAULT VALUE: DEFAULT VALUE:
The default value is ``RTEMS_NO_PREEMPT``. In SMP configurations, the default value is ``RTEMS_DEFAULT_MODES``,
otherwise the default value is ``RTEMS_NO_PREEMPT``.
VALUE CONSTRAINTS:
The value of this configuration option shall be a valid task mode set.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_INIT_TASK_INITIAL_MODES`` is the initial execution mode of the The value of this configuration option defines the initial execution mode of
single initialization task defined by the Classic API Initialization Tasks the Classic API initialization task.
Table.
NOTES: NOTES:
None. None.
@ -125,21 +127,22 @@ CONFIGURE_INIT_TASK_NAME
CONSTANT: CONSTANT:
``CONFIGURE_INIT_TASK_NAME`` ``CONFIGURE_INIT_TASK_NAME``
DATA TYPE: OPTION TYPE:
RTEMS Name (``rtems_name``). This configuration option is an integer define.
RANGE:
Any value.
DEFAULT VALUE: DEFAULT VALUE:
The default value is ``rtems_build_name( 'U', 'I', '1', ' ' )``. The default value is ``rtems_build_name( 'U', 'I', '1', ' ' )``.
VALUE CONSTRAINTS:
The value of this configuration option shall be a valid integer of type
``rtems_name``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_INIT_TASK_NAME`` is the name of the single initialization task The value of this configuration option defines the name of the Classic API
defined by the Classic API Initialization Tasks Table. initialization task.
NOTES: NOTES:
None. Use :c:func:`rtems_build_name` to define the task name.
.. index:: CONFIGURE_INIT_TASK_PRIORITY .. index:: CONFIGURE_INIT_TASK_PRIORITY
@ -151,18 +154,19 @@ CONFIGURE_INIT_TASK_PRIORITY
CONSTANT: CONSTANT:
``CONFIGURE_INIT_TASK_PRIORITY`` ``CONFIGURE_INIT_TASK_PRIORITY``
DATA TYPE: OPTION TYPE:
RTEMS Task Priority (``rtems_task_priority``). This configuration option is an integer define.
RANGE:
One (1) to the maximum user priority value of the scheduler.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 1, which is the highest priority in the Classic API. The default value is 1.
VALUE CONSTRAINTS:
The value of this configuration option shall be a valid Classic API task
priority. The set of valid task priorities is scheduler-specific.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_INIT_TASK_PRIORITY`` is the initial priority of the single The value of this configuration option defines the initial priority of the
initialization task defined by the Classic API Initialization Tasks Table. Classic API initialization task.
NOTES: NOTES:
None. None.
@ -177,24 +181,28 @@ CONFIGURE_INIT_TASK_STACK_SIZE
CONSTANT: CONSTANT:
``CONFIGURE_INIT_TASK_STACK_SIZE`` ``CONFIGURE_INIT_TASK_STACK_SIZE``
DATA TYPE: OPTION TYPE:
Unsigned integer (``size_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is RTEMS_MINIMUM_STACK_SIZE. The default value is :ref:`CONFIGURE_MINIMUM_TASK_STACK_SIZE`.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to :ref:`CONFIGURE_MINIMUM_TASK_STACK_SIZE`.
* It shall be small enough so that the task
stack space calculation carried out by ``<rtems/confdefs.h>`` does not
overflow an integer of type ``uintptr_t``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_INIT_TASK_STACK_SIZE`` is the stack size of the single The value of this configuration option defines the task stack size of the
initialization task defined by the Classic API Initialization Tasks Table. Classic API initialization task.
NOTES: NOTES:
If the stack size specified is greater than the configured minimum, it must None.
be accounted for in ``CONFIGURE_EXTRA_TASK_STACKS``. See :ref:`Reserve
Task/Thread Stack Memory Above Minimum` for more information about
``CONFIGURE_EXTRA_TASK_STACKS``.
.. index:: CONFIGURE_RTEMS_INIT_TASKS_TABLE .. index:: CONFIGURE_RTEMS_INIT_TASKS_TABLE
@ -218,10 +226,10 @@ DESCRIPTION:
initialization task is configured. initialization task is configured.
NOTES: NOTES:
The application must define exactly one of the following configuration The application shall define exactly one of the following configuration
options options
* :ref:`CONFIGURE_RTEMS_INIT_TASKS_TABLE`, * `CONFIGURE_RTEMS_INIT_TASKS_TABLE`,
* :ref:`CONFIGURE_POSIX_INIT_THREAD_TABLE`, or * :ref:`CONFIGURE_POSIX_INIT_THREAD_TABLE`, or

View File

@ -1,5 +1,6 @@
.. SPDX-License-Identifier: CC-BY-SA-4.0 .. SPDX-License-Identifier: CC-BY-SA-4.0
.. Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) .. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
Device Driver Configuration Device Driver Configuration
@ -34,7 +35,7 @@ NOTES:
of using the Hello World example as the baseline for an application and of using the Hello World example as the baseline for an application and
leaving out a clock tick source. leaving out a clock tick source.
The application must define exactly one of the following configuration options The application shall define exactly one of the following configuration options
* :ref:`CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER`, * :ref:`CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER`,
@ -54,23 +55,26 @@ CONFIGURE_APPLICATION_EXTRA_DRIVERS
CONSTANT: CONSTANT:
``CONFIGURE_APPLICATION_EXTRA_DRIVERS`` ``CONFIGURE_APPLICATION_EXTRA_DRIVERS``
DATA TYPE: OPTION TYPE:
device driver entry structures This configuration option is an initializer define.
RANGE:
Undefined or set of device driver entry structures
DEFAULT VALUE: DEFAULT VALUE:
This is not defined by default. The default value is the empty list.
VALUE CONSTRAINTS:
The value of this configuration option shall be a list of initializers for
structures of type :c:type:`rtems_driver_address_table`.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_APPLICATION_EXTRA_DRIVERS`` is defined if the application has The value of this configuration option is used to initialize the Device
device drivers it needs to include in the Device Driver Table. This should Driver Table.
be defined to the set of device driver entries that will be placed in the
table at the *END* of the Device Driver Table.
NOTES: NOTES:
None. The value of this configuration option is placed after the entries of other
device driver configuration options.
See :ref:`CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS` for an alternative
placement of application device driver initializers.
.. index:: CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER .. index:: CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
@ -97,7 +101,7 @@ NOTES:
The Clock Driver is responsible for providing a regular interrupt The Clock Driver is responsible for providing a regular interrupt
which invokes a clock tick directive. which invokes a clock tick directive.
The application must define exactly one of the following configuration options The application shall define exactly one of the following configuration options
* `CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER`, * `CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER`,
@ -372,7 +376,7 @@ NOTES:
The Benchmark Timer Driver is intended for the benchmark tests of the RTEMS The Benchmark Timer Driver is intended for the benchmark tests of the RTEMS
Testsuite. Applications should not use this driver. Testsuite. Applications should not use this driver.
The application must define exactly one of the following configuration options The application shall define exactly one of the following configuration options
* :ref:`CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER`, * :ref:`CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER`,
@ -445,28 +449,27 @@ CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS
CONSTANT: CONSTANT:
``CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS`` ``CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS``
DATA TYPE: OPTION TYPE:
device driver entry structures This configuration option is an initializer define.
RANGE:
Undefined or set of device driver entry structures
DEFAULT VALUE: DEFAULT VALUE:
This is not defined by default. The default value is the empty list.
VALUE CONSTRAINTS:
The value of this configuration option shall be a list of initializers for
structures of type :c:type:`rtems_driver_address_table`.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS`` is defined if the The value of this configuration option is used to initialize the Device
application has device drivers it needs to include in the Device Driver Driver Table.
Table. This should be defined to the set of device driver entries that
will be placed in the table at the *FRONT* of the Device Driver Table and
initialized before any other drivers *EXCEPT* any BSP prerequisite drivers.
NOTES: NOTES:
In some cases, it is used by System On Chip BSPs to support peripheral The value of this configuration option is placed after the entries defined by
buses beyond those normally found on the System On Chip. For example, this :ref:`CONFIGURE_BSP_PREREQUISITE_DRIVERS` and before all other device driver
is used by one RTEMS system which has implemented a SPARC/ERC32 based board configuration options.
with VMEBus. The VMEBus Controller initialization is performed by a device
driver configured via this configuration parameter. See :ref:`CONFIGURE_APPLICATION_EXTRA_DRIVERS` for an alternative placement
of application device driver initializers.
.. index:: CONFIGURE_MAXIMUM_DRIVERS .. index:: CONFIGURE_MAXIMUM_DRIVERS
@ -478,24 +481,33 @@ CONFIGURE_MAXIMUM_DRIVERS
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_DRIVERS`` ``CONFIGURE_MAXIMUM_DRIVERS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
This is computed by default, and is set to the number of device drivers This is computed by default, and is set to the number of device drivers
configured using the ``CONFIGURE_APPLICATIONS_NEEDS_XXX_DRIVER`` configured using the ``CONFIGURE_APPLICATIONS_NEEDS_XXX_DRIVER``
configuration parameters. configuration options.
VALUE CONSTRAINTS:
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.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_DRIVERS`` is defined as the number of device drivers The value of this configuration option defines the number of device drivers.
per node.
NOTES: NOTES:
If the application will dynamically install device drivers, then this If the application will dynamically install device drivers, then this
configuration parameter must be larger than the number of statically configuration parameter shall be larger than the number of statically
configured device drivers. Drivers configured using the configured device drivers. Drivers configured using the
``CONFIGURE_APPLICATIONS_NEEDS_XXX_DRIVER`` configuration parameters are ``CONFIGURE_APPLICATIONS_NEEDS_XXX_DRIVER`` configuration options are
statically installed. statically installed.

View File

@ -110,19 +110,31 @@ CONFIGURE_RECORD_PER_PROCESSOR_ITEMS
CONSTANT: CONSTANT:
``CONFIGURE_RECORD_PER_PROCESSOR_ITEMS`` ``CONFIGURE_RECORD_PER_PROCESSOR_ITEMS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``unsigned int``). This configuration option is an integer define.
RANGE:
A power of two greater than or equal to 16.
DEFAULT VALUE: DEFAULT VALUE:
This is not defined by default. The default value is 0.
VALUE CONSTRAINTS:
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.
DESCRIPTION: DESCRIPTION:
If defined, then a record item buffer of the specified item count is The value of this configuration option defines the event record item count
statically allocated for each configured processor per processor.
(:ref:`CONFIGURE_MAXIMUM_PROCESSORS <CONFIGURE_MAXIMUM_PROCESSORS>`).
NOTES: NOTES:
None. The event record buffers are statically allocated for each configured
processor (:ref:`CONFIGURE_MAXIMUM_PROCESSORS`). If the value of this
configuration option is zero, then nothing is allocated.

View File

@ -70,7 +70,7 @@ DESCRIPTION:
configured. configured.
NOTES: NOTES:
Filesystems must be initialized to support file descriptor based device Filesystems shall be initialized to support file descriptor based device
drivers and basic input/output functions such as :c:func:`printf`. drivers and basic input/output functions such as :c:func:`printf`.
Filesystems can be disabled to reduce the memory footprint of an application. Filesystems can be disabled to reduce the memory footprint of an application.
@ -421,26 +421,28 @@ CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK
CONSTANT: CONSTANT:
``CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK`` ``CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK``
DATA TYPE: OPTION TYPE:
Boolean feature macro. This configuration option is an integer define.
RANGE:
Valid values for this configuration parameter are a power of two (2)
between 16 and 512 inclusive. In other words, valid values are 16, 32, 64,
128, 256,and 512.
DEFAULT VALUE: DEFAULT VALUE:
The default IMFS block size is 128 bytes. The default value is 128.
VALUE CONSTRAINTS:
The value of this configuration option shall be
an element of {16, 32, 64, 128, 256, 512}.
DESCRIPTION: DESCRIPTION:
This configuration parameter specifies the block size for in-memory files The value of this configuration option defines the block size for in-memory
managed by the IMFS. The configured block size has two impacts. The first files managed by the IMFS.
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 NOTES:
of each file will remain unused and the memory is wasted. In contrast, when The configured block size has two impacts. The first is the average amount of
the block size is 16, the average unused memory per file is only 8 unused memory in the last block of each file. For example, when the block
bytes. However, it requires more allocations for the same size file and size is 512, on average one-half of the last block of each file will remain
thus more overhead per block for the dynamic memory management. 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 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 stored in the IMFS. With smaller block size, the maximum file size is
@ -460,9 +462,6 @@ DESCRIPTION:
- when the block size is 512 bytes, the maximum file size is 1,082,195,456 - when the block size is 512 bytes, the maximum file size is 1,082,195,456
bytes. bytes.
NOTES:
None.
.. index:: CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM .. index:: CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM
.. _CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM: .. _CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM:

View File

@ -1,5 +1,6 @@
.. SPDX-License-Identifier: CC-BY-SA-4.0 .. SPDX-License-Identifier: CC-BY-SA-4.0
.. Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) .. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
General System Configuration General System Configuration
@ -47,23 +48,30 @@ CONFIGURE_EXTRA_TASK_STACKS
CONSTANT: CONSTANT:
``CONFIGURE_EXTRA_TASK_STACKS`` ``CONFIGURE_EXTRA_TASK_STACKS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``size_t``). This configuration option is an integer define.
RANGE:
Undefined or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* It shall be small enough so that the task
stack space calculation carried out by ``<rtems/confdefs.h>`` does not
overflow an integer of type ``uintptr_t``.
DESCRIPTION: DESCRIPTION:
This configuration parameter is set to the number of bytes the applications The value of this configuration option defines the number of bytes the
wishes to add to the task stack requirements calculated by applications wishes to add to the task stack requirements calculated by
``<rtems/confdefs.h>``. ``<rtems/confdefs.h>``.
NOTES: NOTES:
This parameter is very important. If the application creates tasks with This parameter is very important. If the application creates tasks with
stacks larger then the minimum, then that memory is NOT accounted for by stacks larger then the minimum, then that memory is **not** accounted for by
``<rtems/confdefs.h>``. ``<rtems/confdefs.h>``.
.. index:: CONFIGURE_INITIAL_EXTENSIONS .. index:: CONFIGURE_INITIAL_EXTENSIONS
@ -76,22 +84,24 @@ CONFIGURE_INITIAL_EXTENSIONS
CONSTANT: CONSTANT:
``CONFIGURE_INITIAL_EXTENSIONS`` ``CONFIGURE_INITIAL_EXTENSIONS``
DATA TYPE: OPTION TYPE:
List of user extension initializers (``rtems_extensions_table``). This configuration option is an initializer define.
RANGE:
Undefined or a list of one or more user extensions.
DEFAULT VALUE: DEFAULT VALUE:
This is not defined by default. The default value is the empty list.
VALUE CONSTRAINTS:
The value of this configuration option shall be a list of initializers for
structures of type :c:type:`rtems_extensions_table`.
DESCRIPTION: DESCRIPTION:
If ``CONFIGURE_INITIAL_EXTENSIONS`` is defined by the application, then The value of this configuration option is used to initialize the table of
this application specific set of initial extensions will be placed in the initial user extensions.
initial extension table.
NOTES: NOTES:
None. The value of this configuration option is placed before the entries of
:ref:`BSP_INITIAL_EXTENSION` and after the entries of all other initial
user extensions.
.. index:: CONFIGURE_INTERRUPT_STACK_SIZE .. index:: CONFIGURE_INTERRUPT_STACK_SIZE
.. index:: interrupt stack size .. index:: interrupt stack size
@ -104,29 +114,36 @@ CONFIGURE_INTERRUPT_STACK_SIZE
CONSTANT: CONSTANT:
``CONFIGURE_INTERRUPT_STACK_SIZE`` ``CONFIGURE_INTERRUPT_STACK_SIZE``
DATA TYPE: OPTION TYPE:
Unsigned integer. This configuration option is an integer define.
RANGE:
Positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is ``BSP_INTERRUPT_STACK_SIZE`` in case it is defined, The default value is :ref:`BSP_INTERRUPT_STACK_SIZE` in case it is defined,
otherwise the default value is ``CPU_STACK_MINIMUM_SIZE``. otherwise the default value is ``CPU_STACK_MINIMUM_SIZE``.
DESCRIPTION: VALUE CONSTRAINTS:
The ``CONFIGURE_INTERRUPT_STACK_SIZE`` configuration option defines the The value of this configuration option shall satisfy all of the following
size of an interrupt stack in bytes. constraints:
NOTES: * It shall be greater than or equal to a
The interrupt stack size must be aligned according to BSP-specific and application-specific minimum value.
* It shall be small enough so that the
interrupt stack area calculation carried out by ``<rtems/confdefs.h>`` does
not overflow an integer of type ``size_t``.
* It shall be aligned according to
``CPU_INTERRUPT_STACK_ALIGNMENT``. ``CPU_INTERRUPT_STACK_ALIGNMENT``.
DESCRIPTION:
The value of this configuration option defines the size of an interrupt stack
in bytes.
NOTES:
There is one interrupt stack available for each configured processor There is one interrupt stack available for each configured processor
(:ref:`CONFIGURE_MAXIMUM_PROCESSORS <CONFIGURE_MAXIMUM_PROCESSORS>`). The (:ref:`CONFIGURE_MAXIMUM_PROCESSORS`). The interrupt stack areas are
interrupt stack areas are statically allocated in a special linker section statically allocated in a special linker section (``.rtemsstack.interrupt``).
(``.rtemsstack.interrupt``). The placement of this linker section is The placement of this linker section is BSP-specific.
BSP-specific.
Some BSPs use the interrupt stack as the initialization stack which is used Some BSPs use the interrupt stack as the initialization stack which is used
to perform the sequential system initialization before the multithreading to perform the sequential system initialization before the multithreading
@ -137,8 +154,7 @@ NOTES:
stack size may still result in undefined behaviour. stack size may still result in undefined behaviour.
In releases before RTEMS 5.1 the default value was In releases before RTEMS 5.1 the default value was
:ref:`CONFIGURE_MINIMUM_TASK_STACK_SIZE :ref:`CONFIGURE_MINIMUM_TASK_STACK_SIZE` instead of ``CPU_STACK_MINIMUM_SIZE``.
<CONFIGURE_MINIMUM_TASK_STACK_SIZE>` instead of ``CPU_STACK_MINIMUM_SIZE``.
.. index:: CONFIGURE_MAXIMUM_FILE_DESCRIPTORS .. index:: CONFIGURE_MAXIMUM_FILE_DESCRIPTORS
.. index:: maximum file descriptors .. index:: maximum file descriptors
@ -151,24 +167,31 @@ CONFIGURE_MAXIMUM_FILE_DESCRIPTORS
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_FILE_DESCRIPTORS`` ``CONFIGURE_MAXIMUM_FILE_DESCRIPTORS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
If ``CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER`` is defined, then the The default value is 3.
default value is 3, otherwise the default value is 0. Three file
descriptors allows RTEMS to support standard input, output, and error I/O VALUE CONSTRAINTS:
streams on ``/dev/console``. The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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.
DESCRIPTION: DESCRIPTION:
This configuration parameter is set to the maximum number of file like The value of this configuration option defines the maximum number of file
objects that can be concurrently open. like objects that can be concurrently open.
NOTES: NOTES:
None. The default value of three file descriptors allows RTEMS to support standard
input, output, and error I/O streams on ``/dev/console``.
.. index:: CONFIGURE_MAXIMUM_PRIORITY .. index:: CONFIGURE_MAXIMUM_PRIORITY
.. index:: maximum priority .. index:: maximum priority
@ -182,21 +205,18 @@ CONFIGURE_MAXIMUM_PRIORITY
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_PRIORITY`` ``CONFIGURE_MAXIMUM_PRIORITY``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint8_t``). This configuration option is an integer define.
RANGE:
Valid values for this configuration parameter must be one (1) less than
than a power of two (2) between 4 and 256 inclusively. In other words,
valid values are 3, 7, 31, 63, 127, and 255.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 255, because RTEMS must support 256 priority levels to The default value is 255.
be compliant with various standards. These priorities range from zero (0)
to 255. VALUE CONSTRAINTS:
The value of this configuration option shall be
an element of {3, 7, 31, 63, 127, 255}.
DESCRIPTION: DESCRIPTION:
For the schedulers For the following schedulers
* :ref:`SchedulerPriority`, which is the default in uniprocessor * :ref:`SchedulerPriority`, which is the default in uniprocessor
configurations and can be configured through the configurations and can be configured through the
@ -217,8 +237,8 @@ NOTES:
The numerically greatest priority is the logically lowest priority in the The numerically greatest priority is the logically lowest priority in the
system and will thus be used by the IDLE task. system and will thus be used by the IDLE task.
Priority zero (0) is reserved for internal use by RTEMS and is not available Priority zero is reserved for internal use by RTEMS and is not available to
to applications. applications.
Reducing the number of priorities through this configuration option reduces Reducing the number of priorities through this configuration option reduces
the amount of memory allocated by the schedulers listed above. These the amount of memory allocated by the schedulers listed above. These
@ -228,6 +248,9 @@ NOTES:
priority levels (default), 48 bytes for 4 priority levels priority levels (default), 48 bytes for 4 priority levels
(``CONFIGURE_MAXIMUM_PRIORITY == 3``). (``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.
.. index:: CONFIGURE_MAXIMUM_PROCESSORS .. index:: CONFIGURE_MAXIMUM_PROCESSORS
.. _CONFIGURE_MAXIMUM_PROCESSORS: .. _CONFIGURE_MAXIMUM_PROCESSORS:
@ -238,27 +261,27 @@ CONFIGURE_MAXIMUM_PROCESSORS
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_PROCESSORS`` ``CONFIGURE_MAXIMUM_PROCESSORS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 1. The default value is 1.
VALUE CONSTRAINTS:
The value of this configuration option shall be greater than or equal to 0
and less than or equal to ``CPU_MAXIMUM_PROCESSORS``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_PROCESSORS`` must be set to the maximum number of The value of this configuration option defines the maximum number of
processors an application intends to use. The number of actually available processors an application intends to use. The number of actually available
processors depends on the hardware and may be less. It is recommended to processors depends on the hardware and may be less. It is recommended to use
use the smallest value suitable for the application in order to save the smallest value suitable for the application in order to save memory.
memory. Each processor needs an idle thread and interrupt stack for Each processor needs an IDLE task stack and interrupt stack for example.
example.
NOTES: NOTES:
If there are more processors available than configured, the rest will be If there are more processors available than configured, the rest will be
ignored. This configuration define is ignored in uniprocessor ignored. In uniprocessor configuration, this configuration define is
configurations. ignored.
.. index:: CONFIGURE_MAXIMUM_THREAD_NAME_SIZE .. index:: CONFIGURE_MAXIMUM_THREAD_NAME_SIZE
.. index:: maximum thread name size .. index:: maximum thread name size
@ -271,24 +294,36 @@ CONFIGURE_MAXIMUM_THREAD_NAME_SIZE
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_THREAD_NAME_SIZE`` ``CONFIGURE_MAXIMUM_THREAD_NAME_SIZE``
DATA TYPE: OPTION TYPE:
Unsigned integer (``size_t``). This configuration option is an integer define.
RANGE:
No restrictions.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 16. This value was chosen for Linux compatibility, The default value is 16.
see
`PTHREAD_SETNAME_NP(3) <http://man7.org/linux/man-pages/man3/pthread_setname_np.3.html>`_. VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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.
DESCRIPTION: DESCRIPTION:
This configuration parameter specifies the maximum thread name size The value of this configuration option defines the maximum thread name size
including the terminating `NUL` character. including the terminating ``NUL`` character.
NOTES: NOTES:
The default value was chosen for Linux compatibility, see
`PTHREAD_SETNAME_NP(3) <http://man7.org/linux/man-pages/man3/pthread_setname_np.3.html>`_.
The size of the thread control block is increased by the maximum thread name The size of the thread control block is increased by the maximum thread name
size. This configuration option is available since RTEMS 5.1. size.
This configuration option is available since RTEMS 5.1.
.. index:: CONFIGURE_MEMORY_OVERHEAD .. index:: CONFIGURE_MEMORY_OVERHEAD
@ -300,24 +335,37 @@ CONFIGURE_MEMORY_OVERHEAD
CONSTANT: CONSTANT:
``CONFIGURE_MEMORY_OVERHEAD`` ``CONFIGURE_MEMORY_OVERHEAD``
DATA TYPE: OPTION TYPE:
Unsigned integer (``size_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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 ``<rtems/confdefs.h>`` does
not overflow an integer of type ``uintptr_t``.
DESCRIPTION: DESCRIPTION:
This parameter is set to the number of kilobytes the application wishes to The value of this configuration option defines the number of kilobytes the
add to the requirements calculated by ``<rtems/confdefs.h>``. application wishes to add to the RTEMS Workspace size calculated by
``<rtems/confdefs.h>``.
NOTES: NOTES:
This configuration parameter should only be used when it is suspected that This configuration option should only be used when it is suspected that a bug
a bug in ``<rtems/confdefs.h>`` has resulted in an underestimation. in ``<rtems/confdefs.h>`` has resulted in an underestimation. Typically the
Typically the memory allocation will be too low when an application does memory allocation will be too low when an application does not account for
not account for all message queue buffers or task stacks. all message queue buffers or task stacks, see
:ref:`CONFIGURE_MESSAGE_BUFFER_MEMORY`.
.. index:: CONFIGURE_MESSAGE_BUFFER_MEMORY .. index:: CONFIGURE_MESSAGE_BUFFER_MEMORY
.. index:: configure message queue buffer memory .. index:: configure message queue buffer memory
@ -332,18 +380,29 @@ CONFIGURE_MESSAGE_BUFFER_MEMORY
CONSTANT: CONSTANT:
``CONFIGURE_MESSAGE_BUFFER_MEMORY`` ``CONFIGURE_MESSAGE_BUFFER_MEMORY``
DATA TYPE: OPTION TYPE:
integer summation macro This configuration option is an integer define.
RANGE:
undefined (zero) or calculation resulting in a positive integer
DEFAULT VALUE: DEFAULT VALUE:
The default value is zero. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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 ``<rtems/confdefs.h>`` does
not overflow an integer of type ``uintptr_t``.
DESCRIPTION: DESCRIPTION:
The value of this configuration option defines the number of bytes The value of this configuration option defines the number of bytes reserved
resereved for message queue buffers in the RTEMS Workspace. for message queue buffers in the RTEMS Workspace.
NOTES: NOTES:
The configuration options :ref:`CONFIGURE_MAXIMUM_MESSAGE_QUEUES` and The configuration options :ref:`CONFIGURE_MAXIMUM_MESSAGE_QUEUES` and
@ -393,6 +452,7 @@ NOTES:
) )
.. index:: CONFIGURE_MICROSECONDS_PER_TICK .. index:: CONFIGURE_MICROSECONDS_PER_TICK
.. index:: clock tick quantum
.. index:: tick quantum .. index:: tick quantum
.. _CONFIGURE_MICROSECONDS_PER_TICK: .. _CONFIGURE_MICROSECONDS_PER_TICK:
@ -403,18 +463,25 @@ CONFIGURE_MICROSECONDS_PER_TICK
CONSTANT: CONSTANT:
``CONFIGURE_MICROSECONDS_PER_TICK`` ``CONFIGURE_MICROSECONDS_PER_TICK``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Positive.
DEFAULT VALUE: DEFAULT VALUE:
This is not defined by default. When not defined, the clock tick quantum is The default value is 10000.
configured to be 10,000 microseconds which is ten (10) milliseconds.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to a Clock Driver specific value.
* It shall be less than or equal to a Clock Driver specific value.
* The resulting clock ticks per second should be an integer.
DESCRIPTION: DESCRIPTION:
This constant is used to specify the length of time between clock ticks. 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 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 time processing clock ticks that it does not have processing time available
@ -432,11 +499,11 @@ DESCRIPTION:
application. application.
NOTES: NOTES:
This configuration parameter has no impact if the Clock Tick Device driver This configuration option has no impact if the Clock Driver is not
is not configured. configured, see :ref:`CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER`.
There may be BSP specific limits on the resolution or maximum value of a There may be Clock Driver specific limits on the resolution or maximum value
clock tick quantum. of a clock tick quantum.
.. index:: CONFIGURE_MINIMUM_TASK_STACK_SIZE .. index:: CONFIGURE_MINIMUM_TASK_STACK_SIZE
.. index:: minimum task stack size .. index:: minimum task stack size
@ -449,27 +516,35 @@ CONFIGURE_MINIMUM_TASK_STACK_SIZE
CONSTANT: CONSTANT:
``CONFIGURE_MINIMUM_TASK_STACK_SIZE`` ``CONFIGURE_MINIMUM_TASK_STACK_SIZE``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is architecture-specific. The default value is ``CPU_STACK_MINIMUM_SIZE``.
VALUE CONSTRAINTS:
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 ``<rtems/confdefs.h>`` 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.
DESCRIPTION: DESCRIPTION:
This configuration parameter defines the minimum stack size in bytes for The value of this configuration option defines the minimum stack size in
every user task or thread in the system. bytes for every user task or thread in the system.
NOTES: NOTES:
Adjusting this parameter should be done with caution. Examining the actual Adjusting this parameter should be done with caution. Examining the actual
stack usage using the stack checker usage reporting facility is recommended stack usage using the stack checker usage reporting facility is recommended
(see also :ref:`CONFIGURE_STACK_CHECKER_ENABLED <CONFIGURE_STACK_CHECKER_ENABLED>`). (see also :ref:`CONFIGURE_STACK_CHECKER_ENABLED`).
This parameter can be used to lower the minimum from that recommended. This 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 can be used in low memory systems to reduce memory consumption for
stacks. However, this must be done with caution as it could increase the stacks. However, this shall be done with caution as it could increase the
possibility of a blown task stack. possibility of a blown task stack.
This parameter can be used to increase the minimum from that This parameter can be used to increase the minimum from that
@ -478,12 +553,11 @@ NOTES:
By default, this configuration parameter defines also the minimum stack By default, this configuration parameter defines also the minimum stack
size of POSIX threads. This can be changed with the size of POSIX threads. This can be changed with the
:ref:`CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE <CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE>` :ref:`CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE`
configuration option. configuration option.
In releases before RTEMS 5.1 the ``CONFIGURE_MINIMUM_TASK_STACK_SIZE`` was In releases before RTEMS 5.1 the ``CONFIGURE_MINIMUM_TASK_STACK_SIZE`` was
used to define the default value of :ref:`CONFIGURE_INTERRUPT_STACK_SIZE used to define the default value of :ref:`CONFIGURE_INTERRUPT_STACK_SIZE`.
<CONFIGURE_INTERRUPT_STACK_SIZE>`.
.. index:: CONFIGURE_STACK_CHECKER_ENABLED .. index:: CONFIGURE_STACK_CHECKER_ENABLED
@ -524,22 +598,23 @@ CONFIGURE_TICKS_PER_TIMESLICE
CONSTANT: CONSTANT:
``CONFIGURE_TICKS_PER_TIMESLICE`` ``CONFIGURE_TICKS_PER_TIMESLICE``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 50. The default value is 50.
VALUE CONSTRAINTS:
The value of this configuration option shall be greater than or equal to 0
and less than or equal to ``UINT32_MAX``.
DESCRIPTION: DESCRIPTION:
This configuration parameter specifies the length of the timeslice quantum The value of this configuration option defines the length of the timeslice
in ticks for each task. quantum in ticks for each task.
NOTES: NOTES:
This configuration parameter has no impact if the Clock Tick Device driver This configuration option has no impact if the Clock Driver is not
is not configured. configured, see :ref:`CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER`.
.. index:: CONFIGURE_UNIFIED_WORK_AREAS .. index:: CONFIGURE_UNIFIED_WORK_AREAS
.. index:: unified work areas .. index:: unified work areas
@ -587,27 +662,28 @@ CONFIGURE_UNLIMITED_ALLOCATION_SIZE
CONSTANT: CONSTANT:
``CONFIGURE_UNLIMITED_ALLOCATION_SIZE`` ``CONFIGURE_UNLIMITED_ALLOCATION_SIZE``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Positive.
DEFAULT VALUE: DEFAULT VALUE:
If not defined and ``CONFIGURE_UNLIMITED_OBJECTS`` is defined, the default The default value is 8.
value is eight (8).
VALUE CONSTRAINTS:
The value of this configuration option shall meet the constraints of all
object classes to which it is applied.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_UNLIMITED_ALLOCATION_SIZE`` provides an allocation size to use If :ref:`CONFIGURE_UNLIMITED_OBJECTS` is defined, then the value of this
for ``rtems_resource_unlimited`` when using configuration option defines the default objects maximum of all object
``CONFIGURE_UNLIMITED_OBJECTS``. classes supporting :ref:`ConfigUnlimitedObjects` to
``rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)``.
NOTES: NOTES:
By allowing users to declare all resources as being unlimited the user can By allowing users to declare all resources as being unlimited the user can
avoid identifying and limiting the resources avoid identifying and limiting the resources used.
used. ``CONFIGURE_UNLIMITED_OBJECTS`` does not support varying the
allocation sizes for different objects; users who want that much control The object maximum of each class can be configured also individually using
can define the ``rtems_resource_unlimited`` macros themselves. the :c:func:`rtems_resource_unlimited` macro.
.. index:: CONFIGURE_UNLIMITED_OBJECTS .. index:: CONFIGURE_UNLIMITED_OBJECTS

View File

@ -1,5 +1,6 @@
.. SPDX-License-Identifier: CC-BY-SA-4.0 .. SPDX-License-Identifier: CC-BY-SA-4.0
.. Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) .. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
Idle Task Configuration Idle Task Configuration
@ -17,22 +18,27 @@ CONFIGURE_IDLE_TASK_BODY
CONSTANT: CONSTANT:
``CONFIGURE_IDLE_TASK_BODY`` ``CONFIGURE_IDLE_TASK_BODY``
DATA TYPE: OPTION TYPE:
Function pointer. This configuration option is an initializer define.
RANGE:
Undefined or valid function pointer.
DEFAULT VALUE: DEFAULT VALUE:
This is not defined by default. If :ref:`BSP_IDLE_TASK_BODY` is defined, then this will be the default value,
otherwise the default value is ``_CPU_Thread_Idle_body``.
VALUE CONSTRAINTS:
The value of this configuration option shall be defined to a valid function
pointer of the type ``void *( *idle_body )( uintptr_t )``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_IDLE_TASK_BODY`` is set to the function name corresponding to The value of this configuration option initializes the IDLE thread body.
the application specific IDLE thread body. If not specified, the BSP or
RTEMS default IDLE thread body will be used.
NOTES: NOTES:
None. 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 :ref:`CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION`.
.. index:: CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION .. index:: CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
@ -53,30 +59,30 @@ DEFAULT CONFIGURATION:
DESCRIPTION: DESCRIPTION:
This configuration option is defined to indicate that the user has configured This configuration option is defined to indicate that the user has configured
**no** user initialization tasks or threads and that the user provided idle **no** user initialization tasks or threads and that the user provided IDLE
task will perform application initialization and then transform itself into task will perform application initialization and then transform itself into
an idle task. an IDLE task.
NOTES: NOTES:
If you use this option be careful, the user idle task **cannot** block at all If you use this option be careful, the user IDLE task **cannot** block at all
during the initialization sequence. Further, once application during the initialization sequence. Further, once application
initialization is complete, it must make itself preemptible and enter an idle initialization is complete, it shall make itself preemptible and enter an idle
body loop. body loop.
The idle task must run at the lowest priority of all tasks in the system. 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 If this configuration option is defined, then it is mandatory to configure a
user idle task with the :ref:`CONFIGURE_IDLE_TASK_BODY` configuration option, user IDLE task with the :ref:`CONFIGURE_IDLE_TASK_BODY` configuration option,
otherwise a compile time error in the configuration file will occur. otherwise a compile time error in the configuration file will occur.
The application must define exactly one of the following configuration The application shall define exactly one of the following configuration
options options
* :ref:`CONFIGURE_RTEMS_INIT_TASKS_TABLE`, * :ref:`CONFIGURE_RTEMS_INIT_TASKS_TABLE`,
* :ref:`CONFIGURE_POSIX_INIT_THREAD_TABLE`, or * :ref:`CONFIGURE_POSIX_INIT_THREAD_TABLE`, or
* :ref:`CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION` * `CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION`
otherwise a compile time error in the configuration file will occur. otherwise a compile time error in the configuration file will occur.
@ -90,18 +96,27 @@ CONFIGURE_IDLE_TASK_STACK_SIZE
CONSTANT: CONSTANT:
``CONFIGURE_IDLE_TASK_STACK_SIZE`` ``CONFIGURE_IDLE_TASK_STACK_SIZE``
DATA TYPE: OPTION TYPE:
Unsigned integer (``size_t``). This configuration option is an integer define.
RANGE:
Undefined or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is RTEMS_MINIMUM_STACK_SIZE. The default value is :ref:`CONFIGURE_MINIMUM_TASK_STACK_SIZE`.
VALUE CONSTRAINTS:
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 ``<rtems/confdefs.h>`` does not
overflow an integer of type ``size_t``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_IDLE_TASK_STACK_SIZE`` is set to the desired stack size for the The value of this configuration option defines the task stack size for an
IDLE task. IDLE task.
NOTES: NOTES:
None. In SMP configurations, there is one IDLE task per configured processor, see
:ref:`CONFIGURE_MAXIMUM_PROCESSORS`.

View File

@ -48,17 +48,18 @@ CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
CONSTANT: CONSTANT:
``CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS`` ``CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 32. The default value is 32.
VALUE CONSTRAINTS:
The value of this configuration option shall be greater than or equal to 0
and less than or equal to ``UINT32_MAX``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS`` is the maximum number of The value of this configuration option defines the maximum number of
concurrently active global objects in a multiprocessor system. concurrently active global objects in a multiprocessor system.
NOTES: NOTES:
@ -75,18 +76,19 @@ CONFIGURE_MP_MAXIMUM_NODES
CONSTANT: CONSTANT:
``CONFIGURE_MP_MAXIMUM_NODES`` ``CONFIGURE_MP_MAXIMUM_NODES``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 2. The default value is 2.
VALUE CONSTRAINTS:
The value of this configuration option shall be greater than or equal to 0
and less than or equal to ``UINT32_MAX``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MP_MAXIMUM_NODES`` is the maximum number of nodes in a The value of this configuration option defines the maximum number of nodes in
multiprocessor system. a multiprocessor system.
NOTES: NOTES:
None. None.
@ -101,18 +103,20 @@ CONFIGURE_MP_MAXIMUM_PROXIES
CONSTANT: CONSTANT:
``CONFIGURE_MP_MAXIMUM_PROXIES`` ``CONFIGURE_MP_MAXIMUM_PROXIES``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Undefined or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 32. The default value is 32.
VALUE CONSTRAINTS:
The value of this configuration option shall be greater than or equal to 0
and less than or equal to ``UINT32_MAX``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MP_MAXIMUM_PROXIES`` is the maximum number of concurrently The value of this configuration option defines the maximum number of
active thread/task proxies on this node in a multiprocessor system. concurrently active thread/task proxies on this node in a multiprocessor
system.
NOTES: NOTES:
Since a proxy is used to represent a remote task/thread which is blocking Since a proxy is used to represent a remote task/thread which is blocking
@ -130,18 +134,19 @@ CONFIGURE_MP_MPCI_TABLE_POINTER
CONSTANT: CONSTANT:
``CONFIGURE_MP_MPCI_TABLE_POINTER`` ``CONFIGURE_MP_MPCI_TABLE_POINTER``
DATA TYPE: OPTION TYPE:
pointer to ``rtems_mpci_table`` This configuration option is an initializer define.
RANGE:
undefined or valid pointer
DEFAULT VALUE: DEFAULT VALUE:
This is not defined by default. The default value is ``&MPCI_table``.
VALUE CONSTRAINTS:
The value of this configuration option shall be a pointer to
:c:type:`rtems_mpci_table`.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MP_MPCI_TABLE_POINTER`` is the pointer to the MPCI The value of this configuration option initializes the MPCI Configuration
Configuration Table. The default value of this field is``&MPCI_table``. Table.
NOTES: NOTES:
RTEMS provides a Shared Memory MPCI Device Driver which can be used on any RTEMS provides a Shared Memory MPCI Device Driver which can be used on any
@ -158,19 +163,19 @@ CONFIGURE_MP_NODE_NUMBER
CONSTANT: CONSTANT:
``CONFIGURE_MP_NODE_NUMBER`` ``CONFIGURE_MP_NODE_NUMBER``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is ``NODE_NUMBER``, which is assumed to be set by the The default value is ``NODE_NUMBER``.
compilation environment.
VALUE CONSTRAINTS:
The value of this configuration option shall be greater than or equal to 0
and less than or equal to ``UINT32_MAX``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MP_NODE_NUMBER`` is the node number of this node in a The value of this configuration option defines the node number of this node
multiprocessor system. in a multiprocessor system.
NOTES: NOTES:
In the RTEMS Multiprocessing Test Suite, the node number is derived from In the RTEMS Multiprocessing Test Suite, the node number is derived from

View File

@ -1,5 +1,6 @@
.. SPDX-License-Identifier: CC-BY-SA-4.0 .. SPDX-License-Identifier: CC-BY-SA-4.0
.. Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) .. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
POSIX API Configuration POSIX API Configuration
@ -20,21 +21,36 @@ CONFIGURE_MAXIMUM_POSIX_KEYS
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_POSIX_KEYS`` ``CONFIGURE_MAXIMUM_POSIX_KEYS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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
:c:func:`rtems_resource_unlimited` the enable unlimited objects for this
object class, if the value passed to :c:func:`rtems_resource_unlimited`
satisfies all other constraints of this configuration option.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_POSIX_KEYS`` is the maximum number of POSIX API Keys The value of this configuration option defines the maximum number of POSIX
that can be concurrently active. API Keys that can be concurrently active.
NOTES: NOTES:
This object class can be configured in unlimited allocation mode. This object class can be configured in unlimited allocation mode, see
:ref:`ConfigUnlimitedObjects`.
.. index:: CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS .. index:: CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS
@ -46,24 +62,39 @@ CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS`` ``CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is The default value is
:ref:`CONFIGURE_MAXIMUM_POSIX_KEYS <CONFIGURE_MAXIMUM_POSIX_KEYS>` * :ref:`CONFIGURE_MAXIMUM_POSIX_KEYS` *
:ref:`CONFIGURE_MAXIMUM_TASKS <CONFIGURE_MAXIMUM_TASKS>` + :ref:`CONFIGURE_MAXIMUM_TASKS` +
:ref:`CONFIGURE_MAXIMUM_POSIX_THREADS <CONFIGURE_MAXIMUM_POSIX_THREADS>`. :ref:`CONFIGURE_MAXIMUM_POSIX_THREADS`.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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
:c:func:`rtems_resource_unlimited` the enable unlimited objects for this
object class, if the value passed to :c:func:`rtems_resource_unlimited`
satisfies all other constraints of this configuration option.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS`` is the maximum number of key The value of this configuration option defines the maximum number of key
value pairs used by POSIX API Keys that can be concurrently active. value pairs used by POSIX API Keys that can be concurrently active.
NOTES: NOTES:
This object class can be configured in unlimited allocation mode. This object class can be configured in unlimited allocation mode, see
:ref:`ConfigUnlimitedObjects`.
A key value pair is created by :c:func:`pthread_setspecific` if the value A key value pair is created by :c:func:`pthread_setspecific` if the value
is not :c:macro:`NULL`, otherwise it is deleted. is not :c:macro:`NULL`, otherwise it is deleted.
@ -78,23 +109,42 @@ CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES`` ``CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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 ``<rtems/confdefs.h>`` does
not overflow an integer of type ``uintptr_t``.
* It may be defined through
:c:func:`rtems_resource_unlimited` the enable unlimited objects for this
object class, if the value passed to :c:func:`rtems_resource_unlimited`
satisfies all other constraints of this configuration option.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES`` is the maximum number of POSIX The value of this configuration option defines the maximum number of POSIX
API Message Queues that can be concurrently active. API Message Queues that can be concurrently active.
NOTES: NOTES:
This object class can be configured in unlimited allocation mode. You have This object class can be configured in unlimited allocation mode, see
to account for the memory used to store the messages of each message queue, :ref:`ConfigUnlimitedObjects`. You have to account for the memory used to
see :ref:`CONFIGURE_MESSAGE_BUFFER_MEMORY`. store the messages of each message queue, see
:ref:`CONFIGURE_MESSAGE_BUFFER_MEMORY`.
.. index:: CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS .. index:: CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS
@ -106,17 +156,28 @@ CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS`` ``CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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 ``<rtems/confdefs.h>`` does
not overflow an integer of type ``uintptr_t``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS`` is the maximum number of POSIX The value of this configuration option defines the maximum number of POSIX
API Queued Signals that can be concurrently active. API Queued Signals that can be concurrently active.
NOTES: NOTES:
@ -135,25 +196,44 @@ CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_POSIX_SEMAPHORES`` ``CONFIGURE_MAXIMUM_POSIX_SEMAPHORES``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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 ``<rtems/confdefs.h>`` does
not overflow an integer of type ``uintptr_t``.
* It may be defined through
:c:func:`rtems_resource_unlimited` the enable unlimited objects for this
object class, if the value passed to :c:func:`rtems_resource_unlimited`
satisfies all other constraints of this configuration option.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_POSIX_SEMAPHORES`` is the maximum number of POSIX API The value of this configuration option defines the maximum number of POSIX
Named Semaphores that can be concurrently active. API Named Semaphores that can be concurrently active.
NOTES: NOTES:
This object class can be configured in unlimited allocation mode. This object class can be configured in unlimited allocation mode, see
:ref:`ConfigUnlimitedObjects`.
Named semaphores are created with ``sem_open()``. Semaphores initialized Named semaphores are created with :c:func:`sem_open()`. Semaphores
with ``sem_init()`` are not affected by this configuration option since the initialized with :c:func:`sem_init()` are not affected by this configuration
storage space for these semaphores is user-provided. option since the storage space for these semaphores is user-provided.
.. index:: CONFIGURE_MAXIMUM_POSIX_THREADS .. index:: CONFIGURE_MAXIMUM_POSIX_THREADS
@ -165,32 +245,46 @@ CONFIGURE_MAXIMUM_POSIX_THREADS
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_POSIX_THREADS`` ``CONFIGURE_MAXIMUM_POSIX_THREADS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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 ``<rtems/confdefs.h>`` does not
overflow an integer of type ``uintptr_t``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_POSIX_THREADS`` is the maximum number of POSIX API The value of this configuration option defines the maximum number of POSIX
Threads that can be concurrently active. API Threads that can be concurrently active.
NOTES: NOTES:
This object class can be configured in unlimited allocation mode. This object class can be configured in unlimited allocation mode, see
:ref:`ConfigUnlimitedObjects`.
This calculations for the required memory in the RTEMS Workspace for This calculations for the required memory in the RTEMS Workspace for
threads assume that each thread has a minimum stack size and has floating threads assume that each thread has a minimum stack size and has floating
point support enabled. The configuration parameter point support enabled. The configuration option
``CONFIGURE_EXTRA_TASK_STACKS`` is used to specify thread stack :ref:`CONFIGURE_EXTRA_TASK_STACKS` is used to specify thread stack
requirements *ABOVE* the minimum size required. See :ref:`Reserve requirements **above** the minimum size required. See :ref:`Reserve
Task/Thread Stack Memory Above Minimum` for more information about Task/Thread Stack Memory Above Minimum` for more information about
``CONFIGURE_EXTRA_TASK_STACKS``. ``CONFIGURE_EXTRA_TASK_STACKS``.
The maximum number of Classic API Tasks is specified by The maximum number of Classic API Tasks is specified by
:ref:`CONFIGURE_MAXIMUM_TASKS <CONFIGURE_MAXIMUM_TASKS>`. :ref:`CONFIGURE_MAXIMUM_TASKS`.
All POSIX threads have floating point enabled. All POSIX threads have floating point enabled.
@ -204,21 +298,36 @@ CONFIGURE_MAXIMUM_POSIX_TIMERS
CONSTANT: CONSTANT:
``CONFIGURE_MAXIMUM_POSIX_TIMERS`` ``CONFIGURE_MAXIMUM_POSIX_TIMERS``
DATA TYPE: OPTION TYPE:
Unsigned integer (``uint32_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 0. The default value is 0.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to 0.
* 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
:c:func:`rtems_resource_unlimited` the enable unlimited objects for this
object class, if the value passed to :c:func:`rtems_resource_unlimited`
satisfies all other constraints of this configuration option.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_MAXIMUM_POSIX_TIMERS`` is the maximum number of POSIX API The value of this configuration option defines the maximum number of POSIX
Timers that can be concurrently active. API Timers that can be concurrently active.
NOTES: NOTES:
This object class can be configured in unlimited allocation mode. This object class can be configured in unlimited allocation mode, see
:ref:`ConfigUnlimitedObjects`.
Timers are only available if RTEMS was built with the Timers are only available if RTEMS was built with the
``--enable-posix`` build configuration option. ``--enable-posix`` build configuration option.
@ -234,19 +343,27 @@ CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
CONSTANT: CONSTANT:
``CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE`` ``CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE``
DATA TYPE: OPTION TYPE:
Unsigned integer (``size_t``). This configuration option is an integer define.
RANGE:
Positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is two times the value of The default value is two times the value of
:ref:`CONFIGURE_MINIMUM_TASK_STACK_SIZE <CONFIGURE_MINIMUM_TASK_STACK_SIZE>`. :ref:`CONFIGURE_MINIMUM_TASK_STACK_SIZE`.
VALUE CONSTRAINTS:
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 ``<rtems/confdefs.h>`` 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.
DESCRIPTION: DESCRIPTION:
This configuration parameter defines the minimum stack size in bytes for The value of this configuration option defines the minimum stack size in
every POSIX thread in the system. bytes for every POSIX thread in the system.
NOTES: NOTES:
None. None.

View File

@ -1,5 +1,6 @@
.. SPDX-License-Identifier: CC-BY-SA-4.0 .. SPDX-License-Identifier: CC-BY-SA-4.0
.. Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) .. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
POSIX Initialization Thread Configuration POSIX Initialization Thread Configuration
@ -18,23 +19,23 @@ CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT
CONSTANT: CONSTANT:
``CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT`` ``CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT``
DATA TYPE: OPTION TYPE:
POSIX thread function pointer (``void *(*entry_point)(void *)``). This configuration option is an initializer define.
RANGE:
Undefined or a valid POSIX thread function pointer.
DEFAULT VALUE: DEFAULT VALUE:
The default value is ``POSIX_Init``. The default value is ``POSIX_Init``.
VALUE CONSTRAINTS:
The value of this configuration option shall be defined to a valid function
pointer of the type ``void *( *entry_point )( void * )``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT`` is the entry point The value of this configuration option initializes the entry point of the
(a.k.a. function name) of the single initialization thread defined by the POSIX API initialization thread.
POSIX API Initialization Threads Table.
NOTES: NOTES:
The user must implement the function ``POSIX_Init`` or the function name The application shall provide the function referenced by this configuration
provided in this configuration parameter. option.
.. index:: CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE .. index:: CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
@ -46,25 +47,28 @@ CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
CONSTANT: CONSTANT:
``CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE`` ``CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE``
DATA TYPE: OPTION TYPE:
Unsigned integer (``size_t``). This configuration option is an integer define.
RANGE:
Zero or positive.
DEFAULT VALUE: DEFAULT VALUE:
The default value is 2 \* RTEMS_MINIMUM_STACK_SIZE. The default value is :ref:`CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE`.
VALUE CONSTRAINTS:
The value of this configuration option shall satisfy all of the following
constraints:
* It shall be greater than or equal to :ref:`CONFIGURE_MINIMUM_TASK_STACK_SIZE`.
* It shall be small enough so that the task
stack space calculation carried out by ``<rtems/confdefs.h>`` does not
overflow an integer of type ``uintptr_t``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE`` is the stack size of the single The value of this configuration option defines the thread stack size of the
initialization thread defined by the POSIX API Initialization Threads POSIX API initialization thread.
Table.
NOTES: NOTES:
If the stack size specified is greater than the configured minimum, it must None.
be accounted for in ``CONFIGURE_EXTRA_TASK_STACKS``. See :ref:`Reserve
Task/Thread Stack Memory Above Minimum` for more information about
``CONFIGURE_EXTRA_TASK_STACKS``.
.. index:: CONFIGURE_POSIX_INIT_THREAD_TABLE .. index:: CONFIGURE_POSIX_INIT_THREAD_TABLE
@ -88,12 +92,12 @@ DESCRIPTION:
initialization thread is configured. initialization thread is configured.
NOTES: NOTES:
The application must define exactly one of the following configuration The application shall define exactly one of the following configuration
options options
* :ref:`CONFIGURE_RTEMS_INIT_TASKS_TABLE`, * :ref:`CONFIGURE_RTEMS_INIT_TASKS_TABLE`,
* :ref:`CONFIGURE_POSIX_INIT_THREAD_TABLE`, or * `CONFIGURE_POSIX_INIT_THREAD_TABLE`, or
* :ref:`CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION` * :ref:`CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION`

View File

@ -135,32 +135,44 @@ CONFIGURE_SCHEDULER_NAME
CONSTANT: CONSTANT:
``CONFIGURE_SCHEDULER_NAME`` ``CONFIGURE_SCHEDULER_NAME``
DATA TYPE: OPTION TYPE:
RTEMS Name (``rtems_name``). This configuration option is an integer define.
RANGE:
Any value.
DEFAULT VALUE: DEFAULT VALUE:
The default name is The default value is
- ``"MEDF"`` for the :ref:`EDF SMP Scheduler <SchedulerSMPEDF>`, * ``"MEDF"`` for the :ref:`EDF SMP Scheduler <SchedulerSMPEDF>`,
- ``"MPA "`` for the :ref:`Arbitrary Processor Affinity Priority SMP Scheduler <SchedulerSMPPriorityAffinity>`,
- ``"MPD "`` for the :ref:`Deterministic Priority SMP Scheduler <SchedulerSMPPriority>`, * ``"MPA "`` for the :ref:`Arbitrary Processor Affinity Priority SMP Scheduler <SchedulerSMPPriorityAffinity>`,
- ``"MPS "`` for the :ref:`Simple Priority SMP Scheduler <SchedulerSMPPrioritySimple>`,
- ``"UCBS"`` for the :ref:`Uniprocessor CBS Scheduler <SchedulerCBS>`, * ``"MPD "`` for the :ref:`Deterministic Priority SMP Scheduler <SchedulerSMPPriority>`,
- ``"UEDF"`` for the :ref:`Uniprocessor EDF Scheduler <SchedulerEDF>`,
- ``"UPD "`` for the :ref:`Uniprocessor Deterministic Priority Scheduler <SchedulerPriority>`, and * ``"MPS "`` for the :ref:`Simple Priority SMP Scheduler <SchedulerSMPPrioritySimple>`,
- ``"UPS "`` for the :ref:`Uniprocessor Simple Priority Scheduler <SchedulerPrioritySimple>`.
* ``"UCBS"`` for the :ref:`Uniprocessor CBS Scheduler <SchedulerCBS>`,
* ``"UEDF"`` for the :ref:`Uniprocessor EDF Scheduler <SchedulerEDF>`,
* ``"UPD "`` for the :ref:`Uniprocessor Deterministic Priority Scheduler <SchedulerPriority>`, and
* ``"UPS "`` for the :ref:`Uniprocessor Simple Priority Scheduler <SchedulerPrioritySimple>`.
VALUE CONSTRAINTS:
The value of this configuration option shall be a valid integer of type
``rtems_name``.
DESCRIPTION: DESCRIPTION:
Schedulers can be identified via ``rtems_scheduler_ident``. The name of The value of this configuration option defines the name of the default
the scheduler is determined by the configuration. scheduler.
NOTES: NOTES:
This scheduler configuration option is an advanced configuration option. This scheduler configuration option is an advanced configuration option.
Think twice before you use it. Think twice before you use it.
Schedulers can be identified via c:func:`rtems_scheduler_ident`.
Use :c:func:`rtems_build_name` to define the scheduler name.
.. index:: CONFIGURE_SCHEDULER_PRIORITY .. index:: CONFIGURE_SCHEDULER_PRIORITY
.. _CONFIGURE_SCHEDULER_PRIORITY: .. _CONFIGURE_SCHEDULER_PRIORITY:
@ -352,7 +364,7 @@ DEFAULT CONFIGURATION:
enabled. enabled.
DESCRIPTION: DESCRIPTION:
In case this configuration option is defined, then the user must provide a In case this configuration option is defined, then the user shall provide a
scheduler algorithm to the application. scheduler algorithm to the application.
NOTES: NOTES:
@ -360,18 +372,18 @@ NOTES:
Think twice before you use it. Think twice before you use it.
RTEMS allows the application to provide its own task/thread scheduling RTEMS allows the application to provide its own task/thread scheduling
algorithm. In order to do this, one must define algorithm. In order to do this, one shall define
``CONFIGURE_SCHEDULER_USER`` to indicate the application provides its own ``CONFIGURE_SCHEDULER_USER`` to indicate the application provides its own
scheduling algorithm. If ``CONFIGURE_SCHEDULER_USER`` is defined then the scheduling algorithm. If ``CONFIGURE_SCHEDULER_USER`` is defined then the
following additional macros must be defined: following additional macros shall be defined:
- ``CONFIGURE_SCHEDULER`` must be defined to a static definition of - ``CONFIGURE_SCHEDULER`` shall be defined to a static definition of
the scheduler data structures of the user scheduler. the scheduler data structures of the user scheduler.
- ``CONFIGURE_SCHEDULER_TABLE_ENTRIES`` must be defined to a scheduler - ``CONFIGURE_SCHEDULER_TABLE_ENTRIES`` shall be defined to a scheduler
table entry initializer for the user scheduler. table entry initializer for the user scheduler.
- ``CONFIGURE_SCHEDULER_USER_PER_THREAD`` must be defined to the type of - ``CONFIGURE_SCHEDULER_USER_PER_THREAD`` shall be defined to the type of
the per-thread information of the user scheduler. the per-thread information of the user scheduler.
At this time, the mechanics and requirements for writing a new scheduler At this time, the mechanics and requirements for writing a new scheduler

View File

@ -22,28 +22,29 @@ CONFIGURE_TASK_STACK_ALLOCATOR
CONSTANT: CONSTANT:
``CONFIGURE_TASK_STACK_ALLOCATOR`` ``CONFIGURE_TASK_STACK_ALLOCATOR``
DATA TYPE: OPTION TYPE:
Function pointer. This configuration option is an initializer define.
RANGE:
Undefined or valid function pointer.
DEFAULT VALUE: DEFAULT VALUE:
The default value is ``_Workspace_Allocate``, which indicates that task The default value is ``_Workspace_Allocate``, which indicates that task
stacks will be allocated from the RTEMS Workspace. stacks will be allocated from the RTEMS Workspace.
VALUE CONSTRAINTS:
The value of this configuration option shall be defined to a valid function
pointer of the type ``void *( *allocate )( size_t )``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_TASK_STACK_ALLOCATOR`` may point to a user provided routine to The value of this configuration option initializes the stack allocator
allocate task stacks. allocate handler.
NOTES: NOTES:
A correctly configured system must configure the following to be consistent: A correctly configured system shall configure the following to be consistent:
- ``CONFIGURE_TASK_STACK_ALLOCATOR_INIT`` - :ref:`CONFIGURE_TASK_STACK_ALLOCATOR_INIT`
- ``CONFIGURE_TASK_STACK_ALLOCATOR`` - `CONFIGURE_TASK_STACK_ALLOCATOR`
- ``CONFIGURE_TASK_STACK_DEALLOCATOR`` - :ref:`CONFIGURE_TASK_STACK_DEALLOCATOR`
.. index:: CONFIGURE_TASK_STACK_ALLOCATOR_INIT .. index:: CONFIGURE_TASK_STACK_ALLOCATOR_INIT
@ -55,29 +56,28 @@ CONFIGURE_TASK_STACK_ALLOCATOR_INIT
CONSTANT: CONSTANT:
``CONFIGURE_TASK_STACK_ALLOCATOR_INIT`` ``CONFIGURE_TASK_STACK_ALLOCATOR_INIT``
DATA TYPE: OPTION TYPE:
Function pointer. This configuration option is an initializer define.
RANGE:
Undefined, NULL or valid function pointer.
DEFAULT VALUE: DEFAULT VALUE:
The default value is NULL, which indicates that task stacks will be The default value is ``NULL``.
allocated from the RTEMS Workspace.
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``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_TASK_STACK_ALLOCATOR_INIT`` configures the initialization The value of this configuration option initializes the stack allocator
method for an application or BSP specific task stack allocation initialization handler.
implementation.
NOTES: NOTES:
A correctly configured system must configure the following to be consistent: A correctly configured system shall configure the following to be consistent:
- ``CONFIGURE_TASK_STACK_ALLOCATOR_INIT`` - `CONFIGURE_TASK_STACK_ALLOCATOR_INIT`
- ``CONFIGURE_TASK_STACK_ALLOCATOR`` - :ref:`CONFIGURE_TASK_STACK_ALLOCATOR`
- ``CONFIGURE_TASK_STACK_DEALLOCATOR`` - :ref:`CONFIGURE_TASK_STACK_DEALLOCATOR`
.. index:: CONFIGURE_TASK_STACK_DEALLOCATOR .. index:: CONFIGURE_TASK_STACK_DEALLOCATOR
.. index:: task stack deallocator .. index:: task stack deallocator
@ -90,25 +90,26 @@ CONFIGURE_TASK_STACK_DEALLOCATOR
CONSTANT: CONSTANT:
``CONFIGURE_TASK_STACK_DEALLOCATOR`` ``CONFIGURE_TASK_STACK_DEALLOCATOR``
DATA TYPE: OPTION TYPE:
Function pointer. This configuration option is an initializer define.
RANGE:
Undefined or valid function pointer.
DEFAULT VALUE: DEFAULT VALUE:
The default value is ``_Workspace_Free``, which indicates that task stacks The default value is ``_Workspace_Free``, which indicates that task stacks
will be allocated from the RTEMS Workspace. will be allocated from the RTEMS Workspace.
VALUE CONSTRAINTS:
The value of this configuration option shall be defined to a valid function
pointer of the type ``void ( *deallocate )( void * )``.
DESCRIPTION: DESCRIPTION:
``CONFIGURE_TASK_STACK_DEALLOCATOR`` may point to a user provided routine The value of this configuration option initializes the stack allocator
to free task stacks. deallocate handler.
NOTES: NOTES:
A correctly configured system must configure the following to be consistent: A correctly configured system shall configure the following to be consistent:
- ``CONFIGURE_TASK_STACK_ALLOCATOR_INIT`` - :ref:`CONFIGURE_TASK_STACK_ALLOCATOR_INIT`
- ``CONFIGURE_TASK_STACK_ALLOCATOR`` - :ref:`CONFIGURE_TASK_STACK_ALLOCATOR`
- ``CONFIGURE_TASK_STACK_DEALLOCATOR`` - `CONFIGURE_TASK_STACK_DEALLOCATOR`