From 2d07ce6d2145b4bdc6a9075e0727cde2a50180a6 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 4 Feb 2020 15:26:31 +0100 Subject: config: Add CONFIGURE_DIRTY_MEMORY Replace the BSP_DIRTY_MEMORY BSP option with a CONFIGURE_DIRTY_MEMORY configuration option. Update #3843. --- cpukit/Makefile.am | 1 + cpukit/include/rtems/confdefs.h | 8 +++++++ cpukit/include/rtems/score/memory.h | 5 +++++ cpukit/score/src/memorydirtyfreeareas.c | 37 +++++++++++++++++++++++++++++++++ 4 files changed, 51 insertions(+) create mode 100644 cpukit/score/src/memorydirtyfreeareas.c (limited to 'cpukit') diff --git a/cpukit/Makefile.am b/cpukit/Makefile.am index b9ab123b49..9182919558 100644 --- a/cpukit/Makefile.am +++ b/cpukit/Makefile.am @@ -853,6 +853,7 @@ librtemscpu_a_SOURCES += score/src/heapiterate.c librtemscpu_a_SOURCES += score/src/heapgreedy.c librtemscpu_a_SOURCES += score/src/heapnoextend.c librtemscpu_a_SOURCES += score/src/memoryallocate.c +librtemscpu_a_SOURCES += score/src/memorydirtyfreeareas.c librtemscpu_a_SOURCES += score/src/memoryfill.c librtemscpu_a_SOURCES += score/src/memoryzerobeforeuse.c librtemscpu_a_SOURCES += score/src/memoryzerofreeareas.c diff --git a/cpukit/include/rtems/confdefs.h b/cpukit/include/rtems/confdefs.h index 982e3ddb56..659fee936f 100644 --- a/cpukit/include/rtems/confdefs.h +++ b/cpukit/include/rtems/confdefs.h @@ -2802,6 +2802,14 @@ struct _reent *__getreent(void) #endif }; + #ifdef CONFIGURE_DIRTY_MEMORY + RTEMS_SYSINIT_ITEM( + _Memory_Dirty_free_areas, + RTEMS_SYSINIT_DIRTY_MEMORY, + RTEMS_SYSINIT_ORDER_MIDDLE + ); + #endif + #ifdef CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY const bool _Memory_Zero_before_use = true; diff --git a/cpukit/include/rtems/score/memory.h b/cpukit/include/rtems/score/memory.h index ffc4897ed5..440a59c793 100644 --- a/cpukit/include/rtems/score/memory.h +++ b/cpukit/include/rtems/score/memory.h @@ -344,6 +344,11 @@ extern const bool _Memory_Zero_before_use; */ void _Memory_Zero_free_areas( void ); +/** + * @brief Dirty all free memory areas of the system. + */ +void _Memory_Dirty_free_areas( void ); + /** @} */ #ifdef __cplusplus diff --git a/cpukit/score/src/memorydirtyfreeareas.c b/cpukit/score/src/memorydirtyfreeareas.c new file mode 100644 index 0000000000..537dff2697 --- /dev/null +++ b/cpukit/score/src/memorydirtyfreeareas.c @@ -0,0 +1,37 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (C) 2020 embedded brains GmbH + * + * 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. + */ + +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +void _Memory_Dirty_free_areas( void ) +{ + _Memory_Fill( _Memory_Get(), 0xcf ); +} -- cgit v1.2.3