Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 772 → Rev 771

/kernel/trunk/generic/src/mm/slab.c
365,9 → 365,6
slab_magazine_t *mag;
void *obj;
 
if (!CPU)
return NULL;
 
spinlock_lock(&cache->mag_cache[CPU->id].lock);
 
mag = get_full_current_mag(cache);
438,9 → 435,6
{
slab_magazine_t *mag;
 
if (!CPU)
return -1;
 
spinlock_lock(&cache->mag_cache[CPU->id].lock);
 
mag = make_empty_current_mag(cache);
513,12 → 507,9
list_initialize(&cache->magazines);
spinlock_initialize(&cache->lock, "cachelock");
if (! (cache->flags & SLAB_CACHE_NOMAGAZINE)) {
for (i=0; i< config.cpu_count; i++) {
memsetb((__address)&cache->mag_cache[i],
sizeof(cache->mag_cache[i]), 0);
for (i=0; i< config.cpu_count; i++)
spinlock_initialize(&cache->mag_cache[i].lock,
"cpucachelock");
}
}
 
/* Compute slab sizes, object counts in slabs etc. */
653,7 → 644,7
/* Disable interrupts to avoid deadlocks with interrupt handlers */
ipl = interrupts_disable();
 
if (!(cache->flags & SLAB_CACHE_NOMAGAZINE))
if (!(cache->flags & SLAB_CACHE_NOMAGAZINE) && CPU)
result = magazine_obj_get(cache);
 
if (!result) {
678,7 → 669,9
ipl = interrupts_disable();
 
if ((cache->flags & SLAB_CACHE_NOMAGAZINE) \
|| !CPU \
|| magazine_obj_put(cache, obj)) {
spinlock_lock(&cache->lock);
slab_obj_destroy(cache, obj, slab);
spinlock_unlock(&cache->lock);