Subversion Repositories HelenOS

Rev

Rev 1915 | Rev 2007 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1915 Rev 1954
Line 190... Line 190...
190
    }
190
    }
191
    spinlock_unlock(&inactive_as_with_asid_lock);
191
    spinlock_unlock(&inactive_as_with_asid_lock);
192
 
192
 
193
    /*
193
    /*
194
     * Destroy address space areas of the address space.
194
     * Destroy address space areas of the address space.
195
     * The B+tee must be walked carefully because it is
195
     * The B+tree must be walked carefully because it is
196
     * also being destroyed.
196
     * also being destroyed.
197
     */
197
     */
198
    for (cond = true; cond; ) {
198
    for (cond = true; cond; ) {
199
        btree_node_t *node;
199
        btree_node_t *node;
200
 
200
 
Line 414... Line 414...
414
        }
414
        }
415
 
415
 
416
        /*
416
        /*
417
         * Finish TLB shootdown sequence.
417
         * Finish TLB shootdown sequence.
418
         */
418
         */
419
        tlb_invalidate_pages(AS->asid, area->base + pages*PAGE_SIZE, area->pages - pages);
419
        tlb_invalidate_pages(as->asid, area->base + pages*PAGE_SIZE, area->pages - pages);
420
        tlb_shootdown_finalize();
420
        tlb_shootdown_finalize();
421
       
421
       
422
        /*
422
        /*
423
         * Invalidate software translation caches (e.g. TSB on sparc64).
423
         * Invalidate software translation caches (e.g. TSB on sparc64).
424
         */
424
         */
Line 607... Line 607...
607
        return EPERM;
607
        return EPERM;
608
    }
608
    }
609
 
609
 
610
    /*
610
    /*
611
     * Now we are committed to sharing the area.
611
     * Now we are committed to sharing the area.
612
     * First prepare the area for sharing.
612
     * First, prepare the area for sharing.
613
     * Then it will be safe to unlock it.
613
     * Then it will be safe to unlock it.
614
     */
614
     */
615
    sh_info = src_area->sh_info;
615
    sh_info = src_area->sh_info;
616
    if (!sh_info) {
616
    if (!sh_info) {
617
        sh_info = (share_info_t *) malloc(sizeof(share_info_t), 0);
617
        sh_info = (share_info_t *) malloc(sizeof(share_info_t), 0);