diff options
authorSebastian Huber <>2017-02-03 12:54:44 +0100
committerSebastian Huber <>2017-02-03 12:54:44 +0100
commit1f3c22e7868b14482df287656e602e17ccac4adc (patch)
parentb2e56c5abe2632aa063a1b4968e22fd1b40edb04 (diff)
c-user: Update SMP introduction
3 files changed, 48 insertions, 50 deletions
diff --git a/c-user/configuring_a_system.rst b/c-user/configuring_a_system.rst
index 7f69724..7837901 100644
--- a/c-user/configuring_a_system.rst
+++ b/c-user/configuring_a_system.rst
@@ -4132,40 +4132,9 @@ SMP Specific Configuration Parameters
When RTEMS is configured to support SMP target systems, there are other
configuration parameters which apply.
-.. COMMENT: XXX - add -enable-smp
-.. _Enable SMP Support for Applications:
-Enable SMP Support for Applications
- Boolean feature macro.
- Defined or undefined.
- This is not defined by default.
- ``CONFIGURE_SMP_APPLICATION`` must be defined to enable SMP support for the
- application.
- This define may go away in the future in case all RTEMS components are SMP
- ready. This configuration define is ignored on uni-processor
- configurations.
-.. _Specify Maximum Processors in SMP System:
Specify Maximum Processors in SMP System
diff --git a/c-user/glossary.rst b/c-user/glossary.rst
index 2fa7e98..949c982 100644
--- a/c-user/glossary.rst
+++ b/c-user/glossary.rst
@@ -60,10 +60,8 @@ Glossary
To simultaneously send a message to a logical set of destinations.
- see Board Support Package.
Board Support Package
A collection of device initialization and control routines specific to a
particular type of board or collection of boards.
diff --git a/c-user/symmetric_multiprocessing_services.rst b/c-user/symmetric_multiprocessing_services.rst
index 0065f0c..80e3f8c 100644
--- a/c-user/symmetric_multiprocessing_services.rst
+++ b/c-user/symmetric_multiprocessing_services.rst
@@ -10,31 +10,27 @@ Symmetric Multiprocessing (SMP)
-The Symmetric Multiprocessing (SMP) support of the RTEMS 4.11.0 and later is available
+The Symmetric Multiprocessing (SMP) support of the RTEMS 4.12 is available on
-- ARM,
+- ARMv7-A,
- PowerPC, and
-It must be explicitly enabled via the ``--enable-smp`` configure command line
-option. To enable SMP in the application configuration see :ref:`Enable SMP
-Support for Applications`. The default scheduler for SMP applications supports
-up to 32 processors and is a global fixed priority scheduler, see also
-:ref:`Configuring Clustered Schedulers`. For example applications
.. warning::
- The SMP support in the release of RTEMS is a work in progress. Before you
- start using this RTEMS version for SMP ask on the RTEMS mailing list.
+ The SMP support must be explicitly enabled via the ``--enable-smp``
+ configure command line option for the :term:`BSP` build.
-This chapter describes the services related to Symmetric Multiprocessing
-provided by RTEMS.
+RTEMS is supposed to be a real-time operating system. What does this mean in
+the context of SMP? The RTEMS interpretation of real-time on SMP is the
+support for :ref:`ClusteredScheduling` with priority based schedulers and
+adequate locking protocols. One aim is to enable a schedulability analysis
+under the sporadic task model :cite:`Brandenburg:2011:SL`
-The application level services currently provided are:
+The directives provided by the SMP support are:
- rtems_get_processor_count_ - Get processor count
@@ -43,6 +39,39 @@ The application level services currently provided are:
+Application Configuration
+By default, the maximum processor count is set to one in the application
+configuration. To enable SMP, the application configuration option
+be defined to a value greater than one. It is recommended to use the smallest
+value suitable for the application in order to safe memory. Each processor
+needs an idle thread and interrupt stack for example.
+The default scheduler for SMP applications supports up to 32 processors and is
+a global fixed priority scheduler, see also :ref:`Configuring Clustered
+The following compile-time test can be used to check if the SMP support is
+available or not.
+.. code-block:: c
+ #include <rtems.h>
+ #ifdef RTEMS_SMP
+ #warning "SMP support is enabled"
+ #else
+ #warning "SMP support is disabled"
+ #endif
+For example applications see `testsuites/smptests
Uniprocessor versus SMP Parallelism
@@ -140,6 +169,8 @@ to another. There are four reasons why tasks migrate in RTEMS.
Task migration should be avoided so that the working set of a task can stay on
the most local cache level.
+.. _ClusteredScheduling:
Clustered Scheduling