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:
@@ -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"
|
||||
|
||||
|
||||
@@ -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
20
lib/kmem_cache.c
Normal 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);
|
||||
}
|
||||
Reference in New Issue
Block a user