amap 79 uvm/uvm_amap.c amap_list_insert(struct vm_amap *amap) amap 81 uvm/uvm_amap.c LIST_INSERT_HEAD(&amap_list, amap, am_list); amap 85 uvm/uvm_amap.c amap_list_remove(struct vm_amap *amap) amap 87 uvm/uvm_amap.c LIST_REMOVE(amap, am_list); amap 186 uvm/uvm_amap.c struct vm_amap *amap; amap 189 uvm/uvm_amap.c amap = pool_get(&uvm_amap_pool, (waitf == M_WAITOK) ? PR_WAITOK : 0); amap 190 uvm/uvm_amap.c if (amap == NULL) amap 195 uvm/uvm_amap.c amap->am_ref = 1; amap 196 uvm/uvm_amap.c amap->am_flags = 0; amap 198 uvm/uvm_amap.c amap->am_ppref = NULL; amap 200 uvm/uvm_amap.c amap->am_maxslot = totalslots; amap 201 uvm/uvm_amap.c amap->am_nslot = slots; amap 202 uvm/uvm_amap.c amap->am_nused = 0; amap 204 uvm/uvm_amap.c amap->am_slots = malloc(totalslots * sizeof(int), M_UVMAMAP, amap 206 uvm/uvm_amap.c if (amap->am_slots == NULL) amap 209 uvm/uvm_amap.c amap->am_bckptr = malloc(totalslots * sizeof(int), M_UVMAMAP, waitf); amap 210 uvm/uvm_amap.c if (amap->am_bckptr == NULL) amap 213 uvm/uvm_amap.c amap->am_anon = malloc(totalslots * sizeof(struct vm_anon *), amap 215 uvm/uvm_amap.c if (amap->am_anon == NULL) amap 218 uvm/uvm_amap.c return(amap); amap 221 uvm/uvm_amap.c free(amap->am_bckptr, M_UVMAMAP); amap 223 uvm/uvm_amap.c free(amap->am_slots, M_UVMAMAP); amap 225 uvm/uvm_amap.c pool_put(&uvm_amap_pool, amap); amap 240 uvm/uvm_amap.c struct vm_amap *amap; amap 247 uvm/uvm_amap.c amap = amap_alloc1(slots, padslots, waitf); amap 248 uvm/uvm_amap.c if (amap) { amap 249 uvm/uvm_amap.c memset(amap->am_anon, 0, amap 250 uvm/uvm_amap.c amap->am_maxslot * sizeof(struct vm_anon *)); amap 251 uvm/uvm_amap.c amap_list_insert(amap); amap 254 uvm/uvm_amap.c UVMHIST_LOG(maphist,"<- done, amap = %p, sz=%lu", amap, sz, 0, 0); amap 255 uvm/uvm_amap.c return(amap); amap 266 uvm/uvm_amap.c amap_free(struct vm_amap *amap) amap 270 uvm/uvm_amap.c KASSERT(amap->am_ref == 0 && amap->am_nused == 0); amap 271 uvm/uvm_amap.c KASSERT((amap->am_flags & AMAP_SWAPOFF) == 0); amap 273 uvm/uvm_amap.c free(amap->am_slots, M_UVMAMAP); amap 274 uvm/uvm_amap.c free(amap->am_bckptr, M_UVMAMAP); amap 275 uvm/uvm_amap.c free(amap->am_anon, M_UVMAMAP); amap 277 uvm/uvm_amap.c if (amap->am_ppref && amap->am_ppref != PPREF_NONE) amap 278 uvm/uvm_amap.c free(amap->am_ppref, M_UVMAMAP); amap 280 uvm/uvm_amap.c pool_put(&uvm_amap_pool, amap); amap 282 uvm/uvm_amap.c UVMHIST_LOG(maphist,"<- done, freed amap = %p", amap, 0, 0, 0); amap 298 uvm/uvm_amap.c struct vm_amap *amap = entry->aref.ar_amap; amap 327 uvm/uvm_amap.c if (amap->am_nslot >= slotneed) { amap 329 uvm/uvm_amap.c if (amap->am_ppref && amap->am_ppref != PPREF_NONE) { amap 330 uvm/uvm_amap.c amap_pp_adjref(amap, slotoff + slotmapped, slotadd, 1); amap 334 uvm/uvm_amap.c amap, slotneed, 0, 0); amap 343 uvm/uvm_amap.c if (amap->am_maxslot >= slotneed) { amap 345 uvm/uvm_amap.c if (amap->am_ppref && amap->am_ppref != PPREF_NONE) { amap 346 uvm/uvm_amap.c if ((slotoff + slotmapped) < amap->am_nslot) amap 347 uvm/uvm_amap.c amap_pp_adjref(amap, slotoff + slotmapped, amap 348 uvm/uvm_amap.c (amap->am_nslot - (slotoff + slotmapped)), amap 350 uvm/uvm_amap.c pp_setreflen(amap->am_ppref, amap->am_nslot, 1, amap 351 uvm/uvm_amap.c slotneed - amap->am_nslot); amap 354 uvm/uvm_amap.c amap->am_nslot = slotneed; amap 361 uvm/uvm_amap.c amap, slotneed, 0, 0); amap 375 uvm/uvm_amap.c if (amap->am_ppref && amap->am_ppref != PPREF_NONE) { amap 380 uvm/uvm_amap.c free(amap->am_ppref, M_UVMAMAP); amap 381 uvm/uvm_amap.c amap->am_ppref = PPREF_NONE; amap 403 uvm/uvm_amap.c KASSERT(amap->am_maxslot < slotneed); amap 409 uvm/uvm_amap.c slotadded = slotalloc - amap->am_nslot; amap 412 uvm/uvm_amap.c oldsl = amap->am_slots; amap 413 uvm/uvm_amap.c memcpy(newsl, oldsl, sizeof(int) * amap->am_nused); amap 414 uvm/uvm_amap.c amap->am_slots = newsl; amap 417 uvm/uvm_amap.c oldover = amap->am_anon; amap 418 uvm/uvm_amap.c memcpy(newover, oldover, sizeof(struct vm_anon *) * amap->am_nslot); amap 419 uvm/uvm_amap.c memset(newover + amap->am_nslot, 0, sizeof(struct vm_anon *) * amap 421 uvm/uvm_amap.c amap->am_anon = newover; amap 424 uvm/uvm_amap.c oldbck = amap->am_bckptr; amap 425 uvm/uvm_amap.c memcpy(newbck, oldbck, sizeof(int) * amap->am_nslot); amap 426 uvm/uvm_amap.c memset(newbck + amap->am_nslot, 0, sizeof(int) * slotadded); /* XXX: needed? */ amap 427 uvm/uvm_amap.c amap->am_bckptr = newbck; amap 431 uvm/uvm_amap.c oldppref = amap->am_ppref; amap 433 uvm/uvm_amap.c memcpy(newppref, oldppref, sizeof(int) * amap->am_nslot); amap 434 uvm/uvm_amap.c memset(newppref + amap->am_nslot, 0, sizeof(int) * slotadded); amap 435 uvm/uvm_amap.c amap->am_ppref = newppref; amap 436 uvm/uvm_amap.c if ((slotoff + slotmapped) < amap->am_nslot) amap 437 uvm/uvm_amap.c amap_pp_adjref(amap, slotoff + slotmapped, amap 438 uvm/uvm_amap.c (amap->am_nslot - (slotoff + slotmapped)), 1); amap 439 uvm/uvm_amap.c pp_setreflen(newppref, amap->am_nslot, 1, amap 440 uvm/uvm_amap.c slotneed - amap->am_nslot); amap 445 uvm/uvm_amap.c amap->am_nslot = slotneed; amap 446 uvm/uvm_amap.c amap->am_maxslot = slotalloc; amap 457 uvm/uvm_amap.c amap, slotneed, 0, 0); amap 477 uvm/uvm_amap.c struct vm_amap *amap = entry->aref.ar_amap; amap 483 uvm/uvm_amap.c if (slots < amap->am_nused) { amap 486 uvm/uvm_amap.c if (amap->am_anon[lcv] == NULL) amap 488 uvm/uvm_amap.c if (amap->am_anon[lcv]->an_page != NULL) amap 489 uvm/uvm_amap.c pmap_page_protect(amap->am_anon[lcv]->an_page, amap 496 uvm/uvm_amap.c for (lcv = 0 ; lcv < amap->am_nused ; lcv++) { amap 497 uvm/uvm_amap.c slot = amap->am_slots[lcv]; amap 500 uvm/uvm_amap.c if (amap->am_anon[slot]->an_page != NULL) amap 501 uvm/uvm_amap.c pmap_page_protect(amap->am_anon[slot]->an_page, prot); amap 515 uvm/uvm_amap.c amap_wipeout(struct vm_amap *amap) amap 520 uvm/uvm_amap.c UVMHIST_LOG(maphist,"(amap=%p)", amap, 0,0,0); amap 522 uvm/uvm_amap.c KASSERT(amap->am_ref == 0); amap 524 uvm/uvm_amap.c if (__predict_false((amap->am_flags & AMAP_SWAPOFF) != 0)) { amap 530 uvm/uvm_amap.c amap_list_remove(amap); amap 532 uvm/uvm_amap.c for (lcv = 0 ; lcv < amap->am_nused ; lcv++) { amap 535 uvm/uvm_amap.c slot = amap->am_slots[lcv]; amap 536 uvm/uvm_amap.c anon = amap->am_anon[slot]; amap 560 uvm/uvm_amap.c amap->am_ref = 0; /* ... was one */ amap 561 uvm/uvm_amap.c amap->am_nused = 0; amap 562 uvm/uvm_amap.c amap_free(amap); /* will unlock and free amap */ amap 584 uvm/uvm_amap.c struct vm_amap *amap, *srcamap; amap 652 uvm/uvm_amap.c amap = amap_alloc1(slots, 0, waitf); amap 653 uvm/uvm_amap.c if (amap == NULL) { amap 669 uvm/uvm_amap.c amap->am_ref--; /* drop final reference to map */ amap 670 uvm/uvm_amap.c amap_free(amap); /* dispose of new (unused) amap */ amap 680 uvm/uvm_amap.c amap->am_anon[lcv] = amap 682 uvm/uvm_amap.c if (amap->am_anon[lcv] == NULL) amap 684 uvm/uvm_amap.c simple_lock(&amap->am_anon[lcv]->an_lock); amap 685 uvm/uvm_amap.c amap->am_anon[lcv]->an_ref++; amap 686 uvm/uvm_amap.c simple_unlock(&amap->am_anon[lcv]->an_lock); amap 687 uvm/uvm_amap.c amap->am_bckptr[lcv] = amap->am_nused; amap 688 uvm/uvm_amap.c amap->am_slots[amap->am_nused] = lcv; amap 689 uvm/uvm_amap.c amap->am_nused++; amap 691 uvm/uvm_amap.c memset(&amap->am_anon[lcv], 0, amap 692 uvm/uvm_amap.c (amap->am_maxslot - lcv) * sizeof(struct vm_anon *)); amap 716 uvm/uvm_amap.c entry->aref.ar_amap = amap; amap 719 uvm/uvm_amap.c amap_list_insert(amap); amap 752 uvm/uvm_amap.c struct vm_amap *amap = entry->aref.ar_amap; amap 763 uvm/uvm_amap.c for (lcv = 0 ; lcv < amap->am_nused ; lcv++) { amap 769 uvm/uvm_amap.c slot = amap->am_slots[lcv]; amap 770 uvm/uvm_amap.c anon = amap->am_anon[slot]; amap 835 uvm/uvm_amap.c amap->am_anon[slot] = nanon; /* replace */ amap 901 uvm/uvm_amap.c amap_pp_establish(struct vm_amap *amap) amap 904 uvm/uvm_amap.c amap->am_ppref = malloc(sizeof(int) * amap->am_maxslot, amap 910 uvm/uvm_amap.c if (amap->am_ppref == NULL) { amap 911 uvm/uvm_amap.c amap->am_ppref = PPREF_NONE; /* not using it */ amap 918 uvm/uvm_amap.c memset(amap->am_ppref, 0, sizeof(int) * amap->am_maxslot); amap 919 uvm/uvm_amap.c pp_setreflen(amap->am_ppref, 0, amap->am_ref, amap->am_nslot); amap 930 uvm/uvm_amap.c amap_pp_adjref(struct vm_amap *amap, int curslot, vsize_t slotlen, int adjval) amap 936 uvm/uvm_amap.c ppref = amap->am_ppref; amap 990 uvm/uvm_amap.c amap_wiperange(amap, lcv, len); amap 1002 uvm/uvm_amap.c amap_wiperange(struct vm_amap *amap, int slotoff, int slots) amap 1012 uvm/uvm_amap.c if (slots < amap->am_nused) { amap 1019 uvm/uvm_amap.c stop = amap->am_nused; amap 1028 uvm/uvm_amap.c if (amap->am_anon[curslot] == NULL) amap 1031 uvm/uvm_amap.c curslot = amap->am_slots[lcv]; amap 1038 uvm/uvm_amap.c anon = amap->am_anon[curslot]; amap 1043 uvm/uvm_amap.c amap->am_anon[curslot] = NULL; amap 1044 uvm/uvm_amap.c ptr = amap->am_bckptr[curslot]; amap 1045 uvm/uvm_amap.c if (ptr != (amap->am_nused - 1)) { amap 1046 uvm/uvm_amap.c amap->am_slots[ptr] = amap 1047 uvm/uvm_amap.c amap->am_slots[amap->am_nused - 1]; amap 1048 uvm/uvm_amap.c amap->am_bckptr[amap->am_slots[ptr]] = amap 1051 uvm/uvm_amap.c amap->am_nused--; amap 63 uvm/uvm_amap_i.h struct vm_amap *amap = aref->ar_amap; amap 69 uvm/uvm_amap_i.h if (slot >= amap->am_nslot) amap 73 uvm/uvm_amap_i.h amap, offset, amap->am_anon[slot], 0); amap 74 uvm/uvm_amap_i.h return(amap->am_anon[slot]); amap 91 uvm/uvm_amap_i.h struct vm_amap *amap = aref->ar_amap; amap 98 uvm/uvm_amap_i.h amap->am_nslot, 0); amap 100 uvm/uvm_amap_i.h if ((slot + (npages - 1)) >= amap->am_nslot) amap 103 uvm/uvm_amap_i.h memcpy(anons, &amap->am_anon[slot], npages * sizeof(struct vm_anon *)); amap 125 uvm/uvm_amap_i.h struct vm_amap *amap = aref->ar_amap; amap 131 uvm/uvm_amap_i.h if (slot >= amap->am_nslot) amap 136 uvm/uvm_amap_i.h if (amap->am_anon[slot] == NULL) amap 138 uvm/uvm_amap_i.h if (amap->am_anon[slot]->an_page != NULL && amap 139 uvm/uvm_amap_i.h (amap->am_flags & AMAP_SHARED) != 0) { amap 140 uvm/uvm_amap_i.h pmap_page_protect(amap->am_anon[slot]->an_page, amap 147 uvm/uvm_amap_i.h if (amap->am_anon[slot] != NULL) amap 150 uvm/uvm_amap_i.h amap->am_bckptr[slot] = amap->am_nused; amap 151 uvm/uvm_amap_i.h amap->am_slots[amap->am_nused] = slot; amap 152 uvm/uvm_amap_i.h amap->am_nused++; amap 154 uvm/uvm_amap_i.h amap->am_anon[slot] = anon; amap 157 uvm/uvm_amap_i.h amap, offset, anon, replace); amap 171 uvm/uvm_amap_i.h struct vm_amap *amap = aref->ar_amap; amap 177 uvm/uvm_amap_i.h if (slot >= amap->am_nslot) amap 180 uvm/uvm_amap_i.h if (amap->am_anon[slot] == NULL) amap 183 uvm/uvm_amap_i.h amap->am_anon[slot] = NULL; amap 184 uvm/uvm_amap_i.h ptr = amap->am_bckptr[slot]; amap 186 uvm/uvm_amap_i.h if (ptr != (amap->am_nused - 1)) { /* swap to keep slots contig? */ amap 187 uvm/uvm_amap_i.h amap->am_slots[ptr] = amap->am_slots[amap->am_nused - 1]; amap 188 uvm/uvm_amap_i.h amap->am_bckptr[amap->am_slots[ptr]] = ptr; /* back link */ amap 190 uvm/uvm_amap_i.h amap->am_nused--; amap 191 uvm/uvm_amap_i.h UVMHIST_LOG(maphist, "<- done (amap=%p, slot=%ld)", amap, slot,0, 0); amap 202 uvm/uvm_amap_i.h amap_ref(amap, offset, len, flags) amap 203 uvm/uvm_amap_i.h struct vm_amap *amap; amap 210 uvm/uvm_amap_i.h amap->am_ref++; amap 212 uvm/uvm_amap_i.h amap->am_flags |= AMAP_SHARED; amap 214 uvm/uvm_amap_i.h if (amap->am_ppref == NULL && (flags & AMAP_REFALL) == 0 && amap 215 uvm/uvm_amap_i.h len != amap->am_nslot) amap 216 uvm/uvm_amap_i.h amap_pp_establish(amap); amap 217 uvm/uvm_amap_i.h if (amap->am_ppref && amap->am_ppref != PPREF_NONE) { amap 219 uvm/uvm_amap_i.h amap_pp_adjref(amap, 0, amap->am_nslot, 1); amap 221 uvm/uvm_amap_i.h amap_pp_adjref(amap, offset, len, 1); amap 224 uvm/uvm_amap_i.h UVMHIST_LOG(maphist,"<- done! amap=%p", amap, 0, 0, 0); amap 237 uvm/uvm_amap_i.h amap_unref(amap, offset, len, all) amap 238 uvm/uvm_amap_i.h struct vm_amap *amap; amap 246 uvm/uvm_amap_i.h amap, amap->am_ref, amap->am_nused, 0); amap 252 uvm/uvm_amap_i.h if (amap->am_ref-- == 1) { amap 253 uvm/uvm_amap_i.h amap_wipeout(amap); /* drops final ref and frees */ amap 261 uvm/uvm_amap_i.h if (amap->am_ref == 1 && (amap->am_flags & AMAP_SHARED) != 0) amap 262 uvm/uvm_amap_i.h amap->am_flags &= ~AMAP_SHARED; /* clear shared flag */ amap 264 uvm/uvm_amap_i.h if (amap->am_ppref == NULL && all == 0 && len != amap->am_nslot) amap 265 uvm/uvm_amap_i.h amap_pp_establish(amap); amap 266 uvm/uvm_amap_i.h if (amap->am_ppref && amap->am_ppref != PPREF_NONE) { amap 268 uvm/uvm_amap_i.h amap_pp_adjref(amap, 0, amap->am_nslot, -1); amap 270 uvm/uvm_amap_i.h amap_pp_adjref(amap, offset, len, -1); amap 295 uvm/uvm_fault.c uvmfault_anonget(ufi, amap, anon) amap 297 uvm/uvm_fault.c struct vm_amap *amap; amap 357 uvm/uvm_fault.c uvmfault_unlockall(ufi, amap, NULL, anon); amap 365 uvm/uvm_fault.c uvmfault_unlockall(ufi, amap, NULL, NULL); amap 382 uvm/uvm_fault.c uvmfault_unlockall(ufi, amap, NULL, anon); amap 393 uvm/uvm_fault.c uvmfault_unlockall(ufi, amap, NULL, anon); amap 454 uvm/uvm_fault.c uvmfault_unlockall(ufi, amap, NULL, amap 486 uvm/uvm_fault.c uvmfault_unlockall(ufi, amap, NULL, amap 523 uvm/uvm_fault.c uvmfault_unlockall(ufi, amap, NULL, anon); amap 572 uvm/uvm_fault.c struct vm_amap *amap; amap 677 uvm/uvm_fault.c amap = ufi.entry->aref.ar_amap; /* top layer */ amap 685 uvm/uvm_fault.c if (amap == NULL && uobj == NULL) { amap 732 uvm/uvm_fault.c amap, uobj, 0); amap 738 uvm/uvm_fault.c if (amap) { amap 758 uvm/uvm_fault.c if (amap) amap 771 uvm/uvm_fault.c if (amap) amap 803 uvm/uvm_fault.c if (amap == NULL || anons[lcv] == NULL) { amap 1044 uvm/uvm_fault.c result = uvmfault_anonget(&ufi, amap, anon); amap 1111 uvm/uvm_fault.c uvmfault_unlockall(&ufi, amap, uobj, amap 1182 uvm/uvm_fault.c uvmfault_unlockall(&ufi, amap, uobj, oanon); amap 1245 uvm/uvm_fault.c uvmfault_unlockall(&ufi, amap, uobj, oanon); amap 1286 uvm/uvm_fault.c uvmfault_unlockall(&ufi, amap, uobj, oanon); amap 1336 uvm/uvm_fault.c uvmfault_unlockall(&ufi, amap, NULL, NULL); amap 1387 uvm/uvm_fault.c (locked && amap && amap 1391 uvm/uvm_fault.c uvmfault_unlockall(&ufi, amap, NULL, NULL); amap 1505 uvm/uvm_fault.c uvmfault_unlockall(&ufi, amap, uobj, amap 1564 uvm/uvm_fault.c if (amap == NULL) amap 1602 uvm/uvm_fault.c uvmfault_unlockall(&ufi, amap, uobj, NULL); amap 1632 uvm/uvm_fault.c if ((amap_flags(amap) & AMAP_SHARED) != 0) { amap 1709 uvm/uvm_fault.c uvmfault_unlockall(&ufi, amap, uobj, NULL); amap 1753 uvm/uvm_fault.c uvmfault_unlockall(&ufi, amap, uobj, NULL); amap 82 uvm/uvm_fault_i.h uvmfault_unlockall(ufi, amap, uobj, anon) amap 84 uvm/uvm_fault_i.h struct vm_amap *amap; amap 414 uvm/uvm_loan.c struct vm_amap *amap = ufi->entry->aref.ar_amap; amap 442 uvm/uvm_loan.c uvmfault_unlockall(ufi, amap, uobj, NULL); amap 451 uvm/uvm_loan.c uvmfault_unlockall(ufi, amap, NULL, NULL); amap 485 uvm/uvm_loan.c (locked && amap && amap_lookup(&ufi->entry->aref, amap 489 uvm/uvm_loan.c uvmfault_unlockall(ufi, amap, NULL, NULL); amap 580 uvm/uvm_loan.c uvmfault_unlockall(ufi, amap, uobj, NULL); amap 913 uvm/uvm_map.c struct vm_amap *amap = amap_alloc(size, to_add, M_WAITOK); amap 915 uvm/uvm_map.c new_entry->aref.ar_amap = amap; amap 2863 uvm/uvm_map.c struct vm_amap *amap; amap 2902 uvm/uvm_map.c amap = current->aref.ar_amap; /* top layer */ amap 2914 uvm/uvm_map.c if (amap == NULL || (flags & (PGO_DEACTIVATE|PGO_FREE)) == 0) amap 2994 uvm/uvm_map.c if (amap_refs(amap) > 1) amap 252 uvm/uvm_mmap.c struct vm_amap *amap; amap 321 uvm/uvm_mmap.c amap = entry->aref.ar_amap; /* top layer */ amap 329 uvm/uvm_mmap.c if (amap != NULL) {