lib: Add CONFIG_LIB_KMEM_CACHE for full kmem_cache support

Add a Kconfig option to control whether full kmem_cache_free() and
kmem_cache_destroy() implementations are provided in lib/linux_compat.c

Most boards do not need these functions, so they can use simple inline
stubs in slab.h. Subsystems like ext4 that require proper cache
management can select CONFIG_LIB_KMEM_CACHE.

Co-developed-by: Claude <noreply@anthropic.com>
Signed-off-by: Simon Glass <simon.glass@canonical.com>
This commit is contained in:
Simon Glass
2025-12-30 11:00:02 -07:00
parent 78fd087470
commit e63fc511c3
4 changed files with 46 additions and 12 deletions

View File

@@ -396,6 +396,14 @@ config TPL_TINY_MEMSET
config RBTREE
bool
config LIB_KMEM_CACHE
bool "Enable full kmem_cache implementation"
help
Provide a proper kmem_cache implementation in lib/linux_compat.c
that tracks allocated objects. This is needed by subsystems like
ext4 that require cache management. When disabled, simple inline
stubs are used instead.
config BITREVERSE
bool "Bit reverse library from Linux"

View File

@@ -135,6 +135,7 @@ obj-$(CONFIG_$(PHASE_)OF_LIBFDT) += fdtdec.o fdtdec_common.o fdt_print.o
obj-y += hang.o
obj-y += linux_compat.o
obj-y += linux_string.o
obj-$(CONFIG_$(PHASE_)LIB_KMEM_CACHE) += kmem_cache.o
obj-$(CONFIG_$(PHASE_)LMB) += lmb.o
obj-y += membuf.o
obj-$(CONFIG_REGEX) += slre.o

20
lib/kmem_cache.c Normal file
View File

@@ -0,0 +1,20 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* kmem_cache implementation for U-Boot
*
* Copyright 2025 Canonical Ltd
* Written by Simon Glass <simon.glass@canonical.com>
*/
#include <malloc.h>
#include <linux/slab.h>
void kmem_cache_free(struct kmem_cache *cachep, void *obj)
{
free(obj);
}
void kmem_cache_destroy(struct kmem_cache *cachep)
{
free(cachep);
}