Rev 814 | Rev 1144 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 814 | Rev 822 | ||
---|---|---|---|
Line 540... | Line 540... | ||
540 | { |
540 | { |
541 | int i; |
541 | int i; |
542 | 542 | ||
543 | ASSERT(_slab_initialized >= 2); |
543 | ASSERT(_slab_initialized >= 2); |
544 | 544 | ||
545 | cache->mag_cache = kalloc(sizeof(slab_mag_cache_t)*config.cpu_count,0); |
545 | cache->mag_cache = malloc(sizeof(slab_mag_cache_t)*config.cpu_count,0); |
546 | for (i=0; i < config.cpu_count; i++) { |
546 | for (i=0; i < config.cpu_count; i++) { |
547 | memsetb((__address)&cache->mag_cache[i], |
547 | memsetb((__address)&cache->mag_cache[i], |
548 | sizeof(cache->mag_cache[i]), 0); |
548 | sizeof(cache->mag_cache[i]), 0); |
549 | spinlock_initialize(&cache->mag_cache[i].lock, |
549 | spinlock_initialize(&cache->mag_cache[i].lock, |
550 | "slab_maglock_cpu"); |
550 | "slab_maglock_cpu"); |
Line 703... | Line 703... | ||
703 | if (!list_empty(&cache->full_slabs) \ |
703 | if (!list_empty(&cache->full_slabs) \ |
704 | || !list_empty(&cache->partial_slabs)) |
704 | || !list_empty(&cache->partial_slabs)) |
705 | panic("Destroying cache that is not empty."); |
705 | panic("Destroying cache that is not empty."); |
706 | 706 | ||
707 | if (!(cache->flags & SLAB_CACHE_NOMAGAZINE)) |
707 | if (!(cache->flags & SLAB_CACHE_NOMAGAZINE)) |
708 | kfree(cache->mag_cache); |
708 | free(cache->mag_cache); |
709 | slab_free(&slab_cache_cache, cache); |
709 | slab_free(&slab_cache_cache, cache); |
710 | } |
710 | } |
711 | 711 | ||
712 | /** Allocate new object from cache - if no flags given, always returns |
712 | /** Allocate new object from cache - if no flags given, always returns |
713 | memory */ |
713 | memory */ |
Line 869... | Line 869... | ||
869 | spinlock_unlock(&slab_cache_lock); |
869 | spinlock_unlock(&slab_cache_lock); |
870 | } |
870 | } |
871 | 871 | ||
872 | /**************************************/ |
872 | /**************************************/ |
873 | /* kalloc/kfree functions */ |
873 | /* kalloc/kfree functions */ |
874 | void * kalloc(unsigned int size, int flags) |
874 | void * malloc(unsigned int size, int flags) |
875 | { |
875 | { |
876 | int idx; |
876 | int idx; |
877 | 877 | ||
878 | ASSERT(_slab_initialized); |
878 | ASSERT(_slab_initialized); |
879 | ASSERT( size && size <= (1 << SLAB_MAX_MALLOC_W)); |
879 | ASSERT( size && size <= (1 << SLAB_MAX_MALLOC_W)); |
Line 885... | Line 885... | ||
885 | 885 | ||
886 | return slab_alloc(malloc_caches[idx], flags); |
886 | return slab_alloc(malloc_caches[idx], flags); |
887 | } |
887 | } |
888 | 888 | ||
889 | 889 | ||
890 | void kfree(void *obj) |
890 | void free(void *obj) |
891 | { |
891 | { |
892 | slab_t *slab; |
892 | slab_t *slab; |
893 | 893 | ||
894 | if (!obj) return; |
894 | if (!obj) return; |
895 | 895 |