mirror of
https://git.rtems.org/rtems-docs/
synced 2025-07-24 04:34:25 +08:00
c-user: Add application config info directives
Close #4267. Close #4269.
This commit is contained in:
parent
4fddb23a8f
commit
0fc5c0336d
@ -73,8 +73,8 @@ The following constraints apply to this configuration option:
|
|||||||
memory available to the application.
|
memory available to the application.
|
||||||
|
|
||||||
* The value of the configuration option may be defined through
|
* The value of the configuration option may be defined through
|
||||||
:c:func:`rtems_resource_unlimited` the enable unlimited objects for the
|
:ref:`InterfaceRtemsResourceUnlimited` the enable unlimited objects for the
|
||||||
object class, if the value passed to :c:func:`rtems_resource_unlimited`
|
object class, if the value passed to :ref:`InterfaceRtemsResourceUnlimited`
|
||||||
satisfies all other constraints of the configuration option.
|
satisfies all other constraints of the configuration option.
|
||||||
|
|
||||||
.. Generated from spec:/acfg/if/max-message-queues
|
.. Generated from spec:/acfg/if/max-message-queues
|
||||||
@ -127,8 +127,8 @@ The following constraints apply to this configuration option:
|
|||||||
memory available to the application.
|
memory available to the application.
|
||||||
|
|
||||||
* The value of the configuration option may be defined through
|
* The value of the configuration option may be defined through
|
||||||
:c:func:`rtems_resource_unlimited` the enable unlimited objects for the
|
:ref:`InterfaceRtemsResourceUnlimited` the enable unlimited objects for the
|
||||||
object class, if the value passed to :c:func:`rtems_resource_unlimited`
|
object class, if the value passed to :ref:`InterfaceRtemsResourceUnlimited`
|
||||||
satisfies all other constraints of the configuration option.
|
satisfies all other constraints of the configuration option.
|
||||||
|
|
||||||
.. Generated from spec:/acfg/if/max-partitions
|
.. Generated from spec:/acfg/if/max-partitions
|
||||||
@ -179,8 +179,8 @@ The following constraints apply to this configuration option:
|
|||||||
memory available to the application.
|
memory available to the application.
|
||||||
|
|
||||||
* The value of the configuration option may be defined through
|
* The value of the configuration option may be defined through
|
||||||
:c:func:`rtems_resource_unlimited` the enable unlimited objects for the
|
:ref:`InterfaceRtemsResourceUnlimited` the enable unlimited objects for the
|
||||||
object class, if the value passed to :c:func:`rtems_resource_unlimited`
|
object class, if the value passed to :ref:`InterfaceRtemsResourceUnlimited`
|
||||||
satisfies all other constraints of the configuration option.
|
satisfies all other constraints of the configuration option.
|
||||||
|
|
||||||
.. Generated from spec:/acfg/if/max-periods
|
.. Generated from spec:/acfg/if/max-periods
|
||||||
@ -231,8 +231,8 @@ The following constraints apply to this configuration option:
|
|||||||
memory available to the application.
|
memory available to the application.
|
||||||
|
|
||||||
* The value of the configuration option may be defined through
|
* The value of the configuration option may be defined through
|
||||||
:c:func:`rtems_resource_unlimited` the enable unlimited objects for the
|
:ref:`InterfaceRtemsResourceUnlimited` the enable unlimited objects for the
|
||||||
object class, if the value passed to :c:func:`rtems_resource_unlimited`
|
object class, if the value passed to :ref:`InterfaceRtemsResourceUnlimited`
|
||||||
satisfies all other constraints of the configuration option.
|
satisfies all other constraints of the configuration option.
|
||||||
|
|
||||||
.. Generated from spec:/acfg/if/max-ports
|
.. Generated from spec:/acfg/if/max-ports
|
||||||
@ -283,8 +283,8 @@ The following constraints apply to this configuration option:
|
|||||||
memory available to the application.
|
memory available to the application.
|
||||||
|
|
||||||
* The value of the configuration option may be defined through
|
* The value of the configuration option may be defined through
|
||||||
:c:func:`rtems_resource_unlimited` the enable unlimited objects for the
|
:ref:`InterfaceRtemsResourceUnlimited` the enable unlimited objects for the
|
||||||
object class, if the value passed to :c:func:`rtems_resource_unlimited`
|
object class, if the value passed to :ref:`InterfaceRtemsResourceUnlimited`
|
||||||
satisfies all other constraints of the configuration option.
|
satisfies all other constraints of the configuration option.
|
||||||
|
|
||||||
.. Generated from spec:/acfg/if/max-regions
|
.. Generated from spec:/acfg/if/max-regions
|
||||||
@ -335,8 +335,8 @@ The following constraints apply to this configuration option:
|
|||||||
memory available to the application.
|
memory available to the application.
|
||||||
|
|
||||||
* The value of the configuration option may be defined through
|
* The value of the configuration option may be defined through
|
||||||
:c:func:`rtems_resource_unlimited` the enable unlimited objects for the
|
:ref:`InterfaceRtemsResourceUnlimited` the enable unlimited objects for the
|
||||||
object class, if the value passed to :c:func:`rtems_resource_unlimited`
|
object class, if the value passed to :ref:`InterfaceRtemsResourceUnlimited`
|
||||||
satisfies all other constraints of the configuration option.
|
satisfies all other constraints of the configuration option.
|
||||||
|
|
||||||
.. Generated from spec:/acfg/if/max-semaphores
|
.. Generated from spec:/acfg/if/max-semaphores
|
||||||
@ -391,8 +391,8 @@ The following constraints apply to this configuration option:
|
|||||||
memory available to the application.
|
memory available to the application.
|
||||||
|
|
||||||
* The value of the configuration option may be defined through
|
* The value of the configuration option may be defined through
|
||||||
:c:func:`rtems_resource_unlimited` the enable unlimited objects for the
|
:ref:`InterfaceRtemsResourceUnlimited` the enable unlimited objects for the
|
||||||
object class, if the value passed to :c:func:`rtems_resource_unlimited`
|
object class, if the value passed to :ref:`InterfaceRtemsResourceUnlimited`
|
||||||
satisfies all other constraints of the configuration option.
|
satisfies all other constraints of the configuration option.
|
||||||
|
|
||||||
.. Generated from spec:/acfg/if/max-tasks
|
.. Generated from spec:/acfg/if/max-tasks
|
||||||
@ -461,8 +461,8 @@ The following constraints apply to this configuration option:
|
|||||||
<https://en.cppreference.com/w/c/types/integer>`_.
|
<https://en.cppreference.com/w/c/types/integer>`_.
|
||||||
|
|
||||||
* The value of the configuration option may be defined through
|
* The value of the configuration option may be defined through
|
||||||
:c:func:`rtems_resource_unlimited` the enable unlimited objects for the
|
:ref:`InterfaceRtemsResourceUnlimited` the enable unlimited objects for the
|
||||||
object class, if the value passed to :c:func:`rtems_resource_unlimited`
|
object class, if the value passed to :ref:`InterfaceRtemsResourceUnlimited`
|
||||||
satisfies all other constraints of the configuration option.
|
satisfies all other constraints of the configuration option.
|
||||||
|
|
||||||
.. Generated from spec:/acfg/if/max-thread-local-storage-size
|
.. Generated from spec:/acfg/if/max-thread-local-storage-size
|
||||||
@ -576,8 +576,8 @@ The following constraints apply to this configuration option:
|
|||||||
memory available to the application.
|
memory available to the application.
|
||||||
|
|
||||||
* The value of the configuration option may be defined through
|
* The value of the configuration option may be defined through
|
||||||
:c:func:`rtems_resource_unlimited` the enable unlimited objects for the
|
:ref:`InterfaceRtemsResourceUnlimited` the enable unlimited objects for the
|
||||||
object class, if the value passed to :c:func:`rtems_resource_unlimited`
|
object class, if the value passed to :ref:`InterfaceRtemsResourceUnlimited`
|
||||||
satisfies all other constraints of the configuration option.
|
satisfies all other constraints of the configuration option.
|
||||||
|
|
||||||
.. Generated from spec:/acfg/if/max-user-extensions
|
.. Generated from spec:/acfg/if/max-user-extensions
|
||||||
@ -654,15 +654,15 @@ The default value is 0.
|
|||||||
.. rubric:: DESCRIPTION:
|
.. rubric:: DESCRIPTION:
|
||||||
|
|
||||||
The value of this configuration option defines the minimum count of Classic
|
The value of this configuration option defines the minimum count of Classic
|
||||||
API Tasks which are constructed by :c:func:`rtems_task_construct`.
|
API Tasks which are constructed by :ref:`InterfaceRtemsTaskConstruct`.
|
||||||
|
|
||||||
.. rubric:: NOTES:
|
.. rubric:: NOTES:
|
||||||
|
|
||||||
By default, the calculation for the required memory in the RTEMS Workspace
|
By default, the calculation for the required memory in the RTEMS Workspace
|
||||||
for tasks assumes that all Classic API Tasks are created by
|
for tasks assumes that all Classic API Tasks are created by
|
||||||
:c:func:`rtems_task_create`. This configuration option can be used to
|
:ref:`InterfaceRtemsTaskCreate`. This configuration option can be used to
|
||||||
reduce the required memory for the system-provided task storage areas since
|
reduce the required memory for the system-provided task storage areas since
|
||||||
tasks constructed by :c:func:`rtems_task_construct` use a user-provided
|
tasks constructed by :ref:`InterfaceRtemsTaskConstruct` use a user-provided
|
||||||
task storage area.
|
task storage area.
|
||||||
|
|
||||||
.. rubric:: CONSTRAINTS:
|
.. rubric:: CONSTRAINTS:
|
||||||
|
@ -135,8 +135,8 @@ If this configuration option is specified, then
|
|||||||
``<rtems/confdefs.h>`` for the Classic API initialization task,
|
``<rtems/confdefs.h>`` for the Classic API initialization task,
|
||||||
|
|
||||||
* the Classic API initialization task is constructed by
|
* the Classic API initialization task is constructed by
|
||||||
:c:func:`rtems_task_construct` instead of using
|
:ref:`InterfaceRtemsTaskConstruct` instead of using
|
||||||
:c:func:`rtems_task_create`,
|
:ref:`InterfaceRtemsTaskCreate`,
|
||||||
|
|
||||||
* the maximum thread-local storage size defined by
|
* the maximum thread-local storage size defined by
|
||||||
:ref:`CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE` is used for the Classic API
|
:ref:`CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE` is used for the Classic API
|
||||||
@ -164,7 +164,7 @@ The following constraints apply to this configuration option:
|
|||||||
:ref:`CONFIGURE_MINIMUM_TASK_STACK_SIZE`.
|
:ref:`CONFIGURE_MINIMUM_TASK_STACK_SIZE`.
|
||||||
|
|
||||||
* The value of the configuration option shall be defined using
|
* The value of the configuration option shall be defined using
|
||||||
:c:func:`RTEMS_TASK_STORAGE_SIZE`.
|
:ref:`InterfaceRTEMSTASKSTORAGESIZE`.
|
||||||
|
|
||||||
.. Generated from spec:/acfg/if/init-task-entrypoint
|
.. Generated from spec:/acfg/if/init-task-entrypoint
|
||||||
|
|
||||||
@ -273,7 +273,7 @@ initialization task.
|
|||||||
|
|
||||||
.. rubric:: NOTES:
|
.. rubric:: NOTES:
|
||||||
|
|
||||||
Use :c:func:`rtems_build_name` to define the task name.
|
Use :ref:`InterfaceRtemsBuildName` to define the task name.
|
||||||
|
|
||||||
.. rubric:: CONSTRAINTS:
|
.. rubric:: CONSTRAINTS:
|
||||||
|
|
||||||
|
@ -237,7 +237,7 @@ The Console Driver is responsible for providing the :file:`/dev/console`
|
|||||||
device file. This device is used to initialize the standard input, output,
|
device file. This device is used to initialize the standard input, output,
|
||||||
and error file descriptors.
|
and error file descriptors.
|
||||||
|
|
||||||
BSPs should be constructed in a manner that allows :c:func:`printk` to work
|
BSPs should be constructed in a manner that allows :ref:`InterfacePrintk` to work
|
||||||
properly without the need for the Console Driver to be configured.
|
properly without the need for the Console Driver to be configured.
|
||||||
|
|
||||||
The
|
The
|
||||||
@ -439,9 +439,9 @@ This device driver is responsible for providing the :file:`/dev/console`
|
|||||||
device file. This device is used to initialize the standard input, output,
|
device file. This device is used to initialize the standard input, output,
|
||||||
and error file descriptors.
|
and error file descriptors.
|
||||||
|
|
||||||
This device driver reads via :c:func:`getchark`.
|
This device driver reads via :ref:`InterfaceGetchark`.
|
||||||
|
|
||||||
This device driver writes via :c:func:`rtems_putc`.
|
This device driver writes via :ref:`InterfaceRtemsPutc`.
|
||||||
|
|
||||||
The Termios framework is not used. There is no support to change device
|
The Termios framework is not used. There is no support to change device
|
||||||
settings, e.g. baud, stop bits, parity, etc.
|
settings, e.g. baud, stop bits, parity, etc.
|
||||||
@ -493,14 +493,14 @@ This device driver is responsible for providing the :file:`/dev/console`
|
|||||||
device file. This device is used to initialize the standard input, output,
|
device file. This device is used to initialize the standard input, output,
|
||||||
and error file descriptors.
|
and error file descriptors.
|
||||||
|
|
||||||
This device driver reads via :c:func:`getchark`.
|
This device driver reads via :ref:`InterfaceGetchark`.
|
||||||
|
|
||||||
This device driver writes into a write buffer. The count of characters
|
This device driver writes into a write buffer. The count of characters
|
||||||
written into the write buffer is returned. It might be less than the
|
written into the write buffer is returned. It might be less than the
|
||||||
requested count, in case the write buffer is full. The write is
|
requested count, in case the write buffer is full. The write is
|
||||||
non-blocking and may be called from interrupt context. A dedicated task
|
non-blocking and may be called from interrupt context. A dedicated task
|
||||||
reads from the write buffer and outputs the characters via
|
reads from the write buffer and outputs the characters via
|
||||||
:c:func:`rtems_putc`. This task runs with the least important priority.
|
:ref:`InterfaceRtemsPutc`. This task runs with the least important priority.
|
||||||
The write buffer size is 2047 characters and it is not configurable.
|
The write buffer size is 2047 characters and it is not configurable.
|
||||||
|
|
||||||
Use ``fsync( STDOUT_FILENO )`` or ``fdatasync( STDOUT_FILENO )`` to drain the
|
Use ``fsync( STDOUT_FILENO )`` or ``fdatasync( STDOUT_FILENO )`` to drain the
|
||||||
|
1550
c-user/config/directives.rst
Normal file
1550
c-user/config/directives.rst
Normal file
File diff suppressed because it is too large
Load Diff
@ -1008,7 +1008,7 @@ By allowing users to declare all resources as being unlimited the user can
|
|||||||
avoid identifying and limiting the resources used.
|
avoid identifying and limiting the resources used.
|
||||||
|
|
||||||
The object maximum of each class can be configured also individually using
|
The object maximum of each class can be configured also individually using
|
||||||
the :c:func:`rtems_resource_unlimited` macro.
|
the :ref:`InterfaceRtemsResourceUnlimited` macro.
|
||||||
|
|
||||||
.. rubric:: CONSTRAINTS:
|
.. rubric:: CONSTRAINTS:
|
||||||
|
|
||||||
@ -1091,7 +1091,7 @@ is verbose.
|
|||||||
.. rubric:: NOTES:
|
.. rubric:: NOTES:
|
||||||
|
|
||||||
You may use this feature to debug system initialization issues. The
|
You may use this feature to debug system initialization issues. The
|
||||||
:c:func:`printk` function is used to print the information.
|
:ref:`InterfacePrintk` function is used to print the information.
|
||||||
|
|
||||||
.. Generated from spec:/acfg/if/zero-workspace-automatically
|
.. Generated from spec:/acfg/if/zero-workspace-automatically
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ Configuring a System
|
|||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
|
|
||||||
|
introduction
|
||||||
intro
|
intro
|
||||||
general
|
general
|
||||||
device-driver
|
device-driver
|
||||||
@ -29,4 +30,5 @@ Configuring a System
|
|||||||
mpci
|
mpci
|
||||||
libpci
|
libpci
|
||||||
ada
|
ada
|
||||||
|
directives
|
||||||
obsolete
|
obsolete
|
||||||
|
@ -3,49 +3,6 @@
|
|||||||
.. Copyright (C) 2012 Gedare Bloom
|
.. Copyright (C) 2012 Gedare Bloom
|
||||||
.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
|
.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
|
||||||
|
|
||||||
Introduction
|
|
||||||
============
|
|
||||||
|
|
||||||
RTEMS must be configured for an application. This configuration encompasses a
|
|
||||||
variety of information including the length of each clock tick, the maximum
|
|
||||||
number of each information RTEMS object that can be created, the application
|
|
||||||
initialization tasks, the task scheduling algorithm to be used, and the device
|
|
||||||
drivers in the application.
|
|
||||||
|
|
||||||
Although this information is contained in data structures that are used by
|
|
||||||
RTEMS at system initialization time, the data structures themselves must not be
|
|
||||||
generated by hand. RTEMS provides a set of macros system which provides a
|
|
||||||
simple standard mechanism to automate the generation of these structures.
|
|
||||||
|
|
||||||
.. index:: confdefs.h
|
|
||||||
.. index:: <rtems/confdefs.h>
|
|
||||||
|
|
||||||
The RTEMS header file ``<rtems/confdefs.h>`` is at the core of the automatic
|
|
||||||
generation of system configuration. It is based on the idea of setting macros
|
|
||||||
which define configuration parameters of interest to the application and
|
|
||||||
defaulting or calculating all others. This variety of macros can automatically
|
|
||||||
produce all of the configuration data required for an RTEMS application.
|
|
||||||
|
|
||||||
.. sidebar: Trivia:
|
|
||||||
|
|
||||||
The term ``confdefs`` is shorthand for a *Configuration Defaults*.
|
|
||||||
|
|
||||||
As a general rule, application developers only specify values for the
|
|
||||||
configuration parameters of interest to them. They define what resources or
|
|
||||||
features they require. In most cases, when a parameter is not specified, it
|
|
||||||
defaults to zero (0) instances, a standards compliant value, or disabled as
|
|
||||||
appropriate. For example, by default there will be 256 task priority levels but
|
|
||||||
this can be lowered by the application. This number of priority levels is
|
|
||||||
required to be compliant with the RTEID/ORKID standards upon which the Classic
|
|
||||||
API is based. There are similar cases where the default is selected to be
|
|
||||||
compliant with the POSIX standard.
|
|
||||||
|
|
||||||
For each configuration parameter in the configuration tables, the macro
|
|
||||||
corresponding to that field is discussed. The RTEMS Maintainers expect that all
|
|
||||||
systems can be easily configured using the ``<rtems/confdefs.h>`` mechanism and
|
|
||||||
that using this mechanism will avoid internal RTEMS configuration changes
|
|
||||||
impacting applications.
|
|
||||||
|
|
||||||
Default Value Selection Philosophy
|
Default Value Selection Philosophy
|
||||||
==================================
|
==================================
|
||||||
|
|
||||||
|
227
c-user/config/introduction.rst
Normal file
227
c-user/config/introduction.rst
Normal file
@ -0,0 +1,227 @@
|
|||||||
|
.. SPDX-License-Identifier: CC-BY-SA-4.0
|
||||||
|
|
||||||
|
.. Copyright (C) 2009, 2021 embedded brains GmbH (http://www.embedded-brains.de)
|
||||||
|
.. Copyright (C) 1988, 2021 On-Line Applications Research Corporation (OAR)
|
||||||
|
|
||||||
|
.. This file is part of the RTEMS quality process and was automatically
|
||||||
|
.. generated. If you find something that needs to be fixed or
|
||||||
|
.. worded better please post a report or patch to an RTEMS mailing list
|
||||||
|
.. or raise a bug report:
|
||||||
|
..
|
||||||
|
.. https://www.rtems.org/bugs.html
|
||||||
|
..
|
||||||
|
.. For information on updating and regenerating please refer to the How-To
|
||||||
|
.. section in the Software Requirements Engineering chapter of the
|
||||||
|
.. RTEMS Software Engineering manual. The manual is provided as a part of
|
||||||
|
.. a release. For development sources please refer to the online
|
||||||
|
.. documentation at:
|
||||||
|
..
|
||||||
|
.. https://docs.rtems.org
|
||||||
|
|
||||||
|
.. Generated from spec:/rtems/config/if/group
|
||||||
|
|
||||||
|
.. _ApplicationConfigurationInformationIntroduction:
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
============
|
||||||
|
|
||||||
|
.. The following list was generated from:
|
||||||
|
.. spec:/rtems/config/if/get-build-label
|
||||||
|
.. spec:/rtems/config/if/get-copyright-notice
|
||||||
|
.. spec:/rtems/config/if/get-target-hash
|
||||||
|
.. spec:/rtems/config/if/get-version-string
|
||||||
|
.. spec:/rtems/config/if/get-do-zero-of-workspace
|
||||||
|
.. spec:/rtems/config/if/get-idle-task-stack-size
|
||||||
|
.. spec:/rtems/config/if/get-idle-task
|
||||||
|
.. spec:/rtems/config/if/get-interrupt-stack-size
|
||||||
|
.. spec:/rtems/config/if/get-maximum-barriers
|
||||||
|
.. spec:/rtems/config/if/get-maximum-extensions
|
||||||
|
.. spec:/rtems/config/if/get-maximum-message-queues
|
||||||
|
.. spec:/rtems/config/if/get-maximum-partitions
|
||||||
|
.. spec:/rtems/config/if/get-maximum-periods
|
||||||
|
.. spec:/rtems/config/if/get-maximum-ports
|
||||||
|
.. spec:/rtems/config/if/get-maximum-processors
|
||||||
|
.. spec:/rtems/config/if/get-maximum-regions
|
||||||
|
.. spec:/rtems/config/if/get-maximum-semaphores
|
||||||
|
.. spec:/rtems/config/if/get-maximum-tasks
|
||||||
|
.. spec:/rtems/config/if/get-maximum-timers
|
||||||
|
.. spec:/rtems/config/if/get-microseconds-per-tick
|
||||||
|
.. spec:/rtems/config/if/get-milliseconds-per-tick
|
||||||
|
.. spec:/rtems/config/if/get-nanoseconds-per-tick
|
||||||
|
.. spec:/rtems/config/if/get-number-of-initial-extensions
|
||||||
|
.. spec:/rtems/config/if/get-stack-allocate-for-idle-hook
|
||||||
|
.. spec:/rtems/config/if/get-stack-allocate-hook
|
||||||
|
.. spec:/rtems/config/if/get-stack-allocate-init-hook
|
||||||
|
.. spec:/rtems/config/if/get-stack-allocator-avoids-work-space
|
||||||
|
.. spec:/rtems/config/if/get-stack-free-hook
|
||||||
|
.. spec:/rtems/config/if/get-stack-space-size
|
||||||
|
.. spec:/rtems/config/if/get-ticks-per-timeslice
|
||||||
|
.. spec:/rtems/config/if/get-unified-work-area
|
||||||
|
.. spec:/rtems/config/if/get-user-extension-table
|
||||||
|
.. spec:/rtems/config/if/get-user-multiprocessing-table
|
||||||
|
.. spec:/rtems/config/if/get-work-space-size
|
||||||
|
.. spec:/rtems/config/if/get-api-configuration
|
||||||
|
.. spec:/rtems/config/if/resource-is-unlimited
|
||||||
|
.. spec:/rtems/config/if/resource-maximum-per-allocation
|
||||||
|
.. spec:/rtems/config/if/resource-unlimited
|
||||||
|
|
||||||
|
The application configuration information group provides an API to get the
|
||||||
|
configuration of an application.
|
||||||
|
|
||||||
|
RTEMS must be configured for an application. This configuration encompasses a
|
||||||
|
variety of information including the length of each clock tick, the maximum
|
||||||
|
number of each information RTEMS object that can be created, the application
|
||||||
|
initialization tasks, the task scheduling algorithm to be used, and the device
|
||||||
|
drivers in the application.
|
||||||
|
|
||||||
|
Although this information is contained in data structures that are used by
|
||||||
|
RTEMS at system initialization time, the data structures themselves must not be
|
||||||
|
generated by hand. RTEMS provides a set of macros system which provides a
|
||||||
|
simple standard mechanism to automate the generation of these structures.
|
||||||
|
|
||||||
|
The RTEMS header file ``<rtems/confdefs.h>`` is at the core of the automatic
|
||||||
|
generation of system configuration. It is based on the idea of setting macros
|
||||||
|
which define configuration parameters of interest to the application and
|
||||||
|
defaulting or calculating all others. This variety of macros can automatically
|
||||||
|
produce all of the configuration data required for an RTEMS application. The
|
||||||
|
term ``confdefs`` is shorthand for a *Configuration Defaults*.
|
||||||
|
|
||||||
|
As a general rule, application developers only specify values for the
|
||||||
|
configuration parameters of interest to them. They define what resources or
|
||||||
|
features they require. In most cases, when a parameter is not specified, it
|
||||||
|
defaults to zero (0) instances, a standards compliant value, or disabled as
|
||||||
|
appropriate. For example, by default there will be 256 task priority levels but
|
||||||
|
this can be lowered by the application. This number of priority levels is
|
||||||
|
required to be compliant with the RTEID/ORKID standards upon which the Classic
|
||||||
|
API is based. There are similar cases where the default is selected to be
|
||||||
|
compliant with the POSIX standard.
|
||||||
|
|
||||||
|
For each configuration parameter in the configuration tables, the macro
|
||||||
|
corresponding to that field is discussed. The RTEMS Maintainers expect that all
|
||||||
|
systems can be easily configured using the ``<rtems/confdefs.h>`` mechanism and
|
||||||
|
that using this mechanism will avoid internal RTEMS configuration changes
|
||||||
|
impacting applications.
|
||||||
|
|
||||||
|
Some application configuration settings and other system parameters can be
|
||||||
|
queried by the application. The directives provided by the Application
|
||||||
|
Configuration Information are:
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsGetBuildLabel` - Gets the RTEMS build label.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsGetCopyrightNotice` - Gets the RTEMS copyright notice.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsGetTargetHash` - Gets the RTEMS target hash.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsGetVersionString` - Gets the RTEMS version string.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetDoZeroOfWorkspace` - Indicates if the
|
||||||
|
RTEMS Workspace is configured to be zeroed during system initialization for
|
||||||
|
this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetIdleTaskStackSize` - Gets the IDLE task
|
||||||
|
stack size in bytes of this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetIdleTask` - Gets the IDLE task body of
|
||||||
|
this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetInterruptStackSize` - Gets the interrupt
|
||||||
|
stack size in bytes of this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetMaximumBarriers` - Gets the resource
|
||||||
|
number of :ref:`RTEMSAPIClassicBarrier` objects configured for this
|
||||||
|
application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetMaximumExtensions` - Gets the resource
|
||||||
|
number of :ref:`RTEMSAPIClassicUserExt` objects configured for this
|
||||||
|
application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetMaximumMessageQueues` - Gets the resource
|
||||||
|
number of :ref:`RTEMSAPIClassicMessage` objects configured for this
|
||||||
|
application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetMaximumPartitions` - Gets the resource
|
||||||
|
number of :ref:`RTEMSAPIClassicPart` objects configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetMaximumPeriods` - Gets the resource
|
||||||
|
number of :ref:`RTEMSAPIClassicRatemon` objects configured for this
|
||||||
|
application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetMaximumPorts` - Gets the resource number
|
||||||
|
of :ref:`RTEMSAPIClassicDPMem` objects configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetMaximumProcessors` - Gets the maximum
|
||||||
|
number of processors configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetMaximumRegions` - Gets the resource
|
||||||
|
number of :ref:`RTEMSAPIClassicRegion` objects configured for this
|
||||||
|
application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetMaximumSemaphores` - Gets the resource
|
||||||
|
number of :ref:`RTEMSAPIClassicSem` objects configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetMaximumTasks` - Gets the resource number
|
||||||
|
of :ref:`RTEMSAPIClassicTasks` objects configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetMaximumTimers` - Gets the resource number
|
||||||
|
of :ref:`RTEMSAPIClassicTimer` objects configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetMicrosecondsPerTick` - Gets the number of
|
||||||
|
microseconds per clock tick configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetMillisecondsPerTick` - Gets the number of
|
||||||
|
milliseconds per clock tick configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetNanosecondsPerTick` - Gets the number of
|
||||||
|
microseconds per clock tick configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetNumberOfInitialExtensions` - Gets the
|
||||||
|
number of initial extensions configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetStackAllocateForIdleHook` - Gets the task
|
||||||
|
stack allocator allocate hook used to allocate the stack of each :term:`IDLE
|
||||||
|
task` configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetStackAllocateHook` - Gets the task stack
|
||||||
|
allocator allocate hook configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetStackAllocateInitHook` - Gets the task
|
||||||
|
stack allocator initialization hook configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetStackAllocatorAvoidsWorkSpace` -
|
||||||
|
Indicates if the task stack allocator is configured to avoid the RTEMS
|
||||||
|
Workspace for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetStackFreeHook` - Gets the task stack
|
||||||
|
allocator free hook configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetStackSpaceSize` - Gets the configured
|
||||||
|
size in bytes of the memory space used to allocate thread stacks for this
|
||||||
|
application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetTicksPerTimeslice` - Gets the clock ticks
|
||||||
|
per timeslice configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetUnifiedWorkArea` - Indicates if the RTEMS
|
||||||
|
Workspace and C Program Heap are configured to be unified for this
|
||||||
|
application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetUserExtensionTable` - Gets the initial
|
||||||
|
extensions table configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetUserMultiprocessingTable` - Gets the MPCI
|
||||||
|
configuration table configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetWorkSpaceSize` - Gets the RTEMS Workspace
|
||||||
|
size in bytes configured for this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsConfigurationGetRtemsApiConfiguration` - Gets the Classic
|
||||||
|
API Configuration Table of this application.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsResourceIsUnlimited` - Indicates if the resource is
|
||||||
|
unlimited.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsResourceMaximumPerAllocation` - Gets the maximum number
|
||||||
|
per allocation of a resource number.
|
||||||
|
|
||||||
|
* :ref:`InterfaceRtemsResourceUnlimited` - Augments the resource number so that
|
||||||
|
it indicates an unlimited resource.
|
@ -76,8 +76,8 @@ The following constraints apply to this configuration option:
|
|||||||
memory available to the application.
|
memory available to the application.
|
||||||
|
|
||||||
* The value of the configuration option may be defined through
|
* The value of the configuration option may be defined through
|
||||||
:c:func:`rtems_resource_unlimited` the enable unlimited objects for the
|
:ref:`InterfaceRtemsResourceUnlimited` the enable unlimited objects for the
|
||||||
object class, if the value passed to :c:func:`rtems_resource_unlimited`
|
object class, if the value passed to :ref:`InterfaceRtemsResourceUnlimited`
|
||||||
satisfies all other constraints of the configuration option.
|
satisfies all other constraints of the configuration option.
|
||||||
|
|
||||||
.. Generated from spec:/acfg/if/max-posix-key-value-pairs
|
.. Generated from spec:/acfg/if/max-posix-key-value-pairs
|
||||||
@ -134,8 +134,8 @@ The following constraints apply to this configuration option:
|
|||||||
memory available to the application.
|
memory available to the application.
|
||||||
|
|
||||||
* The value of the configuration option may be defined through
|
* The value of the configuration option may be defined through
|
||||||
:c:func:`rtems_resource_unlimited` the enable unlimited objects for the
|
:ref:`InterfaceRtemsResourceUnlimited` the enable unlimited objects for the
|
||||||
object class, if the value passed to :c:func:`rtems_resource_unlimited`
|
object class, if the value passed to :ref:`InterfaceRtemsResourceUnlimited`
|
||||||
satisfies all other constraints of the configuration option.
|
satisfies all other constraints of the configuration option.
|
||||||
|
|
||||||
.. Generated from spec:/acfg/if/max-posix-message-queues
|
.. Generated from spec:/acfg/if/max-posix-message-queues
|
||||||
@ -193,8 +193,8 @@ The following constraints apply to this configuration option:
|
|||||||
<https://en.cppreference.com/w/c/types/integer>`_.
|
<https://en.cppreference.com/w/c/types/integer>`_.
|
||||||
|
|
||||||
* The value of the configuration option may be defined through
|
* The value of the configuration option may be defined through
|
||||||
:c:func:`rtems_resource_unlimited` the enable unlimited objects for the
|
:ref:`InterfaceRtemsResourceUnlimited` the enable unlimited objects for the
|
||||||
object class, if the value passed to :c:func:`rtems_resource_unlimited`
|
object class, if the value passed to :ref:`InterfaceRtemsResourceUnlimited`
|
||||||
satisfies all other constraints of the configuration option.
|
satisfies all other constraints of the configuration option.
|
||||||
|
|
||||||
.. Generated from spec:/acfg/if/max-posix-queued-signals
|
.. Generated from spec:/acfg/if/max-posix-queued-signals
|
||||||
@ -312,8 +312,8 @@ The following constraints apply to this configuration option:
|
|||||||
<https://en.cppreference.com/w/c/types/integer>`_.
|
<https://en.cppreference.com/w/c/types/integer>`_.
|
||||||
|
|
||||||
* The value of the configuration option may be defined through
|
* The value of the configuration option may be defined through
|
||||||
:c:func:`rtems_resource_unlimited` the enable unlimited objects for the
|
:ref:`InterfaceRtemsResourceUnlimited` the enable unlimited objects for the
|
||||||
object class, if the value passed to :c:func:`rtems_resource_unlimited`
|
object class, if the value passed to :ref:`InterfaceRtemsResourceUnlimited`
|
||||||
satisfies all other constraints of the configuration option.
|
satisfies all other constraints of the configuration option.
|
||||||
|
|
||||||
.. Generated from spec:/acfg/if/max-posix-shms
|
.. Generated from spec:/acfg/if/max-posix-shms
|
||||||
@ -369,8 +369,8 @@ The following constraints apply to this configuration option:
|
|||||||
<https://en.cppreference.com/w/c/types/integer>`_.
|
<https://en.cppreference.com/w/c/types/integer>`_.
|
||||||
|
|
||||||
* The value of the configuration option may be defined through
|
* The value of the configuration option may be defined through
|
||||||
:c:func:`rtems_resource_unlimited` the enable unlimited objects for the
|
:ref:`InterfaceRtemsResourceUnlimited` the enable unlimited objects for the
|
||||||
object class, if the value passed to :c:func:`rtems_resource_unlimited`
|
object class, if the value passed to :ref:`InterfaceRtemsResourceUnlimited`
|
||||||
satisfies all other constraints of the configuration option.
|
satisfies all other constraints of the configuration option.
|
||||||
|
|
||||||
.. Generated from spec:/acfg/if/max-posix-threads
|
.. Generated from spec:/acfg/if/max-posix-threads
|
||||||
@ -486,8 +486,8 @@ The following constraints apply to this configuration option:
|
|||||||
memory available to the application.
|
memory available to the application.
|
||||||
|
|
||||||
* The value of the configuration option may be defined through
|
* The value of the configuration option may be defined through
|
||||||
:c:func:`rtems_resource_unlimited` the enable unlimited objects for the
|
:ref:`InterfaceRtemsResourceUnlimited` the enable unlimited objects for the
|
||||||
object class, if the value passed to :c:func:`rtems_resource_unlimited`
|
object class, if the value passed to :ref:`InterfaceRtemsResourceUnlimited`
|
||||||
satisfies all other constraints of the configuration option.
|
satisfies all other constraints of the configuration option.
|
||||||
|
|
||||||
* The value of the configuration option shall be zero if the POSIX API is not
|
* The value of the configuration option shall be zero if the POSIX API is not
|
||||||
|
@ -407,9 +407,9 @@ scheduler.
|
|||||||
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`.
|
Schedulers can be identified via :ref:`InterfaceRtemsSchedulerIdent`.
|
||||||
|
|
||||||
Use :c:func:`rtems_build_name` to define the scheduler name.
|
Use :ref:`InterfaceRtemsBuildName` to define the scheduler name.
|
||||||
|
|
||||||
.. rubric:: CONSTRAINTS:
|
.. rubric:: CONSTRAINTS:
|
||||||
|
|
||||||
@ -749,7 +749,7 @@ The following constraints apply to this configuration option:
|
|||||||
|
|
||||||
The ``obj_name`` macro parameter shall be the scheduler object name. It is
|
The ``obj_name`` macro parameter shall be the scheduler object name. It is
|
||||||
recommended to define the scheduler object name through
|
recommended to define the scheduler object name through
|
||||||
:c:func:`rtems_build_name`.
|
:ref:`InterfaceRtemsBuildName`.
|
||||||
|
|
||||||
* Where the system was build with SMP support enabled, the table shall have one
|
* Where the system was build with SMP support enabled, the table shall have one
|
||||||
or more entries, otherwise it shall have exactly one entry.
|
or more entries, otherwise it shall have exactly one entry.
|
||||||
|
@ -256,7 +256,7 @@ Glossary
|
|||||||
dynamic extension sets
|
dynamic extension sets
|
||||||
The dynamic extension sets are a list of :term:`user extensions`. The list
|
The dynamic extension sets are a list of :term:`user extensions`. The list
|
||||||
is defined by the system services used by the application and directive calls
|
is defined by the system services used by the application and directive calls
|
||||||
such as :c:func:`rtems_extension_create`. See also
|
such as :ref:`InterfaceRtemsExtensionCreate`. See also
|
||||||
:term:`initial extension sets`.
|
:term:`initial extension sets`.
|
||||||
|
|
||||||
EARS
|
EARS
|
||||||
@ -425,7 +425,7 @@ Glossary
|
|||||||
The home scheduler of a :term:`task` is a :term:`scheduler` which is an
|
The home scheduler of a :term:`task` is a :term:`scheduler` which is an
|
||||||
:term:`eligible scheduler` and which is assigned to the task during its
|
:term:`eligible scheduler` and which is assigned to the task during its
|
||||||
initialization or explicitly via a directive call such as
|
initialization or explicitly via a directive call such as
|
||||||
:c:func:`rtems_task_set_scheduler`.
|
:ref:`InterfaceRtemsTaskSetScheduler`.
|
||||||
|
|
||||||
homogeneous
|
homogeneous
|
||||||
A multiprocessor computer system composed of a single type of processor.
|
A multiprocessor computer system composed of a single type of processor.
|
||||||
@ -776,8 +776,8 @@ Glossary
|
|||||||
Each :term:`task` has exactly one real priority. The real priority is
|
Each :term:`task` has exactly one real priority. The real priority is
|
||||||
always with respect to the :term:`home scheduler` of a task. It is defined
|
always with respect to the :term:`home scheduler` of a task. It is defined
|
||||||
during task initialization. It may be changed by directives such as
|
during task initialization. It may be changed by directives such as
|
||||||
:c:func:`rtems_task_set_priority` and
|
:ref:`InterfaceRtemsTaskSetPriority` and
|
||||||
:c:func:`rtems_task_set_scheduler`. The real priority is the foundation
|
:ref:`InterfaceRtemsTaskSetScheduler`. The real priority is the foundation
|
||||||
of the :term:`current priority`.
|
of the :term:`current priority`.
|
||||||
|
|
||||||
real-time
|
real-time
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
.. index:: counting semaphores
|
.. index:: counting semaphores
|
||||||
.. index:: mutual exclusion
|
.. index:: mutual exclusion
|
||||||
|
|
||||||
.. _RTEMSAPIClassicSemaphore:
|
.. _RTEMSAPIClassicSem:
|
||||||
|
|
||||||
Semaphore Manager
|
Semaphore Manager
|
||||||
*****************
|
*****************
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
.. index:: tasks
|
.. index:: tasks
|
||||||
|
|
||||||
.. _RTEMSAPIClassicTask:
|
.. _RTEMSAPIClassicTasks:
|
||||||
|
|
||||||
Task Manager
|
Task Manager
|
||||||
************
|
************
|
||||||
|
Loading…
x
Reference in New Issue
Block a user