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