2020-04-02 09:46:01 +02:00

238 lines
6.7 KiB
ReStructuredText

.. 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)
Multiprocessing Configuration
=============================
This section describes multiprocessing related configuration options. The
options are only used if RTEMS was built with the ``--enable-multiprocessing``
build configuration option. Additionally, this class of configuration options
are only applicable if the configuration option :ref:`CONFIGURE_MP_APPLICATION`
is defined. The multiprocessing (MPCI) support must not be confused with the
SMP support.
.. index:: CONFIGURE_MP_APPLICATION
.. _CONFIGURE_MP_APPLICATION:
CONFIGURE_MP_APPLICATION
------------------------
CONSTANT:
``CONFIGURE_MP_APPLICATION``
OPTION TYPE:
This configuration option is a boolean feature define.
DEFAULT CONFIGURATION:
If this configuration option is undefined, then the multiprocessing services
are not initialized.
DESCRIPTION:
This configuration option is defined to indicate that the application intends
to be part of a multiprocessing configuration. Additional configuration
options are assumed to be provided.
NOTES:
This configuration option shall be undefined if the multiprocessing support
is not enabled (e.g. RTEMS was built without the ``--enable-multiprocessing``
build configuration option). Otherwise a compile time error in the
configuration file will occur.
.. index:: CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
.. _CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK:
CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
-----------------------------------------
CONSTANT:
``CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK``
OPTION TYPE:
This configuration option is an integer define.
DEFAULT VALUE:
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 ``UINT32_MAX``.
* It shall be small enough so that the
MPCI receive server stack area calculation carried out by
``<rtems/confdefs.h>`` does not overflow an integer of type ``size_t``.
DESCRIPTION:
The value of this configuration option defines the number of bytes the
applications wishes to add to the MPCI task stack on top of
:ref:`CONFIGURE_MINIMUM_TASK_STACK_SIZE`.
NOTES:
This configuration option is only evaluated if
:ref:`CONFIGURE_MP_APPLICATION` is defined.
.. index:: CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
.. _CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS:
CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
-----------------------------------
CONSTANT:
``CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS``
OPTION TYPE:
This configuration option is an integer define.
DEFAULT VALUE:
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:
The value of this configuration option defines the maximum number of
concurrently active global objects in a multiprocessor system.
NOTES:
This value corresponds to the total number of objects which can be created
with the ``RTEMS_GLOBAL`` attribute.
This configuration option is only evaluated if
:ref:`CONFIGURE_MP_APPLICATION` is defined.
.. index:: CONFIGURE_MP_MAXIMUM_NODES
.. _CONFIGURE_MP_MAXIMUM_NODES:
CONFIGURE_MP_MAXIMUM_NODES
--------------------------
CONSTANT:
``CONFIGURE_MP_MAXIMUM_NODES``
OPTION TYPE:
This configuration option is an integer define.
DEFAULT VALUE:
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:
The value of this configuration option defines the maximum number of nodes in
a multiprocessor system.
NOTES:
This configuration option is only evaluated if
:ref:`CONFIGURE_MP_APPLICATION` is defined.
.. index:: CONFIGURE_MP_MAXIMUM_PROXIES
.. _CONFIGURE_MP_MAXIMUM_PROXIES:
CONFIGURE_MP_MAXIMUM_PROXIES
----------------------------
CONSTANT:
``CONFIGURE_MP_MAXIMUM_PROXIES``
OPTION TYPE:
This configuration option is an integer define.
DEFAULT VALUE:
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:
The value of this configuration option defines the maximum number of
concurrently active thread/task proxies on this node in a multiprocessor
system.
NOTES:
Since a proxy is used to represent a remote task/thread which is blocking
on this node. This configuration parameter reflects the maximum number of
remote tasks/threads which can be blocked on objects on this node, see
:ref:`MPCIProxies`.
This configuration option is only evaluated if
:ref:`CONFIGURE_MP_APPLICATION` is defined.
.. index:: CONFIGURE_MP_MPCI_TABLE_POINTER
.. _CONFIGURE_MP_MPCI_TABLE_POINTER:
CONFIGURE_MP_MPCI_TABLE_POINTER
-------------------------------
CONSTANT:
``CONFIGURE_MP_MPCI_TABLE_POINTER``
OPTION TYPE:
This configuration option is an initializer define.
DEFAULT VALUE:
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:
The value of this configuration option initializes the MPCI Configuration
Table.
NOTES:
RTEMS provides a Shared Memory MPCI Device Driver which can be used on any
Multiprocessor System assuming the BSP provides the proper set of
supporting methods.
This configuration option is only evaluated if
:ref:`CONFIGURE_MP_APPLICATION` is defined.
.. index:: CONFIGURE_MP_NODE_NUMBER
.. _CONFIGURE_MP_NODE_NUMBER:
CONFIGURE_MP_NODE_NUMBER
------------------------
CONSTANT:
``CONFIGURE_MP_NODE_NUMBER``
OPTION TYPE:
This configuration option is an integer define.
DEFAULT VALUE:
The default value is ``NODE_NUMBER``.
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:
The value of this configuration option defines the node number of this node
in a multiprocessor system.
NOTES:
In the RTEMS Multiprocessing Test Suite, the node number is derived from
the Makefile variable ``NODE_NUMBER``. The same code is compiled with the
``NODE_NUMBER`` set to different values. The test programs behave
differently based upon their node number.
This configuration option is only evaluated if
:ref:`CONFIGURE_MP_APPLICATION` is defined.