lkml.org 
[lkml]   [2022]   [Apr]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v8 03/70] radix tree test suite: add allocation counts and size to kmem_cache
    Date
    From: "Liam R. Howlett" <Liam.Howlett@Oracle.com>

    Add functions to get the number of allocations, and total allocations from
    a kmem_cache. Also add a function to get the allocated size and a way to
    zero the total allocations.

    Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
    ---
    tools/testing/radix-tree/linux.c | 27 +++++++++++++++++++++++++++
    1 file changed, 27 insertions(+)

    diff --git a/tools/testing/radix-tree/linux.c b/tools/testing/radix-tree/linux.c
    index 586fef78dbf7..e64741ef89ef 100644
    --- a/tools/testing/radix-tree/linux.c
    +++ b/tools/testing/radix-tree/linux.c
    @@ -24,6 +24,8 @@ struct kmem_cache {
    void *objs;
    void (*ctor)(void *);
    unsigned int non_kernel;
    + unsigned long nr_allocated;
    + unsigned long nr_tallocated;
    };

    void kmem_cache_set_non_kernel(struct kmem_cache *cachep, unsigned int val)
    @@ -31,6 +33,26 @@ void kmem_cache_set_non_kernel(struct kmem_cache *cachep, unsigned int val)
    cachep->non_kernel = val;
    }

    +unsigned long kmem_cache_get_alloc(struct kmem_cache *cachep)
    +{
    + return cachep->size * cachep->nr_allocated;
    +}
    +
    +unsigned long kmem_cache_nr_allocated(struct kmem_cache *cachep)
    +{
    + return cachep->nr_allocated;
    +}
    +
    +unsigned long kmem_cache_nr_tallocated(struct kmem_cache *cachep)
    +{
    + return cachep->nr_tallocated;
    +}
    +
    +void kmem_cache_zero_nr_tallocated(struct kmem_cache *cachep)
    +{
    + cachep->nr_tallocated = 0;
    +}
    +
    void *kmem_cache_alloc(struct kmem_cache *cachep, int gfp)
    {
    void *p;
    @@ -62,7 +84,9 @@ void *kmem_cache_alloc(struct kmem_cache *cachep, int gfp)
    memset(p, 0, cachep->size);
    }

    + uatomic_inc(&cachep->nr_allocated);
    uatomic_inc(&nr_allocated);
    + uatomic_inc(&cachep->nr_tallocated);
    if (kmalloc_verbose)
    printf("Allocating %p from slab\n", p);
    return p;
    @@ -72,6 +96,7 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp)
    {
    assert(objp);
    uatomic_dec(&nr_allocated);
    + uatomic_dec(&cachep->nr_allocated);
    if (kmalloc_verbose)
    printf("Freeing %p to slab\n", objp);
    pthread_mutex_lock(&cachep->lock);
    @@ -97,6 +122,8 @@ kmem_cache_create(const char *name, unsigned int size, unsigned int align,
    ret->size = size;
    ret->align = align;
    ret->nr_objs = 0;
    + ret->nr_allocated = 0;
    + ret->nr_tallocated = 0;
    ret->objs = NULL;
    ret->ctor = ctor;
    ret->non_kernel = 0;
    --
    2.35.1
    \
     
     \ /
      Last update: 2022-04-26 17:07    [W:4.520 / U:0.800 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site