lkml.org 
[lkml]   [2006]   [Jan]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[patch 05/10] slab: extract slab_destroy_objs()
    From: Matthew Dobson <colpatch@us.ibm.com>

    This patch creates a helper function, slab_destroy_objs() which called from
    slab_destroy(). This makes slab_destroy() smaller and more readable, and moves
    ifdefs outside the function body.

    Signed-off-by: Matthew Dobson <colpatch@us.ibm.com>
    Acked-by: Manfred Spraul <manfred@colorfullife.com>
    Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
    ---

    mm/slab.c | 26 +++++++++++++++++++-------
    1 file changed, 19 insertions(+), 7 deletions(-)

    Index: 2.6/mm/slab.c
    ===================================================================
    --- 2.6.orig/mm/slab.c
    +++ 2.6/mm/slab.c
    @@ -1456,15 +1456,13 @@ static void check_poison_obj(kmem_cache_
    }
    #endif

    -/* Destroy all the objs in a slab, and release the mem back to the system.
    - * Before calling the slab must have been unlinked from the cache.
    - * The cache-lock is not held/needed.
    +#if DEBUG
    +/**
    + * slab_destroy_objs - call the registered destructor for each object in
    + * a slab that is to be destroyed.
    */
    -static void slab_destroy(kmem_cache_t *cachep, struct slab *slabp)
    +static void slab_destroy_objs(kmem_cache_t *cachep, struct slab *slabp)
    {
    - void *addr = slabp->s_mem - slabp->colouroff;
    -
    -#if DEBUG
    int i;
    for (i = 0; i < cachep->num; i++) {
    void *objp = slabp->s_mem + cachep->buffer_size * i;
    @@ -1493,7 +1491,10 @@ static void slab_destroy(kmem_cache_t *c
    if (cachep->dtor && !(cachep->flags & SLAB_POISON))
    (cachep->dtor) (objp + obj_offset(cachep), cachep, 0);
    }
    +}
    #else
    +static void slab_destroy_objs(kmem_cache_t *cachep, struct slab *slabp)
    +{
    if (cachep->dtor) {
    int i;
    for (i = 0; i < cachep->num; i++) {
    @@ -1501,8 +1502,19 @@ static void slab_destroy(kmem_cache_t *c
    (cachep->dtor) (objp, cachep, 0);
    }
    }
    +}
    #endif

    +/**
    + * Destroy all the objs in a slab, and release the mem back to the system.
    + * Before calling the slab must have been unlinked from the cache.
    + * The cache-lock is not held/needed.
    + */
    +static void slab_destroy(kmem_cache_t *cachep, struct slab *slabp)
    +{
    + void *addr = slabp->s_mem - slabp->colouroff;
    +
    + slab_destroy_objs(cachep, slabp);
    if (unlikely(cachep->flags & SLAB_DESTROY_BY_RCU)) {
    struct slab_rcu *slab_rcu;

    --

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-01-14 13:51    [W:0.026 / U:95.212 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site