Move the workspace size configuration constant out of the configuration table.
Update #3875. --- cpukit/headers.am | 1 + cpukit/include/rtems/confdefs.h | 3 +- cpukit/include/rtems/config.h | 8 +--- cpukit/include/rtems/score/wkspacedata.h | 66 ++++++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+), 7 deletions(-) create mode 100644 cpukit/include/rtems/score/wkspacedata.h diff --git a/cpukit/headers.am b/cpukit/headers.am index 351e942cea..6e1ab4ccd0 100644 --- a/cpukit/headers.am +++ b/cpukit/headers.am @@ -408,6 +408,7 @@ include_rtems_score_HEADERS += include/rtems/score/watchdog.h include_rtems_score_HEADERS += include/rtems/score/watchdogimpl.h include_rtems_score_HEADERS += include/rtems/score/watchdogticks.h include_rtems_score_HEADERS += include/rtems/score/wkspace.h +include_rtems_score_HEADERS += include/rtems/score/wkspacedata.h include_rtems_trace_HEADERS += include/rtems/trace/rtems-trace-buffer-vars.h include_sys_HEADERS += include/sys/_ffcounter.h include_sys_HEADERS += include/sys/cdefs_elf.h diff --git a/cpukit/include/rtems/confdefs.h b/cpukit/include/rtems/confdefs.h index ae1dca11e0..6057bf4ac5 100644 --- a/cpukit/include/rtems/confdefs.h +++ b/cpukit/include/rtems/confdefs.h @@ -2637,7 +2637,6 @@ struct _reent *__getreent(void) * This is the primary Configuration Table for this application. */ const rtems_configuration_table Configuration = { - CONFIGURE_EXECUTIVE_RAM_SIZE, /* required RTEMS workspace */ #ifdef CONFIGURE_UNIFIED_WORK_AREAS /* true for unified work areas */ true, #else @@ -2655,6 +2654,8 @@ struct _reent *__getreent(void) #endif }; + const uintptr_t _Workspace_Size = CONFIGURE_EXECUTIVE_RAM_SIZE; + #ifdef CONFIGURE_DIRTY_MEMORY RTEMS_SYSINIT_ITEM( _Memory_Dirty_free_areas, diff --git a/cpukit/include/rtems/config.h b/cpukit/include/rtems/config.h index 017b4ed476..0b5527c76d 100644 --- a/cpukit/include/rtems/config.h +++ b/cpukit/include/rtems/config.h @@ -34,6 +34,7 @@ #include <rtems/score/userextdata.h> #include <rtems/score/threadidledata.h> #include <rtems/score/watchdogticks.h> +#include <rtems/score/wkspacedata.h> #include <rtems/rtems/config.h> #include <rtems/extension.h> #if defined(RTEMS_MULTIPROCESSING) @@ -82,11 +83,6 @@ typedef Stack_Allocator_free rtems_stack_free_hook; * + required number of each object type for each API configured */ typedef struct { - /** - * This field specifies the size in bytes of the RTEMS Workspace. - */ - uintptr_t work_space_size; - /** * @brief Specifies if a unified work area is used or not. * @@ -132,7 +128,7 @@ extern const rtems_configuration_table Configuration; uintptr_t rtems_configuration_get_stack_space_size( void ); #define rtems_configuration_get_work_space_size() \ - (Configuration.work_space_size + \ + (_Workspace_Size + \ (rtems_configuration_get_stack_allocator_avoids_work_space() ? \ 0 : rtems_configuration_get_stack_space_size())) diff --git a/cpukit/include/rtems/score/wkspacedata.h b/cpukit/include/rtems/score/wkspacedata.h new file mode 100644 index 0000000000..b913c07f8e --- /dev/null +++ b/cpukit/include/rtems/score/wkspacedata.h @@ -0,0 +1,66 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * @file + * + * @ingroup RTEMSScoreWorkspace + * + * @brief Constants defined by the application configuration for the idle + * threads. + */ + +#ifndef _RTEMS_SCORE_WKSPACEDATA_H +#define _RTEMS_SCORE_WKSPACEDATA_H + +#include <rtems/score/basedefs.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @addtogroup RTEMSScoreWorkspace + * + * @{ + */ + +/** + * @brief The workspace size in bytes. + * + * This constant is defined by the application configuration via + * <rtems/confdefs.h>. + */ +extern const uintptr_t _Workspace_Size; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _RTEMS_SCORE_WKSPACEDATA_H */ -- 2.16.4 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel