tools: Move gfp.h and slab.h from radix-tree to lib
authorKarolina Drobnik <karolinadrobnik@gmail.com>
Wed, 2 Feb 2022 11:03:00 +0000 (12:03 +0100)
committerMike Rapoport <rppt@linux.ibm.com>
Sun, 20 Feb 2022 06:44:37 +0000 (08:44 +0200)
Merge radix-tree definitions from gfp.h and slab.h with these
in tools/lib, so they can be used in other test suites.
Fix style issues in slab.h. Update radix-tree test files.

Signed-off-by: Karolina Drobnik <karolinadrobnik@gmail.com>
Signed-off-by: Mike Rapoport <rppt@kernel.org>
Link: https://lore.kernel.org/r/b76ddb8a12fdf9870b55c1401213e44f5e0d0da3.1643796665.git.karolinadrobnik@gmail.com
tools/include/linux/gfp.h
tools/include/linux/slab.h [new file with mode: 0644]
tools/lib/slab.c [new file with mode: 0644]
tools/testing/radix-tree/Makefile
tools/testing/radix-tree/linux.c
tools/testing/radix-tree/linux/gfp.h [deleted file]
tools/testing/radix-tree/linux/slab.h [deleted file]

index 22030756fbc0a297b23c285c8abb18ce6841a10f..b238dbc9eb858675f701456da7cf6e1f52365197 100644 (file)
@@ -1,4 +1,32 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 #ifndef _TOOLS_INCLUDE_LINUX_GFP_H
 #define _TOOLS_INCLUDE_LINUX_GFP_H
 
+#include <linux/types.h>
+
+#define __GFP_BITS_SHIFT 26
+#define __GFP_BITS_MASK ((gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
+
+#define __GFP_HIGH             0x20u
+#define __GFP_IO               0x40u
+#define __GFP_FS               0x80u
+#define __GFP_NOWARN           0x200u
+#define __GFP_ZERO             0x8000u
+#define __GFP_ATOMIC           0x80000u
+#define __GFP_ACCOUNT          0x100000u
+#define __GFP_DIRECT_RECLAIM   0x400000u
+#define __GFP_KSWAPD_RECLAIM   0x2000000u
+
+#define __GFP_RECLAIM  (__GFP_DIRECT_RECLAIM | __GFP_KSWAPD_RECLAIM)
+
+#define GFP_ZONEMASK   0x0fu
+#define GFP_ATOMIC     (__GFP_HIGH | __GFP_ATOMIC | __GFP_KSWAPD_RECLAIM)
+#define GFP_KERNEL     (__GFP_RECLAIM | __GFP_IO | __GFP_FS)
+#define GFP_NOWAIT     (__GFP_KSWAPD_RECLAIM)
+
+static inline bool gfpflags_allow_blocking(const gfp_t gfp_flags)
+{
+       return !!(gfp_flags & __GFP_DIRECT_RECLAIM);
+}
+
 #endif /* _TOOLS_INCLUDE_LINUX_GFP_H */
diff --git a/tools/include/linux/slab.h b/tools/include/linux/slab.h
new file mode 100644 (file)
index 0000000..07d7930
--- /dev/null
@@ -0,0 +1,28 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _TOOLS_SLAB_H
+#define _TOOLS_SLAB_H
+
+#include <linux/types.h>
+#include <linux/gfp.h>
+
+#define SLAB_PANIC 2
+#define SLAB_RECLAIM_ACCOUNT    0x00020000UL            /* Objects are reclaimable */
+
+#define kzalloc_node(size, flags, node) kmalloc(size, flags)
+
+void *kmalloc(size_t size, gfp_t gfp);
+void kfree(void *p);
+
+static inline void *kzalloc(size_t size, gfp_t gfp)
+{
+       return kmalloc(size, gfp | __GFP_ZERO);
+}
+
+void *kmem_cache_alloc(struct kmem_cache *cachep, int flags);
+void kmem_cache_free(struct kmem_cache *cachep, void *objp);
+
+struct kmem_cache *kmem_cache_create(const char *name, unsigned int size,
+                       unsigned int align, unsigned int flags,
+                       void (*ctor)(void *));
+
+#endif         /* _TOOLS_SLAB_H */
diff --git a/tools/lib/slab.c b/tools/lib/slab.c
new file mode 100644 (file)
index 0000000..959997f
--- /dev/null
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include <stdio.h>
+#include <string.h>
+
+#include <urcu/uatomic.h>
+#include <linux/slab.h>
+#include <malloc.h>
+#include <linux/gfp.h>
+
+int kmalloc_nr_allocated;
+int kmalloc_verbose;
+
+void *kmalloc(size_t size, gfp_t gfp)
+{
+       void *ret;
+
+       if (!(gfp & __GFP_DIRECT_RECLAIM))
+               return NULL;
+
+       ret = malloc(size);
+       uatomic_inc(&kmalloc_nr_allocated);
+       if (kmalloc_verbose)
+               printf("Allocating %p from malloc\n", ret);
+       if (gfp & __GFP_ZERO)
+               memset(ret, 0, size);
+       return ret;
+}
+
+void kfree(void *p)
+{
+       if (!p)
+               return;
+       uatomic_dec(&kmalloc_nr_allocated);
+       if (kmalloc_verbose)
+               printf("Freeing %p to malloc\n", p);
+       free(p);
+}
index aa6abfe0749c1a8fcf81a62d53ae59df8b2a865b..c4ea4fbb0bfcd1fad58c282e43e80b099af2de9f 100644 (file)
@@ -5,7 +5,8 @@ CFLAGS += -I. -I../../include -g -Og -Wall -D_LGPL_SOURCE -fsanitize=address \
 LDFLAGS += -fsanitize=address -fsanitize=undefined
 LDLIBS+= -lpthread -lurcu
 TARGETS = main idr-test multiorder xarray
-CORE_OFILES := xarray.o radix-tree.o idr.o linux.o test.o find_bit.o bitmap.o
+CORE_OFILES := xarray.o radix-tree.o idr.o linux.o test.o find_bit.o bitmap.o \
+                        slab.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
index 2d9c59df60de03be87fc92a5482b7c3eb17a4463..81539f5439546868dc2d8d9bfeed7374aa8ef8f3 100644 (file)
@@ -14,7 +14,6 @@
 
 int nr_allocated;
 int preempt_count;
-int kmalloc_verbose;
 int test_verbose;
 
 struct kmem_cache {
@@ -78,32 +77,6 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp)
        pthread_mutex_unlock(&cachep->lock);
 }
 
-void *kmalloc(size_t size, gfp_t gfp)
-{
-       void *ret;
-
-       if (!(gfp & __GFP_DIRECT_RECLAIM))
-               return NULL;
-
-       ret = malloc(size);
-       uatomic_inc(&nr_allocated);
-       if (kmalloc_verbose)
-               printf("Allocating %p from malloc\n", ret);
-       if (gfp & __GFP_ZERO)
-               memset(ret, 0, size);
-       return ret;
-}
-
-void kfree(void *p)
-{
-       if (!p)
-               return;
-       uatomic_dec(&nr_allocated);
-       if (kmalloc_verbose)
-               printf("Freeing %p to malloc\n", p);
-       free(p);
-}
-
 struct kmem_cache *
 kmem_cache_create(const char *name, unsigned int size, unsigned int align,
                unsigned int flags, void (*ctor)(void *))
diff --git a/tools/testing/radix-tree/linux/gfp.h b/tools/testing/radix-tree/linux/gfp.h
deleted file mode 100644 (file)
index 32159c0..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef _GFP_H
-#define _GFP_H
-
-#include <linux/types.h>
-
-#define __GFP_BITS_SHIFT 26
-#define __GFP_BITS_MASK ((gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
-
-#define __GFP_HIGH             0x20u
-#define __GFP_IO               0x40u
-#define __GFP_FS               0x80u
-#define __GFP_NOWARN           0x200u
-#define __GFP_ZERO             0x8000u
-#define __GFP_ATOMIC           0x80000u
-#define __GFP_ACCOUNT          0x100000u
-#define __GFP_DIRECT_RECLAIM   0x400000u
-#define __GFP_KSWAPD_RECLAIM   0x2000000u
-
-#define __GFP_RECLAIM  (__GFP_DIRECT_RECLAIM|__GFP_KSWAPD_RECLAIM)
-
-#define GFP_ZONEMASK   0x0fu
-#define GFP_ATOMIC     (__GFP_HIGH|__GFP_ATOMIC|__GFP_KSWAPD_RECLAIM)
-#define GFP_KERNEL     (__GFP_RECLAIM | __GFP_IO | __GFP_FS)
-#define GFP_NOWAIT     (__GFP_KSWAPD_RECLAIM)
-
-
-static inline bool gfpflags_allow_blocking(const gfp_t gfp_flags)
-{
-       return !!(gfp_flags & __GFP_DIRECT_RECLAIM);
-}
-
-#endif
diff --git a/tools/testing/radix-tree/linux/slab.h b/tools/testing/radix-tree/linux/slab.h
deleted file mode 100644 (file)
index 2958830..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef SLAB_H
-#define SLAB_H
-
-#include <linux/types.h>
-#include <linux/gfp.h>
-
-#define SLAB_HWCACHE_ALIGN 1
-#define SLAB_PANIC 2
-#define SLAB_RECLAIM_ACCOUNT    0x00020000UL            /* Objects are reclaimable */
-
-void *kmalloc(size_t size, gfp_t);
-void kfree(void *);
-
-static inline void *kzalloc(size_t size, gfp_t gfp)
-{
-        return kmalloc(size, gfp | __GFP_ZERO);
-}
-
-void *kmem_cache_alloc(struct kmem_cache *cachep, int flags);
-void kmem_cache_free(struct kmem_cache *cachep, void *objp);
-
-struct kmem_cache *kmem_cache_create(const char *name, unsigned int size,
-                       unsigned int align, unsigned int flags,
-                       void (*ctor)(void *));
-
-#endif         /* SLAB_H */