slab.c (664B)
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 11int kmalloc_nr_allocated; 12int kmalloc_verbose; 13 14void *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 30void 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}