Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
[platform/kernel/linux-rpi.git] / tools / lib / slab.c
1 // SPDX-License-Identifier: GPL-2.0
2
3 #include <stdio.h>
4 #include <string.h>
5
6 #include <urcu/uatomic.h>
7 #include <linux/slab.h>
8 #include <malloc.h>
9 #include <linux/gfp.h>
10
11 int kmalloc_nr_allocated;
12 int kmalloc_verbose;
13
14 void *kmalloc(size_t size, gfp_t gfp)
15 {
16         void *ret;
17
18         if (!(gfp & __GFP_DIRECT_RECLAIM))
19                 return NULL;
20
21         ret = malloc(size);
22         uatomic_inc(&kmalloc_nr_allocated);
23         if (kmalloc_verbose)
24                 printf("Allocating %p from malloc\n", ret);
25         if (gfp & __GFP_ZERO)
26                 memset(ret, 0, size);
27         return ret;
28 }
29
30 void kfree(void *p)
31 {
32         if (!p)
33                 return;
34         uatomic_dec(&kmalloc_nr_allocated);
35         if (kmalloc_verbose)
36                 printf("Freeing %p to malloc\n", p);
37         free(p);
38 }