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 | } |
39 |