Commit | Line | Data |
---|---|---|
aa0eab86 KD |
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 | } |