diff options
Diffstat (limited to 'tools/testing/radix-tree/linux.c')
| -rw-r--r-- | tools/testing/radix-tree/linux.c | 39 | 
1 files changed, 14 insertions, 25 deletions
diff --git a/tools/testing/radix-tree/linux.c b/tools/testing/radix-tree/linux.c index d31ea7c9abec..cf48c8473f48 100644 --- a/tools/testing/radix-tree/linux.c +++ b/tools/testing/radix-tree/linux.c @@ -5,7 +5,7 @@  #include <unistd.h>  #include <assert.h> -#include <linux/mempool.h> +#include <linux/gfp.h>  #include <linux/poison.h>  #include <linux/slab.h>  #include <linux/radix-tree.h> @@ -13,6 +13,8 @@  int nr_allocated;  int preempt_count; +int kmalloc_verbose; +int test_verbose;  struct kmem_cache {  	pthread_mutex_t lock; @@ -22,27 +24,6 @@ struct kmem_cache {  	void (*ctor)(void *);  }; -void *mempool_alloc(mempool_t *pool, int gfp_mask) -{ -	return pool->alloc(gfp_mask, pool->data); -} - -void mempool_free(void *element, mempool_t *pool) -{ -	pool->free(element, pool->data); -} - -mempool_t *mempool_create(int min_nr, mempool_alloc_t *alloc_fn, -			mempool_free_t *free_fn, void *pool_data) -{ -	mempool_t *ret = malloc(sizeof(*ret)); - -	ret->alloc = alloc_fn; -	ret->free = free_fn; -	ret->data = pool_data; -	return ret; -} -  void *kmem_cache_alloc(struct kmem_cache *cachep, int flags)  {  	struct radix_tree_node *node; @@ -54,9 +35,9 @@ void *kmem_cache_alloc(struct kmem_cache *cachep, int flags)  	if (cachep->nr_objs) {  		cachep->nr_objs--;  		node = cachep->objs; -		cachep->objs = node->private_data; +		cachep->objs = node->parent;  		pthread_mutex_unlock(&cachep->lock); -		node->private_data = NULL; +		node->parent = NULL;  	} else {  		pthread_mutex_unlock(&cachep->lock);  		node = malloc(cachep->size); @@ -65,6 +46,8 @@ void *kmem_cache_alloc(struct kmem_cache *cachep, int flags)  	}  	uatomic_inc(&nr_allocated); +	if (kmalloc_verbose) +		printf("Allocating %p from slab\n", node);  	return node;  } @@ -72,6 +55,8 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp)  {  	assert(objp);  	uatomic_dec(&nr_allocated); +	if (kmalloc_verbose) +		printf("Freeing %p to slab\n", objp);  	pthread_mutex_lock(&cachep->lock);  	if (cachep->nr_objs > 10) {  		memset(objp, POISON_FREE, cachep->size); @@ -79,7 +64,7 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp)  	} else {  		struct radix_tree_node *node = objp;  		cachep->nr_objs++; -		node->private_data = cachep->objs; +		node->parent = cachep->objs;  		cachep->objs = node;  	}  	pthread_mutex_unlock(&cachep->lock); @@ -89,6 +74,8 @@ void *kmalloc(size_t size, gfp_t gfp)  {  	void *ret = malloc(size);  	uatomic_inc(&nr_allocated); +	if (kmalloc_verbose) +		printf("Allocating %p from malloc\n", ret);  	return ret;  } @@ -97,6 +84,8 @@ void kfree(void *p)  	if (!p)  		return;  	uatomic_dec(&nr_allocated); +	if (kmalloc_verbose) +		printf("Freeing %p to malloc\n", p);  	free(p);  }  | 
