lkml.org 
[lkml]   [2005]   [Dec]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[RFC][PATCH 4/6] Slab Prep: slab_destruct()
    Create a helper function for slab_destroy() called slab_destruct().  Remove
    some ifdefs inside functions and generally make the slab destroying code
    more readable prior to slab support for the Critical Page Pool.

    -Matt
    Create a helper function, slab_destruct(), 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>

    Index: linux-2.6.15-rc5+critical_pool/mm/slab.c
    ===================================================================
    --- linux-2.6.15-rc5+critical_pool.orig/mm/slab.c 2005-12-05 10:20:43.886907432 -0800
    +++ linux-2.6.15-rc5+critical_pool/mm/slab.c 2005-12-05 10:20:45.289694176 -0800
    @@ -1401,15 +1401,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_destruct - 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_destruct(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->objsize * i;
    @@ -1435,7 +1433,10 @@ static void slab_destroy (kmem_cache_t *
    if (cachep->dtor && !(cachep->flags & SLAB_POISON))
    (cachep->dtor)(objp+obj_dbghead(cachep), cachep, 0);
    }
    +}
    #else
    +static void slab_destruct(kmem_cache_t *cachep, struct slab *slabp)
    +{
    if (cachep->dtor) {
    int i;
    for (i = 0; i < cachep->num; i++) {
    @@ -1443,8 +1444,19 @@ static void slab_destroy (kmem_cache_t *
    (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_destruct(cachep, slabp);
    if (unlikely(cachep->flags & SLAB_DESTROY_BY_RCU)) {
    struct slab_rcu *slab_rcu;
    \
     
     \ /
      Last update: 2005-12-14 09:00    [W:0.028 / U:60.880 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site