summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2017-02-03 12:54:44 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-02-03 12:54:44 +0100
commit1f3c22e7868b14482df287656e602e17ccac4adc (patch)
tree8a1644e4181f41251999543b10f7534d38e7c6f4
parentb2e56c5abe2632aa063a1b4968e22fd1b40edb04 (diff)
downloadrtems-docs-1f3c22e7868b14482df287656e602e17ccac4adc.tar.bz2
c-user: Update SMP introduction
-rw-r--r--c-user/configuring_a_system.rst33
-rw-r--r--c-user/glossary.rst4
-rw-r--r--c-user/symmetric_multiprocessing_services.rst61
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
-
-.. COMMENT: === CONFIGURE_SMP_APPLICATION ===
-
-.. _Enable SMP Support for Applications:
-
-Enable SMP Support for Applications
------------------------------------
-.. index:: CONFIGURE_SMP_APPLICATION
-
-CONSTANT:
- ``CONFIGURE_SMP_APPLICATION``
-
-DATA TYPE:
- Boolean feature macro.
-
-RANGE:
- Defined or undefined.
-
-DEFAULT VALUE:
- This is not defined by default.
-
-DESCRIPTION:
- ``CONFIGURE_SMP_APPLICATION`` must be defined to enable SMP support for the
- application.
-
-NOTES:
- 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.
-
.. COMMENT: === CONFIGURE_SMP_MAXIMUM_PROCESSORS ===
-.. _Specify Maximum Processors in SMP System:
+.. _CONFIGURE_SMP_MAXIMUM_PROCESSORS:
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
broadcast
To simultaneously send a message to a logical set of destinations.
- BSP
- see Board Support Package.
-
Board Support Package
+ BSP
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)
Introduction
============
-The Symmetric Multiprocessing (SMP) support of the RTEMS 4.11.0 and later is available
-on
+The Symmetric Multiprocessing (SMP) support of the RTEMS 4.12 is available on
-- ARM,
+- ARMv7-A,
- PowerPC, and
- SPARC.
-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
-see:file:`testsuites/smptests`.
-
.. 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`
+:cite:`Burns:2013:MrsP`.
-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:
Background
==========
+Application Configuration
+-------------------------
+
+By default, the maximum processor count is set to one in the application
+configuration. To enable SMP, the application configuration option
+:ref:`CONFIGURE_SMP_MAXIMUM_PROCESSORS <CONFIGURE_SMP_MAXIMUM_PROCESSORS>` must
+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
+Schedulers`.
+
+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
+
+Examples
+--------
+
+For example applications see `testsuites/smptests
+<https://git.rtems.org/rtems/tree/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
--------------------