39 lines · c
1// SPDX-License-Identifier: GPL-2.02 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}39