summaryrefslogtreecommitdiffstats
path: root/c-user/config/scheduler-general.rst
diff options
context:
space:
mode:
Diffstat (limited to 'c-user/config/scheduler-general.rst')
-rw-r--r--c-user/config/scheduler-general.rst815
1 files changed, 516 insertions, 299 deletions
diff --git a/c-user/config/scheduler-general.rst b/c-user/config/scheduler-general.rst
index d78b14a..d347d6b 100644
--- a/c-user/config/scheduler-general.rst
+++ b/c-user/config/scheduler-general.rst
@@ -1,6 +1,6 @@
.. SPDX-License-Identifier: CC-BY-SA-4.0
-.. Copyright (C) 2020, 2021 embedded brains GmbH (http://www.embedded-brains.de)
+.. Copyright (C) 2020, 2022 embedded brains GmbH & Co. KG
.. Copyright (C) 2010 Gedare Bloom
.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
@@ -49,6 +49,10 @@ configuration option.
.. Generated from spec:/acfg/if/cbs-max-servers
+.. raw:: latex
+
+ \clearpage
+
.. index:: CONFIGURE_CBS_MAXIMUM_SERVERS
.. _CONFIGURE_CBS_MAXIMUM_SERVERS:
@@ -56,38 +60,47 @@ configuration option.
CONFIGURE_CBS_MAXIMUM_SERVERS
-----------------------------
-CONSTANT:
- ``CONFIGURE_CBS_MAXIMUM_SERVERS``
+.. rubric:: CONSTANT:
+
+``CONFIGURE_CBS_MAXIMUM_SERVERS``
+
+.. rubric:: OPTION TYPE:
+
+This configuration option is an integer define.
-OPTION TYPE:
- This configuration option is an integer define.
+.. rubric:: DEFAULT VALUE:
-DEFAULT VALUE:
- The default value is :ref:`CONFIGURE_MAXIMUM_TASKS`.
+The default value is :ref:`CONFIGURE_MAXIMUM_TASKS`.
-VALUE CONSTRAINTS:
- The value of this configuration option shall satisfy all of the following
- constraints:
+.. rubric:: DESCRIPTION:
- * It shall be greater than or equal to zero.
+The value of this configuration option defines the maximum number Constant
+Bandwidth Servers that can be concurrently active.
- * It shall be less than or equal to `SIZE_MAX
- <https://en.cppreference.com/w/c/types/limits>`_.
+.. rubric:: NOTES:
- * 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.
+This configuration option is only evaluated if the configuration option
+:ref:`CONFIGURE_SCHEDULER_CBS` is defined.
-DESCRIPTION:
- The value of this configuration option defines the maximum number Constant
- Bandwidth Servers that can be concurrently active.
+.. rubric:: CONSTRAINTS:
-NOTES:
- This configuration option is only evaluated if the configuration option
- :ref:`CONFIGURE_SCHEDULER_CBS` is defined.
+The following constraints apply to this configuration option:
+
+* The value of the configuration option shall be greater than or equal to zero.
+
+* The value of the configuration option shall be less than or equal to
+ `SIZE_MAX <https://en.cppreference.com/w/c/types/limits>`_.
+
+* The value of the configuration option 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.
.. Generated from spec:/acfg/if/max-priority
+.. raw:: latex
+
+ \clearpage
+
.. index:: CONFIGURE_MAXIMUM_PRIORITY
.. index:: maximum priority
.. index:: number of priority levels
@@ -97,57 +110,67 @@ NOTES:
CONFIGURE_MAXIMUM_PRIORITY
--------------------------
-CONSTANT:
- ``CONFIGURE_MAXIMUM_PRIORITY``
+.. rubric:: CONSTANT:
+
+``CONFIGURE_MAXIMUM_PRIORITY``
+
+.. rubric:: OPTION TYPE:
+
+This configuration option is an integer define.
+
+.. rubric:: DEFAULT VALUE:
-OPTION TYPE:
- This configuration option is an integer define.
+The default value is 255.
-DEFAULT VALUE:
- The default value is 255.
+.. rubric:: DESCRIPTION:
-VALUE CONSTRAINTS:
- The value of this configuration option shall be equal to 3, 7, 31, 63, 127,
- or 255.
+For the following schedulers
-DESCRIPTION:
- For the following schedulers
+* :ref:`SchedulerPriority`, which is the default in uniprocessor
+ configurations and can be configured through the
+ :ref:`CONFIGURE_SCHEDULER_PRIORITY` configuration option,
- * :ref:`SchedulerPriority`, which is the default in uniprocessor
- configurations and can be configured through the
- :ref:`CONFIGURE_SCHEDULER_PRIORITY` configuration option,
+* :ref:`SchedulerSMPPriority` which can be configured through the
+ :ref:`CONFIGURE_SCHEDULER_PRIORITY_SMP` configuration option, and
- * :ref:`SchedulerSMPPriority` which can be configured through the
- :ref:`CONFIGURE_SCHEDULER_PRIORITY_SMP` configuration option, and
+* :ref:`SchedulerSMPPriorityAffinity` which can be configured through the
+ :ref:`CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP` configuration option
- * :ref:`SchedulerSMPPriorityAffinity` which can be configured through the
- :ref:`CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP` configuration option
+this configuration option specifies the maximum numeric priority of any task
+for these schedulers and one less that the number of priority levels for
+these schedulers. For all other schedulers provided by RTEMS, this
+configuration option has no effect.
- this configuration option specifies the maximum numeric priority of any task
- for these schedulers and one less that the number of priority levels for
- these schedulers. For all other schedulers provided by RTEMS, this
- configuration option has no effect.
+.. rubric:: NOTES:
-NOTES:
- The numerically greatest priority is the logically lowest priority in the
- system and will thus be used by the IDLE task.
+The numerically greatest priority is the logically lowest priority in the
+system and will thus be used by the IDLE task.
- Priority zero is reserved for internal use by RTEMS and is not available to
- applications.
+Priority zero is reserved for internal use by RTEMS and is not available to
+applications.
- Reducing the number of priorities through this configuration option reduces
- the amount of memory allocated by the schedulers listed above. These
- schedulers use a chain control structure per priority and this structure
- consists of three pointers. On a 32-bit architecture, the allocated memory
- is 12 bytes * (``CONFIGURE_MAXIMUM_PRIORITY`` + 1), e.g. 3072 bytes for 256
- priority levels (default), 48 bytes for 4 priority levels
- (``CONFIGURE_MAXIMUM_PRIORITY == 3``).
+Reducing the number of priorities through this configuration option reduces
+the amount of memory allocated by the schedulers listed above. These
+schedulers use a chain control structure per priority and this structure
+consists of three pointers. On a 32-bit architecture, the allocated memory
+is 12 bytes * (``CONFIGURE_MAXIMUM_PRIORITY`` + 1), e.g. 3072 bytes for 256
+priority levels (default), 48 bytes for 4 priority levels
+(``CONFIGURE_MAXIMUM_PRIORITY == 3``).
- The default value is 255, because RTEMS shall support 256 priority levels to
- be compliant with various standards. These priorities range from 0 to 255.
+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.
+
+.. rubric:: CONSTRAINTS:
+
+The value of the configuration option shall be equal to 3, 7, 31, 63, 127, or
+255.
.. Generated from spec:/acfg/if/scheduler-assignments
+.. raw:: latex
+
+ \clearpage
+
.. index:: CONFIGURE_SCHEDULER_ASSIGNMENTS
.. _CONFIGURE_SCHEDULER_ASSIGNMENTS:
@@ -155,41 +178,63 @@ NOTES:
CONFIGURE_SCHEDULER_ASSIGNMENTS
-------------------------------
-CONSTANT:
- ``CONFIGURE_SCHEDULER_ASSIGNMENTS``
+.. rubric:: CONSTANT:
-OPTION TYPE:
- This configuration option is an initializer define.
+``CONFIGURE_SCHEDULER_ASSIGNMENTS``
-DEFAULT VALUE:
- The default value of this configuration option is computed so that the
- default scheduler is assigned to each configured processor (up to 32).
+.. rubric:: OPTION TYPE:
-VALUE CONSTRAINTS:
- The value of this configuration option shall satisfy all of the following
- constraints:
+This configuration option is an initializer define.
- * It shall be a list of the following macros:
+.. rubric:: DEFAULT VALUE:
- * ``RTEMS_SCHEDULER_ASSIGN( processor_index, attributes )``
+The default value of this configuration option is computed so that the
+default scheduler is assigned to each configured processor (up to 32).
- * ``RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER``
+.. rubric:: DESCRIPTION:
- * It shall be a list of exactly :ref:`CONFIGURE_MAXIMUM_PROCESSORS`
- elements.
+The value of this configuration option is used to initialize the initial
+scheduler to processor assignments.
-DESCRIPTION:
- The value of this configuration option is used to initialize the initial
- scheduler to processor assignments.
+.. rubric:: NOTES:
-NOTES:
- This configuration option is only evaluated in SMP configurations.
+Where the system was built with SMP support enabled, this configuration
+option is evaluated, otherwise it is ignored.
- This is an advanced configuration option, see
- :ref:`ConfigurationSchedulersClustered`.
+This is an advanced configuration option, see
+:ref:`ConfigurationSchedulersClustered`.
+
+.. rubric:: CONSTRAINTS:
+
+The following constraints apply to this configuration option:
+
+* The value of the configuration option shall be a list of the following
+ macros:
+
+ * ``RTEMS_SCHEDULER_ASSIGN( scheduler_index, attributes )``
+
+ * ``RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER``
+
+ The ``scheduler_index`` macro parameter shall be a valid index of the
+ scheduler table defined by the :ref:`CONFIGURE_SCHEDULER_TABLE_ENTRIES`
+ configuration option.
+
+ The ``attributes`` macro parameter shall be set to exactly one of the
+ following constants:
+
+ * ``RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY``
+
+ * ``RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL``
+
+* The value of the configuration option shall be a list of exactly
+ :ref:`CONFIGURE_MAXIMUM_PROCESSORS` elements.
.. Generated from spec:/acfg/if/scheduler-cbs
+.. raw:: latex
+
+ \clearpage
+
.. index:: CONFIGURE_SCHEDULER_CBS
.. _CONFIGURE_SCHEDULER_CBS:
@@ -197,30 +242,39 @@ NOTES:
CONFIGURE_SCHEDULER_CBS
-----------------------
-CONSTANT:
- ``CONFIGURE_SCHEDULER_CBS``
+.. rubric:: CONSTANT:
+
+``CONFIGURE_SCHEDULER_CBS``
+
+.. rubric:: OPTION TYPE:
+
+This configuration option is a boolean feature define.
+
+.. rubric:: DEFAULT CONFIGURATION:
+
+If this configuration option is undefined, then the described feature is not
+enabled.
-OPTION TYPE:
- This configuration option is a boolean feature define.
+.. rubric:: DESCRIPTION:
-DEFAULT CONFIGURATION:
- If this configuration option is undefined, then the described feature is not
- enabled.
+In case this configuration option is defined, then the
+:ref:`SchedulerCBS`
+algorithm is made available to the application.
-DESCRIPTION:
- In case this configuration option is defined, then the
- :ref:`SchedulerCBS`
- algorithm is made available to the application.
+.. rubric:: NOTES:
-NOTES:
- This scheduler configuration option is an advanced configuration option.
- Think twice before you use it.
+This scheduler configuration option is an advanced configuration option.
+Think twice before you use it.
- In case no explicit :ref:`ConfigurationSchedulersClustered`
- is present, then it is used as the scheduler for exactly one processor.
+In case no explicit :ref:`ConfigurationSchedulersClustered`
+is present, then it is used as the scheduler for exactly one processor.
.. Generated from spec:/acfg/if/scheduler-edf
+.. raw:: latex
+
+ \clearpage
+
.. index:: CONFIGURE_SCHEDULER_EDF
.. _CONFIGURE_SCHEDULER_EDF:
@@ -228,30 +282,39 @@ NOTES:
CONFIGURE_SCHEDULER_EDF
-----------------------
-CONSTANT:
- ``CONFIGURE_SCHEDULER_EDF``
+.. rubric:: CONSTANT:
+
+``CONFIGURE_SCHEDULER_EDF``
+
+.. rubric:: OPTION TYPE:
+
+This configuration option is a boolean feature define.
-OPTION TYPE:
- This configuration option is a boolean feature define.
+.. rubric:: DEFAULT CONFIGURATION:
-DEFAULT CONFIGURATION:
- If this configuration option is undefined, then the described feature is not
- enabled.
+If this configuration option is undefined, then the described feature is not
+enabled.
-DESCRIPTION:
- In case this configuration option is defined, then the
- :ref:`SchedulerEDF`
- algorithm is made available to the application.
+.. rubric:: DESCRIPTION:
-NOTES:
- This scheduler configuration option is an advanced configuration option.
- Think twice before you use it.
+In case this configuration option is defined, then the
+:ref:`SchedulerEDF`
+algorithm is made available to the application.
- In case no explicit :ref:`ConfigurationSchedulersClustered`
- is present, then it is used as the scheduler for exactly one processor.
+.. rubric:: NOTES:
+
+This scheduler configuration option is an advanced configuration option.
+Think twice before you use it.
+
+In case no explicit :ref:`ConfigurationSchedulersClustered`
+is present, then it is used as the scheduler for exactly one processor.
.. Generated from spec:/acfg/if/scheduler-edf-smp
+.. raw:: latex
+
+ \clearpage
+
.. index:: CONFIGURE_SCHEDULER_EDF_SMP
.. _CONFIGURE_SCHEDULER_EDF_SMP:
@@ -259,37 +322,46 @@ NOTES:
CONFIGURE_SCHEDULER_EDF_SMP
---------------------------
-CONSTANT:
- ``CONFIGURE_SCHEDULER_EDF_SMP``
+.. rubric:: CONSTANT:
-OPTION TYPE:
- This configuration option is a boolean feature define.
+``CONFIGURE_SCHEDULER_EDF_SMP``
-DEFAULT CONFIGURATION:
- If this configuration option is undefined, then the described feature is not
- enabled.
+.. rubric:: OPTION TYPE:
-DESCRIPTION:
- In case this configuration option is defined, then the
- :ref:`SchedulerSMPEDF`
- algorithm is made available to the application.
+This configuration option is a boolean feature define.
-NOTES:
- This scheduler configuration option is an advanced configuration option.
- Think twice before you use it.
+.. rubric:: DEFAULT CONFIGURATION:
- This scheduler algorithm is only available when RTEMS is built with SMP
- support enabled.
+If this configuration option is undefined, then the described feature is not
+enabled.
- In case no explicit :ref:`ConfigurationSchedulersClustered`
- is present, then it is used as the scheduler for up to 32 processors.
+.. rubric:: DESCRIPTION:
- This scheduler algorithm is the default in SMP configurations if
- :ref:`CONFIGURE_MAXIMUM_PROCESSORS` is
- greater than one.
+In case this configuration option is defined, then the
+:ref:`SchedulerSMPEDF`
+algorithm is made available to the application.
+
+.. rubric:: NOTES:
+
+This scheduler configuration option is an advanced configuration option.
+Think twice before you use it.
+
+This scheduler algorithm is only available when RTEMS is built with SMP
+support enabled.
+
+In case no explicit :ref:`ConfigurationSchedulersClustered`
+is present, then it is used as the scheduler for up to 32 processors.
+
+This scheduler algorithm is the default in SMP configurations if
+:ref:`CONFIGURE_MAXIMUM_PROCESSORS` is
+greater than one.
.. Generated from spec:/acfg/if/scheduler-name
+.. raw:: latex
+
+ \clearpage
+
.. index:: CONFIGURE_SCHEDULER_NAME
.. _CONFIGURE_SCHEDULER_NAME:
@@ -297,49 +369,59 @@ NOTES:
CONFIGURE_SCHEDULER_NAME
------------------------
-CONSTANT:
- ``CONFIGURE_SCHEDULER_NAME``
+.. rubric:: CONSTANT:
+
+``CONFIGURE_SCHEDULER_NAME``
-OPTION TYPE:
- This configuration option is an integer define.
+.. rubric:: OPTION TYPE:
-DEFAULT VALUE:
- The default value is
+This configuration option is an integer define.
- * ``"MEDF"`` for the :ref:`SchedulerSMPEDF`,
+.. rubric:: DEFAULT VALUE:
- * ``"MPA "`` for the :ref:`SchedulerSMPPriorityAffinity`,
+The default value is
- * ``"MPD "`` for the :ref:`SchedulerSMPPriority`,
+* ``"MEDF"`` for the :ref:`SchedulerSMPEDF`,
- * ``"MPS "`` for the :ref:`SchedulerSMPPrioritySimple`,
+* ``"MPA "`` for the :ref:`SchedulerSMPPriorityAffinity`,
- * ``"UCBS"`` for the :ref:`SchedulerCBS`,
+* ``"MPD "`` for the :ref:`SchedulerSMPPriority`,
- * ``"UEDF"`` for the :ref:`SchedulerEDF`,
+* ``"MPS "`` for the :ref:`SchedulerSMPPrioritySimple`,
- * ``"UPD "`` for the :ref:`SchedulerPriority`, and
+* ``"UCBS"`` for the :ref:`SchedulerCBS`,
- * ``"UPS "`` for the :ref:`SchedulerPrioritySimple`.
+* ``"UEDF"`` for the :ref:`SchedulerEDF`,
-VALUE CONSTRAINTS:
- The value of this configuration option shall be convertible to an integer
- of type :c:type:`rtems_name`.
+* ``"UPD "`` for the :ref:`SchedulerPriority`, and
-DESCRIPTION:
- The value of this configuration option defines the name of the default
- scheduler.
+* ``"UPS "`` for the :ref:`SchedulerPrioritySimple`.
-NOTES:
- This scheduler configuration option is an advanced configuration option.
- Think twice before you use it.
+.. rubric:: DESCRIPTION:
- Schedulers can be identified via :c:func:`rtems_scheduler_ident`.
+The value of this configuration option defines the name of the default
+scheduler.
- Use :c:func:`rtems_build_name` to define the scheduler name.
+.. rubric:: NOTES:
+
+This scheduler configuration option is an advanced configuration option.
+Think twice before you use it.
+
+Schedulers can be identified via :ref:`InterfaceRtemsSchedulerIdent`.
+
+Use :ref:`InterfaceRtemsBuildName` to define the scheduler name.
+
+.. rubric:: CONSTRAINTS:
+
+The value of the configuration option shall be convertible to an integer of
+type :c:type:`rtems_name`.
.. Generated from spec:/acfg/if/scheduler-priority
+.. raw:: latex
+
+ \clearpage
+
.. index:: CONFIGURE_SCHEDULER_PRIORITY
.. _CONFIGURE_SCHEDULER_PRIORITY:
@@ -347,37 +429,46 @@ NOTES:
CONFIGURE_SCHEDULER_PRIORITY
----------------------------
-CONSTANT:
- ``CONFIGURE_SCHEDULER_PRIORITY``
+.. rubric:: CONSTANT:
+
+``CONFIGURE_SCHEDULER_PRIORITY``
+
+.. rubric:: OPTION TYPE:
-OPTION TYPE:
- This configuration option is a boolean feature define.
+This configuration option is a boolean feature define.
-DEFAULT CONFIGURATION:
- If this configuration option is undefined, then the described feature is not
- enabled.
+.. rubric:: DEFAULT CONFIGURATION:
-DESCRIPTION:
- In case this configuration option is defined, then the
- :ref:`SchedulerPriority`
- algorithm is made available to the application.
+If this configuration option is undefined, then the described feature is not
+enabled.
-NOTES:
- This scheduler configuration option is an advanced configuration option.
- Think twice before you use it.
+.. rubric:: DESCRIPTION:
- In case no explicit :ref:`ConfigurationSchedulersClustered`
- is present, then it is used as the scheduler for exactly one processor.
+In case this configuration option is defined, then the
+:ref:`SchedulerPriority`
+algorithm is made available to the application.
- This scheduler algorithm is the default when
- :ref:`CONFIGURE_MAXIMUM_PROCESSORS` is
- exactly one.
+.. rubric:: NOTES:
- The memory allocated for this scheduler depends on the
- :ref:`CONFIGURE_MAXIMUM_PRIORITY` configuration option.
+This scheduler configuration option is an advanced configuration option.
+Think twice before you use it.
+
+In case no explicit :ref:`ConfigurationSchedulersClustered`
+is present, then it is used as the scheduler for exactly one processor.
+
+This scheduler algorithm is the default when
+:ref:`CONFIGURE_MAXIMUM_PROCESSORS` is
+exactly one.
+
+The memory allocated for this scheduler depends on the
+:ref:`CONFIGURE_MAXIMUM_PRIORITY` configuration option.
.. Generated from spec:/acfg/if/scheduler-priority-affinity-smp
+.. raw:: latex
+
+ \clearpage
+
.. index:: CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP
.. _CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP:
@@ -385,36 +476,45 @@ NOTES:
CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP
-----------------------------------------
-CONSTANT:
- ``CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP``
+.. rubric:: CONSTANT:
+
+``CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP``
+
+.. rubric:: OPTION TYPE:
+
+This configuration option is a boolean feature define.
-OPTION TYPE:
- This configuration option is a boolean feature define.
+.. rubric:: DEFAULT CONFIGURATION:
-DEFAULT CONFIGURATION:
- If this configuration option is undefined, then the described feature is not
- enabled.
+If this configuration option is undefined, then the described feature is not
+enabled.
-DESCRIPTION:
- In case this configuration option is defined, then the
- :ref:`SchedulerSMPPriorityAffinity`
- algorithm is made available to the application.
+.. rubric:: DESCRIPTION:
-NOTES:
- This scheduler configuration option is an advanced configuration option.
- Think twice before you use it.
+In case this configuration option is defined, then the
+:ref:`SchedulerSMPPriorityAffinity`
+algorithm is made available to the application.
- This scheduler algorithm is only available when RTEMS is built with SMP
- support enabled.
+.. rubric:: NOTES:
- In case no explicit :ref:`ConfigurationSchedulersClustered`
- is present, then it is used as the scheduler for up to 32 processors.
+This scheduler configuration option is an advanced configuration option.
+Think twice before you use it.
- The memory allocated for this scheduler depends on the
- :ref:`CONFIGURE_MAXIMUM_PRIORITY` configuration option.
+This scheduler algorithm is only available when RTEMS is built with SMP
+support enabled.
+
+In case no explicit :ref:`ConfigurationSchedulersClustered`
+is present, then it is used as the scheduler for up to 32 processors.
+
+The memory allocated for this scheduler depends on the
+:ref:`CONFIGURE_MAXIMUM_PRIORITY` configuration option.
.. Generated from spec:/acfg/if/scheduler-priority-smp
+.. raw:: latex
+
+ \clearpage
+
.. index:: CONFIGURE_SCHEDULER_PRIORITY_SMP
.. _CONFIGURE_SCHEDULER_PRIORITY_SMP:
@@ -422,36 +522,45 @@ NOTES:
CONFIGURE_SCHEDULER_PRIORITY_SMP
--------------------------------
-CONSTANT:
- ``CONFIGURE_SCHEDULER_PRIORITY_SMP``
+.. rubric:: CONSTANT:
+
+``CONFIGURE_SCHEDULER_PRIORITY_SMP``
+
+.. rubric:: OPTION TYPE:
+
+This configuration option is a boolean feature define.
+
+.. rubric:: DEFAULT CONFIGURATION:
+
+If this configuration option is undefined, then the described feature is not
+enabled.
-OPTION TYPE:
- This configuration option is a boolean feature define.
+.. rubric:: DESCRIPTION:
-DEFAULT CONFIGURATION:
- If this configuration option is undefined, then the described feature is not
- enabled.
+In case this configuration option is defined, then the
+:ref:`SchedulerSMPPriority`
+algorithm is made available to the application.
-DESCRIPTION:
- In case this configuration option is defined, then the
- :ref:`SchedulerSMPPriority`
- algorithm is made available to the application.
+.. rubric:: NOTES:
-NOTES:
- This scheduler configuration option is an advanced configuration option.
- Think twice before you use it.
+This scheduler configuration option is an advanced configuration option.
+Think twice before you use it.
- This scheduler algorithm is only available when RTEMS is built with SMP
- support enabled.
+This scheduler algorithm is only available when RTEMS is built with SMP
+support enabled.
- In case no explicit :ref:`ConfigurationSchedulersClustered`
- is present, then it is used as the scheduler for up to 32 processors.
+In case no explicit :ref:`ConfigurationSchedulersClustered`
+is present, then it is used as the scheduler for up to 32 processors.
- The memory allocated for this scheduler depends on the
- :ref:`CONFIGURE_MAXIMUM_PRIORITY` configuration option.
+The memory allocated for this scheduler depends on the
+:ref:`CONFIGURE_MAXIMUM_PRIORITY` configuration option.
.. Generated from spec:/acfg/if/scheduler-simple
+.. raw:: latex
+
+ \clearpage
+
.. index:: CONFIGURE_SCHEDULER_SIMPLE
.. _CONFIGURE_SCHEDULER_SIMPLE:
@@ -459,30 +568,39 @@ NOTES:
CONFIGURE_SCHEDULER_SIMPLE
--------------------------
-CONSTANT:
- ``CONFIGURE_SCHEDULER_SIMPLE``
+.. rubric:: CONSTANT:
+
+``CONFIGURE_SCHEDULER_SIMPLE``
+
+.. rubric:: OPTION TYPE:
+
+This configuration option is a boolean feature define.
-OPTION TYPE:
- This configuration option is a boolean feature define.
+.. rubric:: DEFAULT CONFIGURATION:
-DEFAULT CONFIGURATION:
- If this configuration option is undefined, then the described feature is not
- enabled.
+If this configuration option is undefined, then the described feature is not
+enabled.
-DESCRIPTION:
- In case this configuration option is defined, then the
- :ref:`SchedulerPrioritySimple`
- algorithm is made available to the application.
+.. rubric:: DESCRIPTION:
-NOTES:
- This scheduler configuration option is an advanced configuration option.
- Think twice before you use it.
+In case this configuration option is defined, then the
+:ref:`SchedulerPrioritySimple`
+algorithm is made available to the application.
- In case no explicit :ref:`ConfigurationSchedulersClustered`
- is present, then it is used as the scheduler for exactly one processor.
+.. rubric:: NOTES:
+
+This scheduler configuration option is an advanced configuration option.
+Think twice before you use it.
+
+In case no explicit :ref:`ConfigurationSchedulersClustered`
+is present, then it is used as the scheduler for exactly one processor.
.. Generated from spec:/acfg/if/scheduler-simple-smp
+.. raw:: latex
+
+ \clearpage
+
.. index:: CONFIGURE_SCHEDULER_SIMPLE_SMP
.. _CONFIGURE_SCHEDULER_SIMPLE_SMP:
@@ -490,33 +608,42 @@ NOTES:
CONFIGURE_SCHEDULER_SIMPLE_SMP
------------------------------
-CONSTANT:
- ``CONFIGURE_SCHEDULER_SIMPLE_SMP``
+.. rubric:: CONSTANT:
-OPTION TYPE:
- This configuration option is a boolean feature define.
+``CONFIGURE_SCHEDULER_SIMPLE_SMP``
-DEFAULT CONFIGURATION:
- If this configuration option is undefined, then the described feature is not
- enabled.
+.. rubric:: OPTION TYPE:
-DESCRIPTION:
- In case this configuration option is defined, then the
- :ref:`SchedulerSMPPrioritySimple`
- algorithm is made available to the application.
+This configuration option is a boolean feature define.
-NOTES:
- This scheduler configuration option is an advanced configuration option.
- Think twice before you use it.
+.. rubric:: DEFAULT CONFIGURATION:
- This scheduler algorithm is only available when RTEMS is built with SMP
- support enabled.
+If this configuration option is undefined, then the described feature is not
+enabled.
- In case no explicit :ref:`ConfigurationSchedulersClustered`
- is present, then it is used as the scheduler for up to 32 processors.
+.. rubric:: DESCRIPTION:
+
+In case this configuration option is defined, then the
+:ref:`SchedulerSMPPrioritySimple`
+algorithm is made available to the application.
+
+.. rubric:: NOTES:
+
+This scheduler configuration option is an advanced configuration option.
+Think twice before you use it.
+
+This scheduler algorithm is only available when RTEMS is built with SMP
+support enabled.
+
+In case no explicit :ref:`ConfigurationSchedulersClustered`
+is present, then it is used as the scheduler for up to 32 processors.
.. Generated from spec:/acfg/if/scheduler-strong-apa
+.. raw:: latex
+
+ \clearpage
+
.. index:: CONFIGURE_SCHEDULER_STRONG_APA
.. _CONFIGURE_SCHEDULER_STRONG_APA:
@@ -524,31 +651,115 @@ NOTES:
CONFIGURE_SCHEDULER_STRONG_APA
------------------------------
-CONSTANT:
- ``CONFIGURE_SCHEDULER_STRONG_APA``
+.. rubric:: CONSTANT:
+
+``CONFIGURE_SCHEDULER_STRONG_APA``
+
+.. rubric:: OPTION TYPE:
+
+This configuration option is a boolean feature define.
+
+.. rubric:: DEFAULT CONFIGURATION:
+
+If this configuration option is undefined, then the described feature is not
+enabled.
+
+.. rubric:: DESCRIPTION:
+
+In case this configuration option is defined, then the Strong APA algorithm
+is made available to the application.
+
+.. rubric:: NOTES:
+
+This scheduler configuration option is an advanced configuration option.
+Think twice before you use it.
+
+This scheduler algorithm is only available when RTEMS is built with SMP
+support enabled.
-OPTION TYPE:
- This configuration option is a boolean feature define.
+This scheduler algorithm is not correctly implemented. Do not use it.
-DEFAULT CONFIGURATION:
- If this configuration option is undefined, then the described feature is not
- enabled.
+.. Generated from spec:/acfg/if/scheduler-table-entries
-DESCRIPTION:
- In case this configuration option is defined, then the Strong APA algorithm
- is made available to the application.
+.. raw:: latex
-NOTES:
- This scheduler configuration option is an advanced configuration option.
- Think twice before you use it.
+ \clearpage
- This scheduler algorithm is only available when RTEMS is built with SMP
- support enabled.
+.. index:: CONFIGURE_SCHEDULER_TABLE_ENTRIES
- This scheduler algorithm is not correctly implemented. Do not use it.
+.. _CONFIGURE_SCHEDULER_TABLE_ENTRIES:
+
+CONFIGURE_SCHEDULER_TABLE_ENTRIES
+---------------------------------
+
+.. rubric:: CONSTANT:
+
+``CONFIGURE_SCHEDULER_TABLE_ENTRIES``
+
+.. rubric:: OPTION TYPE:
+
+This configuration option is an initializer define.
+
+.. rubric:: DEFAULT VALUE:
+
+The default value of this configuration option is the definition of exactly
+one table entry for the configured scheduler.
+
+.. rubric:: DESCRIPTION:
+
+The value of this configuration option is used to initialize the table of
+configured schedulers.
+
+.. rubric:: NOTES:
+
+Schedulers registered in the scheduler table by this configuration option are
+available to the application. The scheduler table entry index defines the
+index of the scheduler.
+
+This is an advanced configuration option, see
+:ref:`ConfigurationSchedulersClustered`.
+
+.. rubric:: CONSTRAINTS:
+
+The following constraints apply to this configuration option:
+
+* The value of the configuration option shall be a list of the following
+ macros:
+
+ * ``RTEMS_SCHEDULER_TABLE_CBS( name, obj_name )``
+
+ * ``RTEMS_SCHEDULER_TABLE_EDF( name, obj_name )``
+
+ * ``RTEMS_SCHEDULER_TABLE_EDF_SMP( name, obj_name )``
+
+ * ``RTEMS_SCHEDULER_TABLE_PRIORITY_AFFINITY_SMP( name, obj_name )``
+
+ * ``RTEMS_SCHEDULER_TABLE_PRIORITY( name, obj_name )``
+
+ * ``RTEMS_SCHEDULER_TABLE_PRIORITY_SMP( name, obj_name )``
+
+ * ``RTEMS_SCHEDULER_TABLE_SIMPLE( name, obj_name )``
+
+ * ``RTEMS_SCHEDULER_TABLE_SIMPLE_SMP( name, obj_name )``
+
+ * ``RTEMS_SCHEDULER_TABLE_STRONG_APA( name, obj_name )``
+
+ The ``name`` macro parameter shall be the name associated with the scheduler
+ data structures, see :ref:`ConfigurationSchedulersClustered`.
+
+ The ``obj_name`` macro parameter shall be the scheduler object name. It is
+ recommended to define the scheduler object name through
+ :ref:`InterfaceRtemsBuildName`.
+
+* Where the system was build with SMP support enabled, the table shall have one
+ or more entries, otherwise it shall have exactly one entry.
.. Generated from spec:/acfg/if/scheduler-user
+.. raw:: latex
+
+ \clearpage
+
.. index:: CONFIGURE_SCHEDULER_USER
.. _CONFIGURE_SCHEDULER_USER:
@@ -556,42 +767,48 @@ NOTES:
CONFIGURE_SCHEDULER_USER
------------------------
-CONSTANT:
- ``CONFIGURE_SCHEDULER_USER``
+.. rubric:: CONSTANT:
+
+``CONFIGURE_SCHEDULER_USER``
+
+.. rubric:: OPTION TYPE:
+
+This configuration option is a boolean feature define.
+
+.. rubric:: DEFAULT CONFIGURATION:
+
+If this configuration option is undefined, then the described feature is not
+enabled.
-OPTION TYPE:
- This configuration option is a boolean feature define.
+.. rubric:: DESCRIPTION:
-DEFAULT CONFIGURATION:
- If this configuration option is undefined, then the described feature is not
- enabled.
+In case this configuration option is defined, then the user shall provide a
+scheduler algorithm to the application.
-DESCRIPTION:
- In case this configuration option is defined, then the user shall provide a
- scheduler algorithm to the application.
+.. rubric:: NOTES:
-NOTES:
- This scheduler configuration option is an advanced configuration option.
- Think twice before you use it.
+This scheduler configuration option is an advanced configuration option.
+Think twice before you use it.
- RTEMS allows the application to provide its own task/thread scheduling
- algorithm. In order to do this, one shall define
- ``CONFIGURE_SCHEDULER_USER`` to indicate the application provides its own
- scheduling algorithm. If ``CONFIGURE_SCHEDULER_USER`` is defined then the
- following additional macros shall be defined:
+RTEMS allows the application to provide its own task/thread scheduling
+algorithm. In order to do this, one shall define
+``CONFIGURE_SCHEDULER_USER`` to indicate the application provides its own
+scheduling algorithm. If ``CONFIGURE_SCHEDULER_USER`` is defined then the
+following additional macros shall be defined:
- * ``CONFIGURE_SCHEDULER`` shall be defined to a static definition of
- the scheduler data structures of the user scheduler.
+* ``CONFIGURE_SCHEDULER`` shall be defined to a static definition of
+ the scheduler data structures of the user scheduler.
- * ``CONFIGURE_SCHEDULER_TABLE_ENTRIES`` shall be defined to a scheduler
- table entry initializer for the user scheduler.
+* ``CONFIGURE_SCHEDULER_TABLE_ENTRIES`` shall be defined to a scheduler
+ table entry initializer for the user scheduler.
- * ``CONFIGURE_SCHEDULER_USER_PER_THREAD`` shall be defined to the type of
- the per-thread information of the user scheduler.
+* ``CONFIGURE_SCHEDULER_USER_PER_THREAD`` shall be defined to the type of
+ the per-thread information of the user scheduler.
- At this time, the mechanics and requirements for writing a new scheduler
- are evolving and not fully documented. It is recommended that you look at
- the existing Deterministic Priority Scheduler in
- ``cpukit/score/src/schedulerpriority*.c`` for guidance. For guidance on
- the configuration macros, please examine ``cpukit/sapi/include/confdefs.h``
- for how these are defined for the Deterministic Priority Scheduler.
+At this time, the mechanics and requirements for writing a new scheduler
+are evolving and not fully documented. It is recommended that you look at
+the existing Deterministic Priority Scheduler in
+``cpukit/score/src/schedulerpriority*.c`` for guidance. For guidance on
+the configuration macros, please examine
+``cpukit/include/rtems/confdefs/scheduler.h`` for how these are defined for
+the Deterministic Priority Scheduler.