From: Simon Glass <simon.glass@canonical.com>
Add CONFIG_SYS_MALLOC_LEGACY to select the current allocator and adjust
the header-file and Makefile rule to use the new dlmalloc
implementation.
Co-developed-by: Claude <noreply@anthropic.com>
Signed-off-by: Simon Glass <simon.glass@canonical.com>
---
Kconfig | 16 ++++++++++++++++
common/Makefile | 4 ++++
include/malloc.h | 19 +++++++------------
3 files changed, 27 insertions(+), 12 deletions(-)
@@ -511,6 +511,22 @@ config SPL_SYS_MALLOC_SMALL
If unsure, say Y to minimize SPL code size.
+config SYS_MALLOC_LEGACY
+ bool "Use legacy dlmalloc 2.6.6 instead of dlmalloc 2.8.6"
+ help
+ Select this option to use the older dlmalloc 2.6.6 implementation
+ instead of the newer 2.8.6 version. The legacy allocator uses a
+ simpler bin system, has larger code size in most cases and uses more
+ static data.
+
+ The legacy allocator may have slightly worse fragmentation behavior
+ for some workloads but has been well-tested over many years in U-Boot.
+
+ This option is provided for compatibility and testing. New boards
+ should use the default dlmalloc 2.8.6.
+
+ If unsure, say N to use the modern allocator.
+
config TOOLS_DEBUG
bool "Enable debug information for tools"
help
@@ -71,7 +71,11 @@ obj-$(CONFIG_BOUNCE_BUFFER) += bouncebuf.o
obj-$(CONFIG_$(PHASE_)SERIAL) += console.o
obj-$(CONFIG_CROS_EC) += cros_ec.o
+ifdef CONFIG_SYS_MALLOC_LEGACY
obj-y += dlmalloc_old.o
+else
+obj-y += dlmalloc.o
+endif
obj-$(CONFIG_$(PHASE_)SYS_MALLOC_F) += malloc_simple.o
obj-$(CONFIG_$(PHASE_)CYCLIC) += cyclic.o
@@ -1,15 +1,4 @@
/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * Stub header to include the old malloc header
- *
- * This allows the old malloc implementation to be preserved while
- * preparing for a new dlmalloc version.
- */
-
-#include <malloc_old.h>
-
-#if 0 /* not active yet */
-
/*
Default header file for malloc-2.8.x, written by Doug Lea
and released to the public domain, as explained at
@@ -32,6 +21,12 @@
* If MSPACES is defined, declarations for mspace versions are included.
*/
+#ifdef CONFIG_SYS_MALLOC_LEGACY
+
+#include <malloc_old.h>
+
+#else
+
#ifndef MALLOC_280_H
#define MALLOC_280_H
@@ -748,4 +743,4 @@ int initf_malloc(void);
#endif /* MALLOC_280_H */
-#endif /* not active yet */
+#endif /* !CONFIG_SYS_MALLOC_LEGACY */