Changeset 81e52f2a in mainline


Ignore:
Timestamp:
2006-02-04T00:53:19Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c5613b7
Parents:
c352c2e
Message:

Fixed non-initialized cpu-cache.

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • generic/include/bitops.h

    rc352c2e r81e52f2a  
    4141        int n = 0;
    4242
    43         if (arg & 0xffff0000) { arg >>= 16;n += 16;}
    44         if (arg & 0xff00) { arg >>= 8; n += 8;}
    45         if (arg & 0xf0) { arg >>= 4; n += 4;}
    46         if (arg & 0xc) { arg >>= 2; n+=2;}
    47         if (arg & 0x2) { arg >>= 1; n+=1;}
     43        if (arg >> 16) { arg >>= 16;n += 16;}
     44        if (arg >> 8) { arg >>= 8; n += 8;}
     45        if (arg >> 4) { arg >>= 4; n += 4;}
     46        if (arg >> 2) { arg >>= 2; n+=2;}
     47        if (arg >> 1) { arg >>= 1; n+=1;}
    4848        return n;
    4949}
     
    5353        int n = 0;
    5454
    55         /* This is because mips complains about big numbers,
    56          * other platforms should optimize it out */
    57         __u64 oper = 0xffffffff;
    58         oper <<= 32;
    59 
    60         if (arg & oper) { arg >>= 32;n += 32;}
     55        if (arg >> 32) { arg >>= 32;n += 32;}
    6156        return n + fnzb32((__u32) arg);
    6257}
  • generic/src/mm/slab.c

    rc352c2e r81e52f2a  
    366366        void *obj;
    367367
     368        if (!CPU)
     369                return NULL;
     370
    368371        spinlock_lock(&cache->mag_cache[CPU->id].lock);
    369372
     
    436439        slab_magazine_t *mag;
    437440
     441        if (!CPU)
     442                return -1;
     443
    438444        spinlock_lock(&cache->mag_cache[CPU->id].lock);
    439445
     
    508514        spinlock_initialize(&cache->lock, "cachelock");
    509515        if (! (cache->flags & SLAB_CACHE_NOMAGAZINE)) {
    510                 for (i=0; i< config.cpu_count; i++)
     516                for (i=0; i< config.cpu_count; i++) {
     517                        memsetb((__address)&cache->mag_cache[i],
     518                                sizeof(cache->mag_cache[i]), 0);
    511519                        spinlock_initialize(&cache->mag_cache[i].lock,
    512520                                            "cpucachelock");
     521                }
    513522        }
    514523
     
    645654        ipl = interrupts_disable();
    646655
    647         if (!(cache->flags & SLAB_CACHE_NOMAGAZINE) && CPU)
     656        if (!(cache->flags & SLAB_CACHE_NOMAGAZINE))
    648657                result = magazine_obj_get(cache);
    649658
     
    670679
    671680        if ((cache->flags & SLAB_CACHE_NOMAGAZINE) \
    672             || !CPU \
    673681            || magazine_obj_put(cache, obj)) {
    674                
    675682                spinlock_lock(&cache->lock);
    676683                slab_obj_destroy(cache, obj, slab);
  • test/mm/slab1/test.c

    rc352c2e r81e52f2a  
    4646        printf("Creating cache, object size: %d.\n", size);
    4747        cache = slab_cache_create("test_cache", size, 0, NULL, NULL,
    48                                   SLAB_CACHE_NOMAGAZINE);
    49         slab_print_list();
    50        
     48                                  SLAB_CACHE_NOMAGAZINE);       
    5149        printf("Allocating %d items...", count);
    5250        for (i=0; i < count; i++) {
     
    6866        printf("done.\n");
    6967
    70         slab_print_list();
    7168        printf("Freeing %d items...", count/2);
    7269        for (i=count-1; i >= count/2; i--) {
     
    129126        }
    130127        printf("Thread #%d finished\n", THREAD->tid);
    131         slab_print_list();
    132128        semaphore_up(&thr_sem);
    133129}
Note: See TracChangeset for help on using the changeset viewer.