Changeset 266294a9 in mainline for generic/src/mm/slab.c


Ignore:
Timestamp:
2006-02-05T17:01:03Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
5c9a08b
Parents:
9b9e385
Message:

Added constructor/destructor calls to SLAB.
Changed allocation of thread_t structure to use SLAB.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • generic/src/mm/slab.c

    r9b9e385 r266294a9  
    229229                                slab_t *slab)
    230230{
     231        int freed = 0;
     232
    231233        if (!slab)
    232234                slab = obj2slab(obj);
     
    235237        ASSERT(slab->available < cache->objects);
    236238
     239        if (cache->destructor)
     240                freed = cache->destructor(obj);
     241       
    237242        spinlock_lock(&cache->slablock);
    238243
     
    247252                spinlock_unlock(&cache->slablock);
    248253
    249                 return slab_space_free(cache, slab);
     254                return freed + slab_space_free(cache, slab);
    250255
    251256        } else if (slab->available == 1) {
     
    255260        }
    256261        spinlock_unlock(&cache->slablock);
    257         return 0;
     262        return freed;
    258263}
    259264
     
    291296        slab->nextavail = *((int *)obj);
    292297        slab->available--;
     298
    293299        if (! slab->available)
    294300                list_prepend(&slab->link, &cache->full_slabs);
     
    297303
    298304        spinlock_unlock(&cache->slablock);
     305
     306        if (cache->constructor && cache->constructor(obj, flags)) {
     307                /* Bad, bad, construction failed */
     308                slab_obj_destroy(cache, obj, slab);
     309                return NULL;
     310        }
    299311        return obj;
    300312}
     
    532544                   size_t align,
    533545                   int (*constructor)(void *obj, int kmflag),
    534                    void (*destructor)(void *obj),
     546                   int (*destructor)(void *obj),
    535547                   int flags)
    536548{
     
    597609                                 size_t align,
    598610                                 int (*constructor)(void *obj, int kmflag),
    599                                  void (*destructor)(void *obj),
     611                                 int (*destructor)(void *obj),
    600612                                 int flags)
    601613{
Note: See TracChangeset for help on using the changeset viewer.