Subversion Repositories HelenOS-historic

Rev

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

Rev 1468 Rev 1483
Line 159... Line 159...
159
    for (cond = true; cond; ) {
159
    for (cond = true; cond; ) {
160
        btree_node_t *node;
160
        btree_node_t *node;
161
       
161
       
162
        ASSERT(!list_empty(&as->as_area_btree.leaf_head));
162
        ASSERT(!list_empty(&as->as_area_btree.leaf_head));
163
        node = list_get_instance(&as->as_area_btree.leaf_head.next, btree_node_t, leaf_link);
163
        node = list_get_instance(&as->as_area_btree.leaf_head.next, btree_node_t, leaf_link);
164
        if ((cond = node->keys)) {
164
        if ((cond = node->keys))
165
            as_area_destroy(as, node->key[0]);
165
            as_area_destroy(as, node->key[0]);
166
            btree_remove(&as->as_area_btree, node->key[0], node);
-
 
167
        }
-
 
168
    }
166
    }
169
   
167
   
-
 
168
    btree_destroy(&as->as_area_btree);
170
    page_table_destroy(as->page_table);
169
    page_table_destroy(as->page_table);
171
 
170
 
172
    interrupts_restore(ipl);
171
    interrupts_restore(ipl);
173
   
172
   
174
    free(as);
173
    free(as);
Line 458... Line 457...
458
                        b + i*PAGE_SIZE, PTE_GET_FRAME(pte));
457
                        b + i*PAGE_SIZE, PTE_GET_FRAME(pte));
459
                }
458
                }
460
                page_mapping_remove(as, b + i*PAGE_SIZE);
459
                page_mapping_remove(as, b + i*PAGE_SIZE);
461
                page_table_unlock(as, false);
460
                page_table_unlock(as, false);
462
            }
461
            }
463
            if (!used_space_remove(area, b, i))
-
 
464
                panic("Could not remove used space.\n");
-
 
465
        }
462
        }
466
    }
463
    }
467
 
464
 
468
    /*
465
    /*
469
     * Finish TLB shootdown sequence.
466
     * Finish TLB shootdown sequence.
Line 1487... Line 1484...
1487
           
1484
           
1488
            ASSERT(!list_empty(&sh_info->pagemap.leaf_head));
1485
            ASSERT(!list_empty(&sh_info->pagemap.leaf_head));
1489
            node = list_get_instance(sh_info->pagemap.leaf_head.next, btree_node_t, leaf_link);
1486
            node = list_get_instance(sh_info->pagemap.leaf_head.next, btree_node_t, leaf_link);
1490
            if ((cond = node->keys)) {
1487
            if ((cond = node->keys)) {
1491
                frame_free(ADDR2PFN((__address) node->value[0]));
1488
                frame_free(ADDR2PFN((__address) node->value[0]));
1492
                btree_remove(&sh_info->pagemap, node->key[0], node);
-
 
1493
            }
1489
            }
1494
        }
1490
        }
1495
       
1491
       
1496
    }
1492
    }
1497
    mutex_unlock(&sh_info->lock);
1493
    mutex_unlock(&sh_info->lock);