Ignore:
File:
1 edited

Legend:

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

    rabf6c01 rbab75df6  
    667667    size_t (*destructor)(void *obj), unsigned int flags)
    668668{
    669         slab_cache_t *cache = slab_alloc(&slab_cache_cache, FRAME_ATOMIC);
    670         if (!cache)
    671                 panic("Not enough memory to allocate slab cache %s.", name);
    672 
     669        slab_cache_t *cache = slab_alloc(&slab_cache_cache, 0);
    673670        _slab_cache_create(cache, name, size, align, constructor, destructor,
    674671            flags);
     
    733730NO_TRACE static void _slab_free(slab_cache_t *cache, void *obj, slab_t *slab)
    734731{
    735         if (!obj)
    736                 return;
    737 
    738732        ipl_t ipl = interrupts_disable();
    739733
     
    960954}
    961955
    962 void *malloc(size_t size)
     956static void *_malloc(size_t size, unsigned int flags)
    963957{
    964958        assert(_slab_initialized);
     
    970964        uint8_t idx = fnzb(size - 1) - SLAB_MIN_MALLOC_W + 1;
    971965
    972         return slab_alloc(malloc_caches[idx], FRAME_ATOMIC);
    973 }
    974 
    975 void *realloc(void *ptr, size_t size)
     966        return slab_alloc(malloc_caches[idx], flags);
     967}
     968
     969void *malloc(size_t size)
     970{
     971        return _malloc(size, FRAME_ATOMIC);
     972}
     973
     974/** Non-failing malloc.
     975 *  Never returns NULL, but may block forever if no memory is available.
     976 */
     977void *nfmalloc(size_t size)
     978{
     979        return _malloc(size, 0);
     980}
     981
     982static void *_realloc(void *ptr, size_t size, unsigned int flags)
    976983{
    977984        assert(_slab_initialized);
     
    985992                uint8_t idx = fnzb(size - 1) - SLAB_MIN_MALLOC_W + 1;
    986993
    987                 new_ptr = slab_alloc(malloc_caches[idx], FRAME_ATOMIC);
     994                new_ptr = slab_alloc(malloc_caches[idx], flags);
    988995        } else
    989996                new_ptr = NULL;
     
    10001007}
    10011008
     1009void *realloc(void *ptr, size_t size)
     1010{
     1011        return _realloc(ptr, size, FRAME_ATOMIC);
     1012}
     1013
    10021014void free(void *ptr)
    10031015{
Note: See TracChangeset for help on using the changeset viewer.