tools: separate out shared radix-tree components

The core components contained within the radix-tree tests which provide
shims for kernel headers and access to the maple tree are useful for
testing other things, so separate them out and make the radix tree tests
dependent on the shared components.

This lays the groundwork for us to add VMA tests of the newly introduced
vma.c file.

Link: https://lkml.kernel.org/r/1ee720c265808168e0d75608e687607d77c36719.1722251717.git.lorenzo.stoakes@oracle.com
Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Reviewed-by: Liam R. Howlett <Liam.Howlett@oracle.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Brendan Higgins <brendanhiggins@google.com>
Cc: Christian Brauner <brauner@kernel.org>
Cc: David Gow <davidgow@google.com>
Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Kees Cook <kees@kernel.org>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Rae Moar <rmoar@google.com>
Cc: SeongJae Park <sj@kernel.org>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Pengfei Xu <pengfei.xu@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Lorenzo Stoakes 2024-07-29 12:50:40 +01:00 committed by Andrew Morton
parent 802443a44d
commit 74579d8dab
27 changed files with 144 additions and 69 deletions

View File

@ -1,4 +1,5 @@
# SPDX-License-Identifier: GPL-2.0-only
generated/autoconf.h
generated/bit-length.h
generated/map-shift.h
idr.c

View File

@ -1,77 +1,29 @@
# SPDX-License-Identifier: GPL-2.0
CFLAGS += -I. -I../../include -I../../../lib -g -Og -Wall \
-D_LGPL_SOURCE -fsanitize=address -fsanitize=undefined
LDFLAGS += -fsanitize=address -fsanitize=undefined
LDLIBS+= -lpthread -lurcu
.PHONY: clean
TARGETS = main idr-test multiorder xarray maple
LIBS := slab.o find_bit.o bitmap.o hweight.o vsprintf.o
CORE_OFILES := xarray.o radix-tree.o idr.o linux.o test.o maple.o $(LIBS)
OFILES = main.o $(CORE_OFILES) regression1.o regression2.o regression3.o \
regression4.o tag_check.o multiorder.o idr-test.o iteration_check.o \
iteration_check_2.o benchmark.o
ifndef SHIFT
SHIFT=3
endif
ifeq ($(BUILD), 32)
CFLAGS += -m32
LDFLAGS += -m32
LONG_BIT := 32
endif
ifndef LONG_BIT
LONG_BIT := $(shell getconf LONG_BIT)
endif
CORE_OFILES = $(SHARED_OFILES) xarray.o maple.o test.o
OFILES = main.o $(CORE_OFILES) regression1.o regression2.o \
regression3.o regression4.o tag_check.o multiorder.o idr-test.o \
iteration_check.o iteration_check_2.o benchmark.o
targets: generated/map-shift.h generated/bit-length.h $(TARGETS)
include ../shared/shared.mk
main: $(OFILES)
idr-test.o: ../../../lib/test_ida.c
idr-test: idr-test.o $(CORE_OFILES)
xarray: $(CORE_OFILES)
xarray: $(CORE_OFILES) xarray.o
maple: $(CORE_OFILES)
maple: $(CORE_OFILES) maple.o
multiorder: multiorder.o $(CORE_OFILES)
clean:
$(RM) $(TARGETS) *.o radix-tree.c idr.c generated/map-shift.h generated/bit-length.h
$(RM) $(TARGETS) *.o radix-tree.c idr.c generated/*
vpath %.c ../../lib
$(OFILES): Makefile *.h */*.h generated/map-shift.h generated/bit-length.h \
../../include/linux/*.h \
../../include/asm/*.h \
../../../include/linux/xarray.h \
../../../include/linux/maple_tree.h \
../../../include/linux/radix-tree.h \
../../../lib/radix-tree.h \
../../../include/linux/idr.h
radix-tree.c: ../../../lib/radix-tree.c
sed -e 's/^static //' -e 's/__always_inline //' -e 's/inline //' < $< > $@
idr.c: ../../../lib/idr.c
sed -e 's/^static //' -e 's/__always_inline //' -e 's/inline //' < $< > $@
xarray.o: ../../../lib/xarray.c ../../../lib/test_xarray.c
maple.o: ../../../lib/maple_tree.c ../../../lib/test_maple_tree.c
generated/map-shift.h:
@if ! grep -qws $(SHIFT) generated/map-shift.h; then \
echo "#define XA_CHUNK_SHIFT $(SHIFT)" > \
generated/map-shift.h; \
fi
generated/bit-length.h: FORCE
@if ! grep -qws CONFIG_$(LONG_BIT)BIT generated/bit-length.h; then \
echo "Generating $@"; \
echo "#define CONFIG_$(LONG_BIT)BIT 1" > $@; \
fi
FORCE: ;
$(OFILES): $(SHARED_DEPS) *.h

View File

@ -4,17 +4,9 @@
* Copyright (c) 2018 Matthew Wilcox <willy@infradead.org>
*/
#define XA_DEBUG
#include "xarray-shared.h"
#include "test.h"
#define module_init(x)
#define module_exit(x)
#define MODULE_AUTHOR(x)
#define MODULE_DESCRIPTION(X)
#define MODULE_LICENSE(x)
#define dump_stack() assert(0)
#include "../../../lib/xarray.c"
#undef XA_DEBUG
#include "../../../lib/test_xarray.c"

View File

@ -0,0 +1,9 @@
/* SPDX-License-Identifier: GPL-2.0+ */
#define CONFIG_DEBUG_MAPLE_TREE
#define CONFIG_MAPLE_SEARCH
#define MAPLE_32BIT (MAPLE_NODE_SLOTS > 31)
#include "shared.h"
#include <stdlib.h>
#include <time.h>
#include "linux/init.h"

View File

@ -0,0 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/* Very simple shim around the maple tree. */
#include "maple-shared.h"
#include "../../../lib/maple_tree.c"

View File

@ -0,0 +1,33 @@
/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/types.h>
#include <linux/bug.h>
#include <linux/kernel.h>
#include <linux/bitops.h>
#include <linux/gfp.h>
#include <linux/rcupdate.h>
#ifndef module_init
#define module_init(x)
#endif
#ifndef module_exit
#define module_exit(x)
#endif
#ifndef MODULE_AUTHOR
#define MODULE_AUTHOR(x)
#endif
#ifndef MODULE_LICENSE
#define MODULE_LICENSE(x)
#endif
#ifndef MODULE_DESCRIPTION
#define MODULE_DESCRIPTION(x)
#endif
#ifndef dump_stack
#define dump_stack() assert(0)
#endif

View File

@ -0,0 +1,72 @@
# SPDX-License-Identifier: GPL-2.0
CFLAGS += -I../shared -I. -I../../include -I../../../lib -g -Og -Wall \
-D_LGPL_SOURCE -fsanitize=address -fsanitize=undefined
LDFLAGS += -fsanitize=address -fsanitize=undefined
LDLIBS += -lpthread -lurcu
LIBS := slab.o find_bit.o bitmap.o hweight.o vsprintf.o
SHARED_OFILES = xarray-shared.o radix-tree.o idr.o linux.o $(LIBS)
SHARED_DEPS = Makefile ../shared/shared.mk ../shared/*.h generated/map-shift.h \
generated/bit-length.h generated/autoconf.h \
../../include/linux/*.h \
../../include/asm/*.h \
../../../include/linux/xarray.h \
../../../include/linux/maple_tree.h \
../../../include/linux/radix-tree.h \
../../../lib/radix-tree.h \
../../../include/linux/idr.h
ifndef SHIFT
SHIFT=3
endif
ifeq ($(BUILD), 32)
CFLAGS += -m32
LDFLAGS += -m32
LONG_BIT := 32
endif
ifndef LONG_BIT
LONG_BIT := $(shell getconf LONG_BIT)
endif
%.o: ../shared/%.c
$(CC) -c $(CFLAGS) $< -o $@
vpath %.c ../../lib
$(SHARED_OFILES): $(SHARED_DEPS)
radix-tree.c: ../../../lib/radix-tree.c
sed -e 's/^static //' -e 's/__always_inline //' -e 's/inline //' < $< > $@
idr.c: ../../../lib/idr.c
sed -e 's/^static //' -e 's/__always_inline //' -e 's/inline //' < $< > $@
xarray-shared.o: ../shared/xarray-shared.c ../../../lib/xarray.c \
../../../lib/test_xarray.c
maple-shared.o: ../shared/maple-shared.c ../../../lib/maple_tree.c \
../../../lib/test_maple_tree.c
generated/autoconf.h:
@mkdir -p generated
cp ../shared/autoconf.h generated/autoconf.h
generated/map-shift.h:
@mkdir -p generated
@if ! grep -qws $(SHIFT) generated/map-shift.h; then \
echo "Generating $@"; \
echo "#define XA_CHUNK_SHIFT $(SHIFT)" > \
generated/map-shift.h; \
fi
generated/bit-length.h: FORCE
@mkdir -p generated
@if ! grep -qws CONFIG_$(LONG_BIT)BIT generated/bit-length.h; then \
echo "Generating $@"; \
echo "#define CONFIG_$(LONG_BIT)BIT 1" > $@; \
fi
FORCE: ;

View File

@ -0,0 +1,5 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#include "xarray-shared.h"
#include "../../../lib/xarray.c"

View File

@ -0,0 +1,4 @@
/* SPDX-License-Identifier: GPL-2.0+ */
#define XA_DEBUG
#include "shared.h"