[PATCH] c-user: Add application config info directives

Chris Johns chrisj at rtems.org
Sat Sep 17 07:31:42 UTC 2022


Hi,

Sorry about not reviewing this before now.

Thanks for this, it looks good and most welcome. I have raised some general
questions that apply to a number of entries. I did not tag every case.

On 10/9/22 12:33 am, Sebastian Huber wrote:
> Close #4267.
> Close #4269.
> ---
>  c-user/config/directives.rst   | 1197 ++++++++++++++++++++++++++++++++
>  c-user/config/index.rst        |    2 +
>  c-user/config/intro.rst        |   43 --
>  c-user/config/introduction.rst |  221 ++++++
>  4 files changed, 1420 insertions(+), 43 deletions(-)
>  create mode 100644 c-user/config/directives.rst
>  create mode 100644 c-user/config/introduction.rst
> 
> diff --git a/c-user/config/directives.rst b/c-user/config/directives.rst
> new file mode 100644
> index 0000000..7a73d77
> --- /dev/null
> +++ b/c-user/config/directives.rst
> @@ -0,0 +1,1197 @@
> +.. 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
> +
> +.. _ApplicationConfigurationInformationDirectives:
> +
> +Directives
> +==========
> +
> +This section details the directives of the Application Configuration
> +Information. A subsection is dedicated to each of this manager's directives and
> +lists the calling sequence, parameters, description, return values, and notes
> +of the directive.
> +
> +.. Generated from spec:/rtems/config/if/get-build-label
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_get_build_label()
> +
> +.. _InterfaceRtemsGetBuildLabel:
> +
> +rtems_get_build_label()
> +-----------------------
> +
> +Gets the RTEMS build label.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    const char *rtems_get_build_label( void );
> +
> +.. rubric:: DESCRIPTION:
> +
> +The build label is a user-provided string defined by the build configuration.

Is the way a user sets this label documented? What can a user put in the build
label?

> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the pointer to the RTEMS build label.
> +
> +.. rubric:: NOTES:
> +
> +The build label can be used to distinguish test suite results obtained from
> +different build configurations.  A use case is to record test results with
> +performance data to track performance regressions.  For this a database of
> +performance limits is required.  The build label and the target hash obtained
> +from :ref:`InterfaceRtemsGetTargetHash` can be used as a key to obtain
> +performance limits.
> +
> +.. rubric:: CONSTRAINTS:
> +
> +The following constraints apply to this directive:
> +
> +* The directive may be called from within any runtime context.
> +
> +* The directive will not cause the calling task to be preempted.
> +

What can a user expect from the format of the build label? ASCII? White space?

> +.. Generated from spec:/rtems/config/if/get-copyright-notice
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_get_copyright_notice()
> +
> +.. _InterfaceRtemsGetCopyrightNotice:
> +
> +rtems_get_copyright_notice()
> +----------------------------
> +
> +Gets the RTEMS copyright notice.

Subject to format changes, ie users should decode and expect backwards
compatibility?

> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    const char *rtems_get_copyright_notice( void );
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the pointer to the RTEMS copyright notice.
> +
> +.. Generated from spec:/rtems/config/if/get-target-hash
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_get_target_hash()
> +
> +.. _InterfaceRtemsGetTargetHash:
> +
> +rtems_get_target_hash()
> +-----------------------
> +
> +Gets the RTEMS target hash.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    const char *rtems_get_target_hash( void );
> +
> +.. rubric:: DESCRIPTION:
> +
> +The target hash is calculated from BSP-specific values which characterize a
> +target system.

What is the format of the hash, ie hex ascii digits?

Is the size set or can it vary?

> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the pointer to the RTEMS target hash.
> +
> +.. rubric:: NOTES:
> +
> +For example, the device tree, settings of the memory controller, processor and
> +bus frequencies, a serial number of a chip may be used to calculate the target
> +hash.
> +
> +The target hash can be used to distinguish test suite results obtained from
> +different target systems.  See also :ref:`InterfaceRtemsGetBuildLabel`.
> +
> +.. rubric:: CONSTRAINTS:
> +
> +The following constraints apply to this directive:
> +
> +* The directive may be called from within any runtime context.
> +
> +* The directive will not cause the calling task to be preempted.
> +
> +.. Generated from spec:/rtems/config/if/get-version-string
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_get_version_string()
> +
> +.. _InterfaceRtemsGetVersionString:
> +
> +rtems_get_version_string()
> +--------------------------
> +
> +Gets the RTEMS version string.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    const char *rtems_get_version_string( void );
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the pointer to the RTEMS version string.

Is the version string subject to change across releases or do as set this string
format?

Is it worth discussing the revision values and what they mean?

> +
> +.. Generated from spec:/rtems/config/if/get-do-zero-of-workspace
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_do_zero_of_workspace()
> +
> +.. _InterfaceRtemsConfigurationGetDoZeroOfWorkspace:
> +
> +rtems_configuration_get_do_zero_of_workspace()
> +----------------------------------------------
> +
> +Indicates if the RTEMS Workspace is configured to be zeroed during system
> +initialization for this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_do_zero_of_workspace()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns true, if the RTEMS Workspace is configured to be zeroed during system
> +initialization for this application, otherwise false.

Should the type returned be specified?

> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY`.
> +
> +.. Generated from spec:/rtems/config/if/get-idle-task-stack-size
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_idle_task_stack_size()
> +
> +.. _InterfaceRtemsConfigurationGetIdleTaskStackSize:
> +
> +rtems_configuration_get_idle_task_stack_size()
> +----------------------------------------------
> +
> +Gets the IDLE task stack size in bytes of this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_idle_task_stack_size()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the IDLE task stack size in bytes of this application.

Returned value type?

> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_IDLE_TASK_STACK_SIZE`.
> +
> +.. Generated from spec:/rtems/config/if/get-idle-task
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_idle_task()
> +
> +.. _InterfaceRtemsConfigurationGetIdleTask:
> +
> +rtems_configuration_get_idle_task()
> +-----------------------------------
> +
> +Gets the IDLE task entry of this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_idle_task()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the IDLE task entry of this application.

What is an IDLE task entry?

> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_IDLE_TASK_BODY`.
> +
> +.. Generated from spec:/rtems/config/if/get-interrupt-stack-size
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_interrupt_stack_size()
> +
> +.. _InterfaceRtemsConfigurationGetInterruptStackSize:
> +
> +rtems_configuration_get_interrupt_stack_size()
> +----------------------------------------------
> +
> +Gets the interrupt stack size in bytes of this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_interrupt_stack_size()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the interrupt stack size in bytes of this application.

Type?

> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_INTERRUPT_STACK_SIZE`.
> +
> +.. Generated from spec:/rtems/config/if/get-maximum-barriers
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_maximum_barriers()
> +
> +.. _InterfaceRtemsConfigurationGetMaximumBarriers:
> +
> +rtems_configuration_get_maximum_barriers()
> +------------------------------------------
> +
> +Gets the maximum number of Classic API Barriers configured for this
> +application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    uint32_t rtems_configuration_get_maximum_barriers( void );

Should these be size_t?

> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the maximum number of Classic API Barriers configured for this
> +application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_MAXIMUM_BARRIERS`.
> +
> +.. Generated from spec:/rtems/config/if/get-maximum-extensions
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_maximum_extensions()
> +
> +.. _InterfaceRtemsConfigurationGetMaximumExtensions:
> +
> +rtems_configuration_get_maximum_extensions()
> +--------------------------------------------
> +
> +Gets the maximum number of Classic API User Extensions configured for this
> +application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    uint32_t rtems_configuration_get_maximum_extensions( void );
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the maximum number of Classic API User Extensions configured for this
> +application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_MAXIMUM_USER_EXTENSIONS`.
> +
> +.. Generated from spec:/rtems/config/if/get-maximum-message-queues
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_maximum_message_queues()
> +
> +.. _InterfaceRtemsConfigurationGetMaximumMessageQueues:
> +
> +rtems_configuration_get_maximum_message_queues()
> +------------------------------------------------
> +
> +Gets the maximum number of Classic API Message Queues configured for this
> +application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    uint32_t rtems_configuration_get_maximum_message_queues( void );
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the maximum number of Classic API Message Queues configured for this
> +application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_MAXIMUM_MESSAGE_QUEUES`.
> +
> +.. Generated from spec:/rtems/config/if/get-maximum-partitions
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_maximum_partitions()
> +
> +.. _InterfaceRtemsConfigurationGetMaximumPartitions:
> +
> +rtems_configuration_get_maximum_partitions()
> +--------------------------------------------
> +
> +Gets the maximum number of Classic API Partitions configured for this
> +application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    uint32_t rtems_configuration_get_maximum_partitions( void );
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the maximum number of Classic API Partitions configured for this
> +application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_MAXIMUM_PARTITIONS`.
> +
> +.. Generated from spec:/rtems/config/if/get-maximum-periods
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_maximum_periods()
> +
> +.. _InterfaceRtemsConfigurationGetMaximumPeriods:
> +
> +rtems_configuration_get_maximum_periods()
> +-----------------------------------------
> +
> +Gets the maximum number of Classic API Rate Monotonic Periods configured for
> +this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    uint32_t rtems_configuration_get_maximum_periods( void );
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the maximum number of Classic API Rate Monotonic Periods configured for
> +this application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_MAXIMUM_PERIODS`.
> +
> +.. Generated from spec:/rtems/config/if/get-maximum-ports
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_maximum_ports()
> +
> +.. _InterfaceRtemsConfigurationGetMaximumPorts:
> +
> +rtems_configuration_get_maximum_ports()
> +---------------------------------------
> +
> +Gets the maximum number of Classic API Dual-Ported Memories configured for this
> +application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    uint32_t rtems_configuration_get_maximum_ports( void );
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the maximum number of Classic API Dual-Ported Memories configured for
> +this application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_MAXIMUM_PORTS`.
> +
> +.. Generated from spec:/rtems/config/if/get-maximum-processors
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_maximum_processors()
> +
> +.. _InterfaceRtemsConfigurationGetMaximumProcessors:
> +
> +rtems_configuration_get_maximum_processors()
> +--------------------------------------------
> +
> +Gets the maximum number of processors configured for this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_maximum_processors()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the maximum number of processors configured for this application.
> +
> +.. rubric:: NOTES:
> +
> +The actual number of processors available to the application is returned by
> +:ref:`InterfaceRtemsSchedulerGetProcessorMaximum` which less than or equal to
> +the configured maximum number of processors
> +(:ref:`CONFIGURE_MAXIMUM_PROCESSORS`).
> +
> +In uniprocessor configurations, this macro is a compile time constant which
> +evaluates to one.
> +
> +.. Generated from spec:/rtems/config/if/get-maximum-regions
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_maximum_regions()
> +
> +.. _InterfaceRtemsConfigurationGetMaximumRegions:
> +
> +rtems_configuration_get_maximum_regions()
> +-----------------------------------------
> +
> +Gets the maximum number of Classic API Regions configured for this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    uint32_t rtems_configuration_get_maximum_regions( void );
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the maximum number of Classic API Regions configured for this
> +application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_MAXIMUM_REGIONS`.
> +
> +.. Generated from spec:/rtems/config/if/get-maximum-semaphores
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_maximum_semaphores()
> +
> +.. _InterfaceRtemsConfigurationGetMaximumSemaphores:
> +
> +rtems_configuration_get_maximum_semaphores()
> +--------------------------------------------
> +
> +Gets the maximum number of Classic API Semaphores configured for this
> +application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    uint32_t rtems_configuration_get_maximum_semaphores( void );
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the maximum number of Classic API Semaphores configured for this
> +application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_MAXIMUM_SEMAPHORES`.
> +
> +.. Generated from spec:/rtems/config/if/get-maximum-tasks
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_maximum_tasks()
> +
> +.. _InterfaceRtemsConfigurationGetMaximumTasks:
> +
> +rtems_configuration_get_maximum_tasks()
> +---------------------------------------
> +
> +Gets the maximum number of Classic API Tasks configured for this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    uint32_t rtems_configuration_get_maximum_tasks( void );
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the maximum number of Classic API Tasks configured for this
> +application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_MAXIMUM_TASKS`.
> +
> +.. Generated from spec:/rtems/config/if/get-maximum-timers
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_maximum_timers()
> +
> +.. _InterfaceRtemsConfigurationGetMaximumTimers:
> +
> +rtems_configuration_get_maximum_timers()
> +----------------------------------------
> +
> +Gets the maximum number of Classic API Timers configured for this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    uint32_t rtems_configuration_get_maximum_timers( void );
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the maximum number of Classic API Timers configured for this
> +application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_MAXIMUM_TIMERS`.
> +
> +.. Generated from spec:/rtems/config/if/get-microseconds-per-tick
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_microseconds_per_tick()
> +
> +.. _InterfaceRtemsConfigurationGetMicrosecondsPerTick:
> +
> +rtems_configuration_get_microseconds_per_tick()
> +-----------------------------------------------
> +
> +Gets the number of microseconds per clock tick configured for this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_microseconds_per_tick()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the number of microseconds per clock tick configured for this
> +application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_MICROSECONDS_PER_TICK`.
> +
> +.. Generated from spec:/rtems/config/if/get-milliseconds-per-tick
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_milliseconds_per_tick()
> +
> +.. _InterfaceRtemsConfigurationGetMillisecondsPerTick:
> +
> +rtems_configuration_get_milliseconds_per_tick()
> +-----------------------------------------------
> +
> +Gets the number of milliseconds per clock tick configured for this application.

There are other API calls that return this value. What should a user do?

> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_milliseconds_per_tick()

I think the macro versions in this doco need to have a type specified somewhere.
It saves a user having to find what it is and it also means we have fixed the API.

> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the number of milliseconds per clock tick configured for this
> +application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_MICROSECONDS_PER_TICK`.
> +
> +.. Generated from spec:/rtems/config/if/get-nanoseconds-per-tick
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_nanoseconds_per_tick()
> +
> +.. _InterfaceRtemsConfigurationGetNanosecondsPerTick:
> +
> +rtems_configuration_get_nanoseconds_per_tick()
> +----------------------------------------------
> +
> +Gets the number of microseconds per clock tick configured for this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_nanoseconds_per_tick()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the number of microseconds per clock tick configured for this
> +application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_MICROSECONDS_PER_TICK`.
> +
> +.. Generated from spec:/rtems/config/if/get-number-of-initial-extensions
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_number_of_initial_extensions()
> +
> +.. _InterfaceRtemsConfigurationGetNumberOfInitialExtensions:
> +
> +rtems_configuration_get_number_of_initial_extensions()
> +------------------------------------------------------
> +
> +Gets the number of initial extensions configured for this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_number_of_initial_extensions()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the number of initial extensions configured for this application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_INITIAL_EXTENSIONS`.
> +
> +.. Generated from spec:/rtems/config/if/get-stack-allocate-for-idle-hook
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_stack_allocate_for_idle_hook()
> +
> +.. _InterfaceRtemsConfigurationGetStackAllocateForIdleHook:
> +
> +rtems_configuration_get_stack_allocate_for_idle_hook()
> +------------------------------------------------------
> +
> +Gets the thread stack allocator allocate hook used to allocate the stack of
> +each :term:`IDLE task` configured for this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_stack_allocate_for_idle_hook()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the thread stack allocator allocate hook used to allocate the stack of
> +each :term:`IDLE task` configured for this application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE`.
> +
> +.. Generated from spec:/rtems/config/if/get-stack-allocate-hook
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_stack_allocate_hook()
> +
> +.. _InterfaceRtemsConfigurationGetStackAllocateHook:
> +
> +rtems_configuration_get_stack_allocate_hook()
> +---------------------------------------------
> +
> +Gets the thread stack allocator allocate hook configured for this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_stack_allocate_hook()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the thread stack allocator allocate hook configured for this
> +application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_TASK_STACK_ALLOCATOR`.
> +
> +.. Generated from spec:/rtems/config/if/get-stack-allocate-init-hook
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_stack_allocate_init_hook()
> +
> +.. _InterfaceRtemsConfigurationGetStackAllocateInitHook:
> +
> +rtems_configuration_get_stack_allocate_init_hook()
> +--------------------------------------------------
> +
> +Gets the thread stack allocator initialization hook configured for this
> +application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_stack_allocate_init_hook()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the thread stack allocator initialization hook configured for this
> +application.

The hooks being documented should specify the hook interface and then what and
when you would use this and under what constraints, ie what is locked, services
you can use etc.

> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_TASK_STACK_ALLOCATOR_INIT`.
> +
> +.. Generated from spec:/rtems/config/if/get-stack-allocator-avoids-work-space
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_stack_allocator_avoids_work_space()
> +
> +.. _InterfaceRtemsConfigurationGetStackAllocatorAvoidsWorkSpace:
> +
> +rtems_configuration_get_stack_allocator_avoids_work_space()
> +-----------------------------------------------------------
> +
> +Indicates if the thread stack allocator is configured to avoid the RTEMS
> +Workspace for this application.

If true what allocator would be used?

> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_stack_allocator_avoids_work_space()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns true, if the thread stack allocator is configured to avoid the RTEMS
> +Workspace for this application, otherwise false.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE`.
> +
> +.. Generated from spec:/rtems/config/if/get-stack-free-hook
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_stack_free_hook()
> +
> +.. _InterfaceRtemsConfigurationGetStackFreeHook:
> +
> +rtems_configuration_get_stack_free_hook()
> +-----------------------------------------
> +
> +Gets the thread stack allocator free hook configured for this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_stack_free_hook()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the thread stack allocator free hook configured for this application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_TASK_STACK_DEALLOCATOR`.
> +
> +.. Generated from spec:/rtems/config/if/get-stack-space-size
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_stack_space_size()
> +
> +.. _InterfaceRtemsConfigurationGetStackSpaceSize:
> +
> +rtems_configuration_get_stack_space_size()
> +------------------------------------------
> +
> +Gets the thread stack space size in bytes of configured for this application.

This sentence does not make sense. Threads can specify a stack size so which
stack configuration is the focus of this interface?

> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    uintptr_t rtems_configuration_get_stack_space_size( void );
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the thread stack space size in bytes of configured for this
> +application.

Sorry I do not understand what this is about. Applications have threads and this
returns "the thread" stack space?

> +
> +.. Generated from spec:/rtems/config/if/get-ticks-per-timeslice
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_ticks_per_timeslice()
> +
> +.. _InterfaceRtemsConfigurationGetTicksPerTimeslice:
> +
> +rtems_configuration_get_ticks_per_timeslice()
> +---------------------------------------------
> +
> +Gets the clock ticks per timeslice configured for this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_ticks_per_timeslice()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the clock ticks per timeslice configured for this application.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_TICKS_PER_TIMESLICE`.
> +
> +.. Generated from spec:/rtems/config/if/get-unified-work-area
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_unified_work_area()
> +
> +.. _InterfaceRtemsConfigurationGetUnifiedWorkArea:
> +
> +rtems_configuration_get_unified_work_area()
> +-------------------------------------------
> +
> +Indicates if the RTEMS Workspace and C Program Heap are configured to be
> +unified for this application.

Is this described else where? Can it be linked here?

> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_unified_work_area()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns true, if the RTEMS Workspace and C Program Heap are configured to be
> +unified for this application, otherwise false.
> +
> +.. rubric:: NOTES:
> +
> +See :ref:`CONFIGURE_UNIFIED_WORK_AREAS`.
> +
> +.. Generated from spec:/rtems/config/if/get-user-extension-table
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_user_extension_table()
> +
> +.. _InterfaceRtemsConfigurationGetUserExtensionTable:
> +
> +rtems_configuration_get_user_extension_table()
> +----------------------------------------------
> +
> +Gets the initial extensions table configured for this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_user_extension_table()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the pointer to the initial extensions table configured for this
> +application.
> +
> +.. Generated from spec:/rtems/config/if/get-user-multiprocessing-table
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_user_multiprocessing_table()
> +
> +.. _InterfaceRtemsConfigurationGetUserMultiprocessingTable:
> +
> +rtems_configuration_get_user_multiprocessing_table()
> +----------------------------------------------------
> +
> +Gets the MPCI configuration table configured for this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_user_multiprocessing_table()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the pointer to the MPCI configuration table configured for this
> +application.
> +
> +.. Generated from spec:/rtems/config/if/get-work-space-size
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_work_space_size()
> +
> +.. _InterfaceRtemsConfigurationGetWorkSpaceSize:
> +
> +rtems_configuration_get_work_space_size()
> +-----------------------------------------
> +
> +Gets the RTEMS Workspace size in bytes configured for this application.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_configuration_get_work_space_size()
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the RTEMS Workspace size in bytes configured for this application.
> +
> +.. Generated from spec:/rtems/config/if/get-api-configuration
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_configuration_get_rtems_api_configuration()
> +
> +.. _InterfaceRtemsConfigurationGetRtemsApiConfiguration:
> +
> +rtems_configuration_get_rtems_api_configuration()
> +-------------------------------------------------
> +
> +Gets the Classic API Configuration Table of this application.

Would a comment here that the header file xxx.h describes the fields in the
returned structure?

> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    const rtems_api_configuration_table *
> +    rtems_configuration_get_rtems_api_configuration( void );
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the pointer to the Classic API Configuration Table of this application.
> +
> +.. Generated from spec:/rtems/config/if/resource-is-unlimited
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_resource_is_unlimited()
> +
> +.. _InterfaceRtemsResourceIsUnlimited:
> +
> +rtems_resource_is_unlimited()
> +-----------------------------
> +
> +Indicates if the resource is unlimited.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_resource_is_unlimited( resource )
> +
> +.. rubric:: PARAMETERS:
> +
> +``resource``
> +    This parameter is the resource number.

Where do I find the resource values?

> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns true, if the resource is unlimited, otherwise false.
> +
> +.. rubric:: NOTES:
> +
> +This function is implemented as a macro and can be used to define compile time
> +constants.
> +
> +.. Generated from spec:/rtems/config/if/resource-maximum-per-allocation
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_resource_maximum_per_allocation()
> +
> +.. _InterfaceRtemsResourceMaximumPerAllocation:
> +
> +rtems_resource_maximum_per_allocation()
> +---------------------------------------
> +
> +Gets the maximum number per allocation of a resource number.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_resource_maximum_per_allocation( resource )
> +
> +.. rubric:: PARAMETERS:
> +
> +``resource``
> +    This parameter is the resource number.
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the maximum number per allocation of a resource number.
> +
> +.. rubric:: NOTES:
> +
> +This function is implemented as a macro and can be used to define compile time
> +constants.
> +
> +.. Generated from spec:/rtems/config/if/resource-unlimited
> +
> +.. raw:: latex
> +
> +    \clearpage
> +
> +.. index:: rtems_resource_unlimited()
> +
> +.. _InterfaceRtemsResourceUnlimited:
> +
> +rtems_resource_unlimited()
> +--------------------------
> +
> +Augments the resource number so that it indicates an unlimited resource.
> +
> +.. rubric:: CALLING SEQUENCE:
> +
> +.. code-block:: c
> +
> +    #define rtems_resource_unlimited( resource )
> +
> +.. rubric:: PARAMETERS:
> +
> +``resource``
> +    This parameter is the resource number to augment.
> +
> +.. rubric:: RETURN VALUES:
> +
> +Returns the resource number augmented to indicate an unlimited resource.

How does this call differ from rtems_resource_is_unlimited?

> +
> +.. rubric:: NOTES:
> +
> +This function is implemented as a macro and can be used to define compile time
> +constants.
> diff --git a/c-user/config/index.rst b/c-user/config/index.rst
> index fd877b5..498387e 100644
> --- a/c-user/config/index.rst
> +++ b/c-user/config/index.rst
> @@ -10,6 +10,7 @@ Configuring a System
>  
>  .. toctree::
>  
> +    introduction
>      intro
>      general
>      device-driver
> @@ -29,4 +30,5 @@ Configuring a System
>      mpci
>      libpci
>      ada
> +    directives
>      obsolete
> diff --git a/c-user/config/intro.rst b/c-user/config/intro.rst
> index 4c2f715..04ec996 100644
> --- a/c-user/config/intro.rst
> +++ b/c-user/config/intro.rst
> @@ -3,49 +3,6 @@
>  .. Copyright (C) 2012 Gedare Bloom
>  .. 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
>  ==================================
>  
> diff --git a/c-user/config/introduction.rst b/c-user/config/introduction.rst
> new file mode 100644
> index 0000000..d06662a
> --- /dev/null
> +++ b/c-user/config/introduction.rst
> @@ -0,0 +1,221 @@
> +.. 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)

Is this right? I see in the diff fragments Gedare?

> +
> +.. 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
> +

Is this the same as cut from above? Just being lazy in the review :)

Chris

> +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 entry of
> +  this application.
> +
> +* :ref:`InterfaceRtemsConfigurationGetInterruptStackSize` - Gets the interrupt
> +  stack size in bytes of this application.
> +
> +* :ref:`InterfaceRtemsConfigurationGetMaximumBarriers` - Gets the maximum
> +  number of Classic API Barriers configured for this application.
> +
> +* :ref:`InterfaceRtemsConfigurationGetMaximumExtensions` - Gets the maximum
> +  number of Classic API User Extensions configured for this application.
> +
> +* :ref:`InterfaceRtemsConfigurationGetMaximumMessageQueues` - Gets the maximum
> +  number of Classic API Message Queues configured for this application.
> +
> +* :ref:`InterfaceRtemsConfigurationGetMaximumPartitions` - Gets the maximum
> +  number of Classic API Partitions configured for this application.
> +
> +* :ref:`InterfaceRtemsConfigurationGetMaximumPeriods` - Gets the maximum number
> +  of Classic API Rate Monotonic Periods configured for this application.
> +
> +* :ref:`InterfaceRtemsConfigurationGetMaximumPorts` - Gets the maximum number
> +  of Classic API Dual-Ported Memories configured for this application.
> +
> +* :ref:`InterfaceRtemsConfigurationGetMaximumProcessors` - Gets the maximum
> +  number of processors configured for this application.
> +
> +* :ref:`InterfaceRtemsConfigurationGetMaximumRegions` - Gets the maximum number
> +  of Classic API Regions configured for this application.
> +
> +* :ref:`InterfaceRtemsConfigurationGetMaximumSemaphores` - Gets the maximum
> +  number of Classic API Semaphores configured for this application.
> +
> +* :ref:`InterfaceRtemsConfigurationGetMaximumTasks` - Gets the maximum number
> +  of Classic API Tasks configured for this application.
> +
> +* :ref:`InterfaceRtemsConfigurationGetMaximumTimers` - Gets the maximum number
> +  of Classic API Timers 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
> +  thread stack allocator allocate hook used to allocate the stack of each
> +  :term:`IDLE task` configured for this application.
> +
> +* :ref:`InterfaceRtemsConfigurationGetStackAllocateHook` - Gets the thread
> +  stack allocator allocate hook configured for this application.
> +
> +* :ref:`InterfaceRtemsConfigurationGetStackAllocateInitHook` - Gets the thread
> +  stack allocator initialization hook configured for this application.
> +
> +* :ref:`InterfaceRtemsConfigurationGetStackAllocatorAvoidsWorkSpace` -
> +  Indicates if the thread stack allocator is configured to avoid the RTEMS
> +  Workspace for this application.
> +
> +* :ref:`InterfaceRtemsConfigurationGetStackFreeHook` - Gets the thread stack
> +  allocator free hook configured for this application.
> +
> +* :ref:`InterfaceRtemsConfigurationGetStackSpaceSize` - Gets the thread stack
> +  space size in bytes of configured 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.


More information about the devel mailing list