mirror of
https://git.rtems.org/rtems-docs/
synced 2025-07-23 09:01:46 +08:00
c-user: Add CONFIGURE_IDLE_TASK_STORAGE_SIZE
This commit is contained in:
parent
e3cbdca981
commit
5eae93cbd1
@ -1,6 +1,6 @@
|
|||||||
.. SPDX-License-Identifier: CC-BY-SA-4.0
|
.. SPDX-License-Identifier: CC-BY-SA-4.0
|
||||||
|
|
||||||
.. Copyright (C) 2020, 2021 embedded brains GmbH (http://www.embedded-brains.de)
|
.. Copyright (C) 2020, 2022 embedded brains GmbH (http://www.embedded-brains.de)
|
||||||
.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
|
.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
|
||||||
|
|
||||||
.. This file is part of the RTEMS quality process and was automatically
|
.. This file is part of the RTEMS quality process and was automatically
|
||||||
@ -184,3 +184,74 @@ The following constraints apply to this configuration option:
|
|||||||
task stack area calculation carried out by ``<rtems/confdefs.h>`` does not
|
task stack area calculation carried out by ``<rtems/confdefs.h>`` does not
|
||||||
overflow an integer of type `size_t
|
overflow an integer of type `size_t
|
||||||
<https://en.cppreference.com/w/c/types/size_t>`_.
|
<https://en.cppreference.com/w/c/types/size_t>`_.
|
||||||
|
|
||||||
|
.. Generated from spec:/acfg/if/idle-task-storage-size
|
||||||
|
|
||||||
|
.. raw:: latex
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
.. index:: CONFIGURE_IDLE_TASK_STORAGE_SIZE
|
||||||
|
.. index:: IDLE task storage size
|
||||||
|
|
||||||
|
.. _CONFIGURE_IDLE_TASK_STORAGE_SIZE:
|
||||||
|
|
||||||
|
CONFIGURE_IDLE_TASK_STORAGE_SIZE
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
.. rubric:: CONSTANT:
|
||||||
|
|
||||||
|
``CONFIGURE_IDLE_TASK_STORAGE_SIZE``
|
||||||
|
|
||||||
|
.. rubric:: OPTION TYPE:
|
||||||
|
|
||||||
|
This configuration option is an integer define.
|
||||||
|
|
||||||
|
.. rubric:: DEFAULT VALUE:
|
||||||
|
|
||||||
|
This configuration option has no default value. If it is not specified, then
|
||||||
|
the task storage area for each :term:`IDLE task` will allocated
|
||||||
|
from the RTEMS Workspace or through a custom IDLE task stack allocator.
|
||||||
|
|
||||||
|
.. rubric:: DESCRIPTION:
|
||||||
|
|
||||||
|
If this configuration option is specified, then the task storage areas for
|
||||||
|
the :term:`IDLE tasks <IDLE task>` are statically allocated by
|
||||||
|
<rtems/confdefs.h>. The value of this configuration option defines the size
|
||||||
|
in bytes of the task storage area of each IDLE task in the system.
|
||||||
|
|
||||||
|
.. rubric:: NOTES:
|
||||||
|
|
||||||
|
By default, the IDLE task storage areas are allocated from the RTEMS
|
||||||
|
Workspace. Applications which do not want to use a heap allocator can use
|
||||||
|
this configuration option to use statically allocated memory for the IDLE
|
||||||
|
task storage areas. The task storage area contains the task stack, the
|
||||||
|
thread-local storage, and the floating-point context on architectures with a
|
||||||
|
separate floating-point context. The size of the thread-local storage area
|
||||||
|
is defined at link time or by the :ref:`CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE`
|
||||||
|
configuration option. You have to estimate the actual thread-local storage
|
||||||
|
size if you want to use this configuration option. If the IDLE task stack
|
||||||
|
size would be less than the value defined by the
|
||||||
|
:ref:`CONFIGURE_IDLE_TASK_STACK_SIZE` configuration option, for example because the
|
||||||
|
thread-local storage size is larger than expected, then the system terminates
|
||||||
|
with the :ref:`INTERNAL_ERROR_CORE <FatalErrorSources>` fatal source and the
|
||||||
|
:ref:`INTERNAL_ERROR_IDLE_THREAD_STACK_TOO_SMALL <internal_errors>` fatal code during
|
||||||
|
system initialization.
|
||||||
|
|
||||||
|
The value of this configuration option is passed to
|
||||||
|
:ref:`InterfaceRTEMSTASKSTORAGESIZE` by <rtems/confdefs.h> to determine the
|
||||||
|
actual size of the statically allocated area to take architecture-specific
|
||||||
|
overheads into account.
|
||||||
|
|
||||||
|
The
|
||||||
|
|
||||||
|
* ``CONFIGURE_IDLE_TASK_STORAGE_SIZE``, and
|
||||||
|
|
||||||
|
* :ref:`CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE`
|
||||||
|
|
||||||
|
configuration options are mutually exclusive.
|
||||||
|
|
||||||
|
.. rubric:: CONSTRAINTS:
|
||||||
|
|
||||||
|
The value of the configuration option shall be greater than or equal to
|
||||||
|
:ref:`CONFIGURE_IDLE_TASK_STACK_SIZE`.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.. SPDX-License-Identifier: CC-BY-SA-4.0
|
.. SPDX-License-Identifier: CC-BY-SA-4.0
|
||||||
|
|
||||||
.. Copyright (C) 2020, 2021 embedded brains GmbH (http://www.embedded-brains.de)
|
.. Copyright (C) 2020, 2022 embedded brains GmbH (http://www.embedded-brains.de)
|
||||||
.. Copyright (C) 1988, 2021 On-Line Applications Research Corporation (OAR)
|
.. Copyright (C) 1988, 2021 On-Line Applications Research Corporation (OAR)
|
||||||
|
|
||||||
.. This file is part of the RTEMS quality process and was automatically
|
.. This file is part of the RTEMS quality process and was automatically
|
||||||
@ -136,27 +136,46 @@ This configuration option is an initializer define.
|
|||||||
|
|
||||||
.. rubric:: DEFAULT VALUE:
|
.. rubric:: DEFAULT VALUE:
|
||||||
|
|
||||||
The default value is ``_Stack_Allocator_allocate_for_idle_default``, which
|
By default, the IDLE task storage area will be allocated from the RTEMS
|
||||||
indicates that IDLE task stacks will be allocated from an area statically
|
Workspace.
|
||||||
allocated by ``<rtems/confdefs.h>``.
|
|
||||||
|
|
||||||
.. rubric:: DESCRIPTION:
|
.. rubric:: DESCRIPTION:
|
||||||
|
|
||||||
The value of this configuration option is the address for the stack allocator
|
The value of this configuration option is the address for the stack allocator
|
||||||
allocate handler used to allocate the task stack of each
|
allocate handler used to allocate the task storage area of each
|
||||||
:term:`IDLE task`.
|
:term:`IDLE task`.
|
||||||
|
|
||||||
.. rubric:: NOTES:
|
.. rubric:: NOTES:
|
||||||
|
|
||||||
This configuration option is independent of the other thread stack allocator
|
This configuration option is independent of the other thread stack allocator
|
||||||
configuration options. It is assumed that any memory allocated for the stack
|
configuration options. It is assumed that any memory allocated for the task
|
||||||
of an :term:`IDLE task` will not be from the RTEMS Workspace or the
|
storage area of an :term:`IDLE task` will not be from the RTEMS
|
||||||
memory statically allocated by default.
|
Workspace.
|
||||||
|
|
||||||
|
The IDLE task stack allocator may increase the size of the allocated memory
|
||||||
|
area to account for the actually allocated memory area.
|
||||||
|
|
||||||
|
The
|
||||||
|
|
||||||
|
* :ref:`CONFIGURE_IDLE_TASK_STORAGE_SIZE`, and
|
||||||
|
|
||||||
|
* ``CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE``
|
||||||
|
|
||||||
|
configuration options are mutually exclusive.
|
||||||
|
|
||||||
.. rubric:: CONSTRAINTS:
|
.. rubric:: CONSTRAINTS:
|
||||||
|
|
||||||
The value of the configuration option shall be defined to a valid function
|
The following constraints apply to this configuration option:
|
||||||
pointer of the type ``void *( *allocate )( uint32_t, size_t )``.
|
|
||||||
|
* The value of the configuration option shall be defined to a valid function
|
||||||
|
pointer of the type ``void *( *allocate )( uint32_t, size_t * )``.
|
||||||
|
|
||||||
|
* The IDLE task stack allocator shall return a pointer to the allocated memory
|
||||||
|
area or terminate the system with a fatal error if the allocation request
|
||||||
|
cannot be satisfied.
|
||||||
|
|
||||||
|
* The IDLE task stack allocator may increase the size of the allocated memory
|
||||||
|
area.
|
||||||
|
|
||||||
.. Generated from spec:/acfg/if/task-stack-allocator-init
|
.. Generated from spec:/acfg/if/task-stack-allocator-init
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user