version 1.209.6.3, 2008/06/05 19:14:34 |
version 1.209.6.4, 2008/06/29 09:33:00 |
|
|
memset(pm, 0, sizeof *pm); |
memset(pm, 0, sizeof *pm); |
DPRINTF(PDB_CREATE, ("pmap_create(): created %p\n", pm)); |
DPRINTF(PDB_CREATE, ("pmap_create(): created %p\n", pm)); |
|
|
pm->pm_refs = 1; |
UVM_OBJ_INIT(&pm->pm_obj, NULL, 1); |
TAILQ_INIT(&pm->pm_obj.memq); |
|
if (pm != pmap_kernel()) { |
if (pm != pmap_kernel()) { |
while (!pmap_get_page(&pm->pm_physaddr)) { |
while (!pmap_get_page(&pm->pm_physaddr)) { |
uvm_wait("pmap_create"); |
uvm_wait("pmap_create"); |
Line 1404 pmap_destroy(pm) |
|
Line 1403 pmap_destroy(pm) |
|
uvm_pagefree(pg); |
uvm_pagefree(pg); |
} |
} |
pmap_free_page((paddr_t)(u_long)pm->pm_segs); |
pmap_free_page((paddr_t)(u_long)pm->pm_segs); |
|
UVM_OBJ_DESTROY(&pm->pm_obj); |
pool_cache_put(&pmap_cache, pm); |
pool_cache_put(&pmap_cache, pm); |
} |
} |
|
|