Lines Matching refs:entry

133 static void vm_map_entry_deallocate(vm_map_entry_t entry, boolean_t system_map);
134 static void vm_map_entry_dispose(vm_map_t map, vm_map_entry_t entry);
135 static void vm_map_entry_unwire(vm_map_t map, vm_map_entry_t entry);
143 static void vm_map_wire_entry_failure(vm_map_t map, vm_map_entry_t entry,
145 void _vm_map_clip_end(vm_map_t map, vm_map_entry_t entry, vm_offset_t end);
146 void _vm_map_clip_start(vm_map_t map, vm_map_entry_t entry, vm_offset_t start);
467 vm_map_entry_t entry, next; in vm_map_process_deferred() local
471 entry = td->td_map_def_user; in vm_map_process_deferred()
473 while (entry != NULL) { in vm_map_process_deferred()
474 next = entry->next; in vm_map_process_deferred()
475 if ((entry->eflags & MAP_ENTRY_VN_WRITECNT) != 0) { in vm_map_process_deferred()
480 KASSERT((entry->eflags & MAP_ENTRY_IS_SUB_MAP) == 0, in vm_map_process_deferred()
482 object = entry->object.vm_object; in vm_map_process_deferred()
484 vnode_pager_release_writecount(object, entry->start, in vm_map_process_deferred()
485 entry->end); in vm_map_process_deferred()
487 vm_map_entry_deallocate(entry, FALSE); in vm_map_process_deferred()
488 entry = next; in vm_map_process_deferred()
771 vm_map_entry_dispose(vm_map_t map, vm_map_entry_t entry) in vm_map_entry_dispose() argument
773 uma_zfree(map->system_map ? kmapentzone : mapentzone, entry); in vm_map_entry_dispose()
803 vm_map_entry_set_behavior(vm_map_entry_t entry, u_char behavior) in vm_map_entry_set_behavior() argument
805 entry->eflags = (entry->eflags & ~MAP_ENTRY_BEHAV_MASK) | in vm_map_entry_set_behavior()
815 vm_map_entry_set_max_free(vm_map_entry_t entry) in vm_map_entry_set_max_free() argument
818 entry->max_free = entry->adj_free; in vm_map_entry_set_max_free()
819 if (entry->left != NULL && entry->left->max_free > entry->max_free) in vm_map_entry_set_max_free()
820 entry->max_free = entry->left->max_free; in vm_map_entry_set_max_free()
821 if (entry->right != NULL && entry->right->max_free > entry->max_free) in vm_map_entry_set_max_free()
822 entry->max_free = entry->right->max_free; in vm_map_entry_set_max_free()
945 vm_map_entry_t entry) in vm_map_entry_link() argument
950 map->nentries, entry, after_where); in vm_map_entry_link()
953 after_where->end <= entry->start, in vm_map_entry_link()
955 (uintmax_t)after_where->end, (uintmax_t)entry->start)); in vm_map_entry_link()
957 entry->end <= after_where->next->start, in vm_map_entry_link()
959 (uintmax_t)entry->end, (uintmax_t)after_where->next->start)); in vm_map_entry_link()
962 entry->prev = after_where; in vm_map_entry_link()
963 entry->next = after_where->next; in vm_map_entry_link()
964 entry->next->prev = entry; in vm_map_entry_link()
965 after_where->next = entry; in vm_map_entry_link()
970 entry->right = after_where->right; in vm_map_entry_link()
971 entry->left = after_where; in vm_map_entry_link()
973 after_where->adj_free = entry->start - after_where->end; in vm_map_entry_link()
976 entry->right = map->root; in vm_map_entry_link()
977 entry->left = NULL; in vm_map_entry_link()
979 entry->adj_free = (entry->next == &map->header ? map->max_offset : in vm_map_entry_link()
980 entry->next->start) - entry->end; in vm_map_entry_link()
981 vm_map_entry_set_max_free(entry); in vm_map_entry_link()
982 map->root = entry; in vm_map_entry_link()
987 vm_map_entry_t entry) in vm_map_entry_unlink() argument
992 if (entry != map->root) in vm_map_entry_unlink()
993 vm_map_entry_splay(entry->start, map->root); in vm_map_entry_unlink()
994 if (entry->left == NULL) in vm_map_entry_unlink()
995 root = entry->right; in vm_map_entry_unlink()
997 root = vm_map_entry_splay(entry->start, entry->left); in vm_map_entry_unlink()
998 root->right = entry->right; in vm_map_entry_unlink()
999 root->adj_free = (entry->next == &map->header ? map->max_offset : in vm_map_entry_unlink()
1000 entry->next->start) - root->end; in vm_map_entry_unlink()
1005 prev = entry->prev; in vm_map_entry_unlink()
1006 next = entry->next; in vm_map_entry_unlink()
1011 map->nentries, entry); in vm_map_entry_unlink()
1025 vm_map_entry_resize_free(vm_map_t map, vm_map_entry_t entry) in vm_map_entry_resize_free() argument
1033 if (entry != map->root) in vm_map_entry_resize_free()
1034 map->root = vm_map_entry_splay(entry->start, map->root); in vm_map_entry_resize_free()
1036 entry->adj_free = (entry->next == &map->header ? map->max_offset : in vm_map_entry_resize_free()
1037 entry->next->start) - entry->end; in vm_map_entry_resize_free()
1038 vm_map_entry_set_max_free(entry); in vm_map_entry_resize_free()
1055 vm_map_entry_t *entry) /* OUT */ in vm_map_lookup_entry() argument
1066 *entry = &map->header; in vm_map_lookup_entry()
1068 *entry = cur; in vm_map_lookup_entry()
1088 *entry = cur; in vm_map_lookup_entry()
1092 *entry = cur->prev; in vm_map_lookup_entry()
1101 *entry = cur->prev; in vm_map_lookup_entry()
1106 *entry = cur; in vm_map_lookup_entry()
1110 *entry = cur; in vm_map_lookup_entry()
1351 vm_map_entry_t entry; in vm_map_findspace() local
1391 entry = map->root->right; in vm_map_findspace()
1392 if (entry == NULL || length > entry->max_free) in vm_map_findspace()
1400 while (entry != NULL) { in vm_map_findspace()
1401 if (entry->left != NULL && entry->left->max_free >= length) in vm_map_findspace()
1402 entry = entry->left; in vm_map_findspace()
1403 else if (entry->adj_free >= length) { in vm_map_findspace()
1404 *addr = entry->end; in vm_map_findspace()
1407 entry = entry->right; in vm_map_findspace()
1529 vm_map_simplify_entry(vm_map_t map, vm_map_entry_t entry) in vm_map_simplify_entry() argument
1534 if (entry->eflags & (MAP_ENTRY_IN_TRANSITION | MAP_ENTRY_IS_SUB_MAP)) in vm_map_simplify_entry()
1537 prev = entry->prev; in vm_map_simplify_entry()
1540 if ( (prev->end == entry->start) && in vm_map_simplify_entry()
1541 (prev->object.vm_object == entry->object.vm_object) && in vm_map_simplify_entry()
1543 (prev->offset + prevsize == entry->offset)) && in vm_map_simplify_entry()
1544 (prev->eflags == entry->eflags) && in vm_map_simplify_entry()
1545 (prev->protection == entry->protection) && in vm_map_simplify_entry()
1546 (prev->max_protection == entry->max_protection) && in vm_map_simplify_entry()
1547 (prev->inheritance == entry->inheritance) && in vm_map_simplify_entry()
1548 (prev->wired_count == entry->wired_count) && in vm_map_simplify_entry()
1549 (prev->cred == entry->cred)) { in vm_map_simplify_entry()
1551 entry->start = prev->start; in vm_map_simplify_entry()
1552 entry->offset = prev->offset; in vm_map_simplify_entry()
1553 if (entry->prev != &map->header) in vm_map_simplify_entry()
1554 vm_map_entry_resize_free(map, entry->prev); in vm_map_simplify_entry()
1578 next = entry->next; in vm_map_simplify_entry()
1580 esize = entry->end - entry->start; in vm_map_simplify_entry()
1581 if ((entry->end == next->start) && in vm_map_simplify_entry()
1582 (next->object.vm_object == entry->object.vm_object) && in vm_map_simplify_entry()
1583 (!entry->object.vm_object || in vm_map_simplify_entry()
1584 (entry->offset + esize == next->offset)) && in vm_map_simplify_entry()
1585 (next->eflags == entry->eflags) && in vm_map_simplify_entry()
1586 (next->protection == entry->protection) && in vm_map_simplify_entry()
1587 (next->max_protection == entry->max_protection) && in vm_map_simplify_entry()
1588 (next->inheritance == entry->inheritance) && in vm_map_simplify_entry()
1589 (next->wired_count == entry->wired_count) && in vm_map_simplify_entry()
1590 (next->cred == entry->cred)) { in vm_map_simplify_entry()
1592 entry->end = next->end; in vm_map_simplify_entry()
1593 vm_map_entry_resize_free(map, entry); in vm_map_simplify_entry()
1613 #define vm_map_clip_start(map, entry, startaddr) \ argument
1615 if (startaddr > entry->start) \
1616 _vm_map_clip_start(map, entry, startaddr); \
1624 _vm_map_clip_start(vm_map_t map, vm_map_entry_t entry, vm_offset_t start) in _vm_map_clip_start() argument
1635 vm_map_simplify_entry(map, entry); in _vm_map_clip_start()
1644 if (entry->object.vm_object == NULL && !map->system_map) { in _vm_map_clip_start()
1647 atop(entry->end - entry->start)); in _vm_map_clip_start()
1648 entry->object.vm_object = object; in _vm_map_clip_start()
1649 entry->offset = 0; in _vm_map_clip_start()
1650 if (entry->cred != NULL) { in _vm_map_clip_start()
1651 object->cred = entry->cred; in _vm_map_clip_start()
1652 object->charge = entry->end - entry->start; in _vm_map_clip_start()
1653 entry->cred = NULL; in _vm_map_clip_start()
1655 } else if (entry->object.vm_object != NULL && in _vm_map_clip_start()
1656 ((entry->eflags & MAP_ENTRY_NEEDS_COPY) == 0) && in _vm_map_clip_start()
1657 entry->cred != NULL) { in _vm_map_clip_start()
1658 VM_OBJECT_WLOCK(entry->object.vm_object); in _vm_map_clip_start()
1659 KASSERT(entry->object.vm_object->cred == NULL, in _vm_map_clip_start()
1660 ("OVERCOMMIT: vm_entry_clip_start: both cred e %p", entry)); in _vm_map_clip_start()
1661 entry->object.vm_object->cred = entry->cred; in _vm_map_clip_start()
1662 entry->object.vm_object->charge = entry->end - entry->start; in _vm_map_clip_start()
1663 VM_OBJECT_WUNLOCK(entry->object.vm_object); in _vm_map_clip_start()
1664 entry->cred = NULL; in _vm_map_clip_start()
1668 *new_entry = *entry; in _vm_map_clip_start()
1671 entry->offset += (start - entry->start); in _vm_map_clip_start()
1672 entry->start = start; in _vm_map_clip_start()
1674 crhold(entry->cred); in _vm_map_clip_start()
1676 vm_map_entry_link(map, entry->prev, new_entry); in _vm_map_clip_start()
1678 if ((entry->eflags & MAP_ENTRY_IS_SUB_MAP) == 0) { in _vm_map_clip_start()
1697 #define vm_map_clip_end(map, entry, endaddr) \ argument
1699 if ((endaddr) < (entry->end)) \
1700 _vm_map_clip_end((map), (entry), (endaddr)); \
1708 _vm_map_clip_end(vm_map_t map, vm_map_entry_t entry, vm_offset_t end) in _vm_map_clip_end() argument
1721 if (entry->object.vm_object == NULL && !map->system_map) { in _vm_map_clip_end()
1724 atop(entry->end - entry->start)); in _vm_map_clip_end()
1725 entry->object.vm_object = object; in _vm_map_clip_end()
1726 entry->offset = 0; in _vm_map_clip_end()
1727 if (entry->cred != NULL) { in _vm_map_clip_end()
1728 object->cred = entry->cred; in _vm_map_clip_end()
1729 object->charge = entry->end - entry->start; in _vm_map_clip_end()
1730 entry->cred = NULL; in _vm_map_clip_end()
1732 } else if (entry->object.vm_object != NULL && in _vm_map_clip_end()
1733 ((entry->eflags & MAP_ENTRY_NEEDS_COPY) == 0) && in _vm_map_clip_end()
1734 entry->cred != NULL) { in _vm_map_clip_end()
1735 VM_OBJECT_WLOCK(entry->object.vm_object); in _vm_map_clip_end()
1736 KASSERT(entry->object.vm_object->cred == NULL, in _vm_map_clip_end()
1737 ("OVERCOMMIT: vm_entry_clip_end: both cred e %p", entry)); in _vm_map_clip_end()
1738 entry->object.vm_object->cred = entry->cred; in _vm_map_clip_end()
1739 entry->object.vm_object->charge = entry->end - entry->start; in _vm_map_clip_end()
1740 VM_OBJECT_WUNLOCK(entry->object.vm_object); in _vm_map_clip_end()
1741 entry->cred = NULL; in _vm_map_clip_end()
1748 *new_entry = *entry; in _vm_map_clip_end()
1750 new_entry->start = entry->end = end; in _vm_map_clip_end()
1751 new_entry->offset += (end - entry->start); in _vm_map_clip_end()
1753 crhold(entry->cred); in _vm_map_clip_end()
1755 vm_map_entry_link(map, entry, new_entry); in _vm_map_clip_end()
1757 if ((entry->eflags & MAP_ENTRY_IS_SUB_MAP) == 0) { in _vm_map_clip_end()
1787 vm_map_entry_t entry; in vm_map_submap() local
1794 if (vm_map_lookup_entry(map, start, &entry)) { in vm_map_submap()
1795 vm_map_clip_start(map, entry, start); in vm_map_submap()
1797 entry = entry->next; in vm_map_submap()
1799 vm_map_clip_end(map, entry, end); in vm_map_submap()
1801 if ((entry->start == start) && (entry->end == end) && in vm_map_submap()
1802 ((entry->eflags & MAP_ENTRY_COW) == 0) && in vm_map_submap()
1803 (entry->object.vm_object == NULL)) { in vm_map_submap()
1804 entry->object.sub_map = submap; in vm_map_submap()
1805 entry->eflags |= MAP_ENTRY_IS_SUB_MAP; in vm_map_submap()
1927 vm_map_entry_t current, entry; in vm_map_protect() local
1939 if (vm_map_lookup_entry(map, start, &entry)) { in vm_map_protect()
1940 vm_map_clip_start(map, entry, start); in vm_map_protect()
1942 entry = entry->next; in vm_map_protect()
1948 current = entry; in vm_map_protect()
1967 for (current = entry; (current != &map->header) && in vm_map_protect()
2021 current = entry; in vm_map_protect()
2048 #define MASK(entry) (((entry)->eflags & MAP_ENTRY_COW) ? ~VM_PROT_WRITE : \ in vm_map_protect() argument
2077 vm_map_entry_t current, entry; in vm_map_madvise() local
2115 if (vm_map_lookup_entry(map, start, &entry)) { in vm_map_madvise()
2117 vm_map_clip_start(map, entry, start); in vm_map_madvise()
2119 entry = entry->next; in vm_map_madvise()
2129 for (current = entry; in vm_map_madvise()
2176 for (current = entry; in vm_map_madvise()
2254 vm_map_entry_t entry; in vm_map_inherit() local
2270 entry = temp_entry; in vm_map_inherit()
2271 vm_map_clip_start(map, entry, start); in vm_map_inherit()
2273 entry = temp_entry->next; in vm_map_inherit()
2274 while ((entry != &map->header) && (entry->start < end)) { in vm_map_inherit()
2275 vm_map_clip_end(map, entry, end); in vm_map_inherit()
2276 entry->inheritance = new_inheritance; in vm_map_inherit()
2277 vm_map_simplify_entry(map, entry); in vm_map_inherit()
2278 entry = entry->next; in vm_map_inherit()
2293 vm_map_entry_t entry, first_entry, tmp_entry; in vm_map_unwire() local
2313 entry = first_entry; in vm_map_unwire()
2314 while (entry != &map->header && entry->start < end) { in vm_map_unwire()
2315 if (entry->eflags & MAP_ENTRY_IN_TRANSITION) { in vm_map_unwire()
2319 saved_start = (start >= entry->start) ? start : in vm_map_unwire()
2320 entry->start; in vm_map_unwire()
2321 entry->eflags |= MAP_ENTRY_NEEDS_WAKEUP; in vm_map_unwire()
2352 if (entry == first_entry) in vm_map_unwire()
2356 entry = tmp_entry; in vm_map_unwire()
2361 vm_map_clip_start(map, entry, start); in vm_map_unwire()
2362 vm_map_clip_end(map, entry, end); in vm_map_unwire()
2367 KASSERT((entry->eflags & MAP_ENTRY_IN_TRANSITION) == 0 && in vm_map_unwire()
2368 entry->wiring_thread == NULL, in vm_map_unwire()
2369 ("owned map entry %p", entry)); in vm_map_unwire()
2370 entry->eflags |= MAP_ENTRY_IN_TRANSITION; in vm_map_unwire()
2371 entry->wiring_thread = curthread; in vm_map_unwire()
2377 (entry->end < end && (entry->next == &map->header || in vm_map_unwire()
2378 entry->next->start > entry->end))) { in vm_map_unwire()
2379 end = entry->end; in vm_map_unwire()
2387 vm_map_entry_system_wired_count(entry) == 0) { in vm_map_unwire()
2388 end = entry->end; in vm_map_unwire()
2392 entry = entry->next; in vm_map_unwire()
2404 for (entry = first_entry; entry != &map->header && entry->start < end; in vm_map_unwire()
2405 entry = entry->next) { in vm_map_unwire()
2415 if ((entry->eflags & MAP_ENTRY_IN_TRANSITION) == 0 || in vm_map_unwire()
2416 entry->wiring_thread != curthread) { in vm_map_unwire()
2423 (entry->eflags & MAP_ENTRY_USER_WIRED))) { in vm_map_unwire()
2425 entry->eflags &= ~MAP_ENTRY_USER_WIRED; in vm_map_unwire()
2426 if (entry->wired_count == 1) in vm_map_unwire()
2427 vm_map_entry_unwire(map, entry); in vm_map_unwire()
2429 entry->wired_count--; in vm_map_unwire()
2431 KASSERT((entry->eflags & MAP_ENTRY_IN_TRANSITION) != 0, in vm_map_unwire()
2432 ("vm_map_unwire: in-transition flag missing %p", entry)); in vm_map_unwire()
2433 KASSERT(entry->wiring_thread == curthread, in vm_map_unwire()
2434 ("vm_map_unwire: alien wire %p", entry)); in vm_map_unwire()
2435 entry->eflags &= ~MAP_ENTRY_IN_TRANSITION; in vm_map_unwire()
2436 entry->wiring_thread = NULL; in vm_map_unwire()
2437 if (entry->eflags & MAP_ENTRY_NEEDS_WAKEUP) { in vm_map_unwire()
2438 entry->eflags &= ~MAP_ENTRY_NEEDS_WAKEUP; in vm_map_unwire()
2441 vm_map_simplify_entry(map, entry); in vm_map_unwire()
2457 vm_map_wire_entry_failure(vm_map_t map, vm_map_entry_t entry, in vm_map_wire_entry_failure() argument
2462 KASSERT((entry->eflags & MAP_ENTRY_IN_TRANSITION) != 0 && in vm_map_wire_entry_failure()
2463 entry->wired_count == 1, in vm_map_wire_entry_failure()
2464 ("vm_map_wire_entry_failure: entry %p isn't being wired", entry)); in vm_map_wire_entry_failure()
2465 KASSERT(failed_addr < entry->end, in vm_map_wire_entry_failure()
2466 ("vm_map_wire_entry_failure: entry %p was fully wired", entry)); in vm_map_wire_entry_failure()
2472 if (failed_addr > entry->start) { in vm_map_wire_entry_failure()
2473 pmap_unwire(map->pmap, entry->start, failed_addr); in vm_map_wire_entry_failure()
2474 vm_object_unwire(entry->object.vm_object, entry->offset, in vm_map_wire_entry_failure()
2475 failed_addr - entry->start, PQ_ACTIVE); in vm_map_wire_entry_failure()
2482 entry->wired_count = -1; in vm_map_wire_entry_failure()
2494 vm_map_entry_t entry, first_entry, tmp_entry; in vm_map_wire() local
2518 entry = first_entry; in vm_map_wire()
2519 while (entry != &map->header && entry->start < end) { in vm_map_wire()
2520 if (entry->eflags & MAP_ENTRY_IN_TRANSITION) { in vm_map_wire()
2524 saved_start = (start >= entry->start) ? start : in vm_map_wire()
2525 entry->start; in vm_map_wire()
2526 entry->eflags |= MAP_ENTRY_NEEDS_WAKEUP; in vm_map_wire()
2557 if (entry == first_entry) in vm_map_wire()
2561 entry = tmp_entry; in vm_map_wire()
2566 vm_map_clip_start(map, entry, start); in vm_map_wire()
2567 vm_map_clip_end(map, entry, end); in vm_map_wire()
2572 KASSERT((entry->eflags & MAP_ENTRY_IN_TRANSITION) == 0 && in vm_map_wire()
2573 entry->wiring_thread == NULL, in vm_map_wire()
2574 ("owned map entry %p", entry)); in vm_map_wire()
2575 entry->eflags |= MAP_ENTRY_IN_TRANSITION; in vm_map_wire()
2576 entry->wiring_thread = curthread; in vm_map_wire()
2577 if ((entry->protection & (VM_PROT_READ | VM_PROT_EXECUTE)) == 0 in vm_map_wire()
2578 || (entry->protection & prot) != prot) { in vm_map_wire()
2579 entry->eflags |= MAP_ENTRY_WIRE_SKIPPED; in vm_map_wire()
2581 end = entry->end; in vm_map_wire()
2587 if (entry->wired_count == 0) { in vm_map_wire()
2588 entry->wired_count++; in vm_map_wire()
2589 saved_start = entry->start; in vm_map_wire()
2590 saved_end = entry->end; in vm_map_wire()
2621 if (entry == first_entry) in vm_map_wire()
2625 entry = tmp_entry; in vm_map_wire()
2626 while (entry->end < saved_end) { in vm_map_wire()
2634 faddr < entry->end) in vm_map_wire()
2636 entry, faddr); in vm_map_wire()
2637 entry = entry->next; in vm_map_wire()
2642 vm_map_wire_entry_failure(map, entry, faddr); in vm_map_wire()
2643 end = entry->end; in vm_map_wire()
2647 (entry->eflags & MAP_ENTRY_USER_WIRED) == 0) { in vm_map_wire()
2648 entry->wired_count++; in vm_map_wire()
2656 (entry->end < end && (entry->next == &map->header || in vm_map_wire()
2657 entry->next->start > entry->end))) { in vm_map_wire()
2658 end = entry->end; in vm_map_wire()
2662 entry = entry->next; in vm_map_wire()
2674 for (entry = first_entry; entry != &map->header && entry->start < end; in vm_map_wire()
2675 entry = entry->next) { in vm_map_wire()
2676 if ((entry->eflags & MAP_ENTRY_WIRE_SKIPPED) != 0) in vm_map_wire()
2688 if ((entry->eflags & MAP_ENTRY_IN_TRANSITION) == 0 || in vm_map_wire()
2689 entry->wiring_thread != curthread) { in vm_map_wire()
2697 entry->eflags |= MAP_ENTRY_USER_WIRED; in vm_map_wire()
2698 } else if (entry->wired_count == -1) { in vm_map_wire()
2703 entry->wired_count = 0; in vm_map_wire()
2705 (entry->eflags & MAP_ENTRY_USER_WIRED) == 0) { in vm_map_wire()
2710 if (entry->wired_count == 1) in vm_map_wire()
2711 vm_map_entry_unwire(map, entry); in vm_map_wire()
2713 entry->wired_count--; in vm_map_wire()
2716 KASSERT((entry->eflags & MAP_ENTRY_IN_TRANSITION) != 0, in vm_map_wire()
2717 ("vm_map_wire: in-transition flag missing %p", entry)); in vm_map_wire()
2718 KASSERT(entry->wiring_thread == curthread, in vm_map_wire()
2719 ("vm_map_wire: alien wire %p", entry)); in vm_map_wire()
2720 entry->eflags &= ~(MAP_ENTRY_IN_TRANSITION | in vm_map_wire()
2722 entry->wiring_thread = NULL; in vm_map_wire()
2723 if (entry->eflags & MAP_ENTRY_NEEDS_WAKEUP) { in vm_map_wire()
2724 entry->eflags &= ~MAP_ENTRY_NEEDS_WAKEUP; in vm_map_wire()
2727 vm_map_simplify_entry(map, entry); in vm_map_wire()
2760 vm_map_entry_t entry; in vm_map_sync() local
2769 if (!vm_map_lookup_entry(map, start, &entry)) { in vm_map_sync()
2773 start = entry->start; in vm_map_sync()
2774 end = entry->end; in vm_map_sync()
2779 for (current = entry; current != &map->header && current->start < end; in vm_map_sync()
2801 for (current = entry; current != &map->header && current->start < end;) { in vm_map_sync()
2847 vm_map_entry_unwire(vm_map_t map, vm_map_entry_t entry) in vm_map_entry_unwire() argument
2851 KASSERT(entry->wired_count > 0, in vm_map_entry_unwire()
2852 ("vm_map_entry_unwire: entry %p isn't wired", entry)); in vm_map_entry_unwire()
2853 pmap_unwire(map->pmap, entry->start, entry->end); in vm_map_entry_unwire()
2854 vm_object_unwire(entry->object.vm_object, entry->offset, entry->end - in vm_map_entry_unwire()
2855 entry->start, PQ_ACTIVE); in vm_map_entry_unwire()
2856 entry->wired_count = 0; in vm_map_entry_unwire()
2860 vm_map_entry_deallocate(vm_map_entry_t entry, boolean_t system_map) in vm_map_entry_deallocate() argument
2863 if ((entry->eflags & MAP_ENTRY_IS_SUB_MAP) == 0) in vm_map_entry_deallocate()
2864 vm_object_deallocate(entry->object.vm_object); in vm_map_entry_deallocate()
2865 uma_zfree(system_map ? kmapentzone : mapentzone, entry); in vm_map_entry_deallocate()
2874 vm_map_entry_delete(vm_map_t map, vm_map_entry_t entry) in vm_map_entry_delete() argument
2880 vm_map_entry_unlink(map, entry); in vm_map_entry_delete()
2881 object = entry->object.vm_object; in vm_map_entry_delete()
2882 size = entry->end - entry->start; in vm_map_entry_delete()
2885 if (entry->cred != NULL) { in vm_map_entry_delete()
2886 swap_release_by_cred(size, entry->cred); in vm_map_entry_delete()
2887 crfree(entry->cred); in vm_map_entry_delete()
2890 if ((entry->eflags & MAP_ENTRY_IS_SUB_MAP) == 0 && in vm_map_entry_delete()
2892 KASSERT(entry->cred == NULL || object->cred == NULL || in vm_map_entry_delete()
2893 (entry->eflags & MAP_ENTRY_NEEDS_COPY), in vm_map_entry_delete()
2894 ("OVERCOMMIT vm_map_entry_delete: both cred %p", entry)); in vm_map_entry_delete()
2896 offidxstart = OFF_TO_IDX(entry->offset); in vm_map_entry_delete()
2929 entry->object.vm_object = NULL; in vm_map_entry_delete()
2931 vm_map_entry_deallocate(entry, TRUE); in vm_map_entry_delete()
2933 entry->next = curthread->td_map_def_user; in vm_map_entry_delete()
2934 curthread->td_map_def_user = entry; in vm_map_entry_delete()
2947 vm_map_entry_t entry; in vm_map_delete() local
2958 entry = first_entry->next; in vm_map_delete()
2960 entry = first_entry; in vm_map_delete()
2961 vm_map_clip_start(map, entry, start); in vm_map_delete()
2967 while ((entry != &map->header) && (entry->start < end)) { in vm_map_delete()
2975 if ((entry->eflags & MAP_ENTRY_IN_TRANSITION) != 0 || in vm_map_delete()
2977 vm_map_entry_system_wired_count(entry) != 0)) { in vm_map_delete()
2982 saved_start = entry->start; in vm_map_delete()
2983 entry->eflags |= MAP_ENTRY_NEEDS_WAKEUP; in vm_map_delete()
2996 entry = tmp_entry->next; in vm_map_delete()
2998 entry = tmp_entry; in vm_map_delete()
2999 vm_map_clip_start(map, entry, in vm_map_delete()
3005 vm_map_clip_end(map, entry, end); in vm_map_delete()
3007 next = entry->next; in vm_map_delete()
3013 if (entry->wired_count != 0) { in vm_map_delete()
3014 vm_map_entry_unwire(map, entry); in vm_map_delete()
3017 pmap_remove(map->pmap, entry->start, entry->end); in vm_map_delete()
3025 vm_map_entry_delete(map, entry); in vm_map_delete()
3026 entry = next; in vm_map_delete()
3067 vm_map_entry_t entry; in vm_map_check_protection() local
3072 entry = tmp_entry; in vm_map_check_protection()
3075 if (entry == &map->header) in vm_map_check_protection()
3080 if (start < entry->start) in vm_map_check_protection()
3085 if ((entry->protection & protection) != protection) in vm_map_check_protection()
3088 start = entry->end; in vm_map_check_protection()
3089 entry = entry->next; in vm_map_check_protection()
3228 vm_map_entry_t entry) in vmspace_map_entry_forked() argument
3233 entrysize = entry->end - entry->start; in vmspace_map_entry_forked()
3235 if (entry->eflags & (MAP_ENTRY_GROWS_DOWN | MAP_ENTRY_GROWS_UP)) { in vmspace_map_entry_forked()
3237 } else if (entry->start >= (vm_offset_t)vm1->vm_daddr && in vmspace_map_entry_forked()
3238 entry->start < (vm_offset_t)vm1->vm_daddr + ctob(vm1->vm_dsize)) { in vmspace_map_entry_forked()
3239 newend = MIN(entry->end, in vmspace_map_entry_forked()
3241 vm2->vm_dsize += btoc(newend - entry->start); in vmspace_map_entry_forked()
3242 } else if (entry->start >= (vm_offset_t)vm1->vm_taddr && in vmspace_map_entry_forked()
3243 entry->start < (vm_offset_t)vm1->vm_taddr + ctob(vm1->vm_tsize)) { in vmspace_map_entry_forked()
3244 newend = MIN(entry->end, in vmspace_map_entry_forked()
3246 vm2->vm_tsize += btoc(newend - entry->start); in vmspace_map_entry_forked()
3943 vm_map_entry_t entry; in vm_map_lookup() local
3963 entry = *out_entry; in vm_map_lookup()
3968 if (entry->eflags & MAP_ENTRY_IS_SUB_MAP) { in vm_map_lookup()
3971 *var_map = map = entry->object.sub_map; in vm_map_lookup()
3979 prot = entry->protection; in vm_map_lookup()
3985 if ((entry->eflags & MAP_ENTRY_USER_WIRED) && in vm_map_lookup()
3986 (entry->eflags & MAP_ENTRY_COW) && in vm_map_lookup()
3992 (entry->max_protection & VM_PROT_WRITE) == 0 && in vm_map_lookup()
3993 (entry->eflags & MAP_ENTRY_COW) == 0) { in vm_map_lookup()
4002 *wired = (entry->wired_count != 0); in vm_map_lookup()
4004 fault_type = entry->protection; in vm_map_lookup()
4005 size = entry->end - entry->start; in vm_map_lookup()
4009 if (entry->eflags & MAP_ENTRY_NEEDS_COPY) { in vm_map_lookup()
4028 if (entry->cred == NULL) { in vm_map_lookup()
4040 entry->cred = cred; in vm_map_lookup()
4042 vm_object_shadow(&entry->object.vm_object, in vm_map_lookup()
4043 &entry->offset, size); in vm_map_lookup()
4044 entry->eflags &= ~MAP_ENTRY_NEEDS_COPY; in vm_map_lookup()
4045 eobject = entry->object.vm_object; in vm_map_lookup()
4050 swap_release_by_cred(size, entry->cred); in vm_map_lookup()
4051 crfree(entry->cred); in vm_map_lookup()
4052 entry->cred = NULL; in vm_map_lookup()
4053 } else if (entry->cred != NULL) { in vm_map_lookup()
4055 eobject->cred = entry->cred; in vm_map_lookup()
4058 entry->cred = NULL; in vm_map_lookup()
4074 if (entry->object.vm_object == NULL && in vm_map_lookup()
4078 entry->object.vm_object = vm_object_allocate(OBJT_DEFAULT, in vm_map_lookup()
4080 entry->offset = 0; in vm_map_lookup()
4081 if (entry->cred != NULL) { in vm_map_lookup()
4082 VM_OBJECT_WLOCK(entry->object.vm_object); in vm_map_lookup()
4083 entry->object.vm_object->cred = entry->cred; in vm_map_lookup()
4084 entry->object.vm_object->charge = size; in vm_map_lookup()
4085 VM_OBJECT_WUNLOCK(entry->object.vm_object); in vm_map_lookup()
4086 entry->cred = NULL; in vm_map_lookup()
4095 *pindex = OFF_TO_IDX((vaddr - entry->start) + entry->offset); in vm_map_lookup()
4096 *object = entry->object.vm_object; in vm_map_lookup()
4118 vm_map_entry_t entry; in vm_map_lookup_locked() local
4129 entry = *out_entry; in vm_map_lookup_locked()
4134 if (entry->eflags & MAP_ENTRY_IS_SUB_MAP) in vm_map_lookup_locked()
4140 prot = entry->protection; in vm_map_lookup_locked()
4144 if ((entry->eflags & MAP_ENTRY_USER_WIRED) && in vm_map_lookup_locked()
4145 (entry->eflags & MAP_ENTRY_COW) && in vm_map_lookup_locked()
4153 *wired = (entry->wired_count != 0); in vm_map_lookup_locked()
4155 fault_type = entry->protection; in vm_map_lookup_locked()
4157 if (entry->eflags & MAP_ENTRY_NEEDS_COPY) { in vm_map_lookup_locked()
4173 if (entry->object.vm_object == NULL && !map->system_map) in vm_map_lookup_locked()
4180 *pindex = OFF_TO_IDX((vaddr - entry->start) + entry->offset); in vm_map_lookup_locked()
4181 *object = entry->object.vm_object; in vm_map_lookup_locked()
4194 vm_map_lookup_done(vm_map_t map, vm_map_entry_t entry) in vm_map_lookup_done() argument
4211 vm_map_entry_t entry; in vm_map_print() local
4218 for (entry = map->header.next; entry != &map->header; in vm_map_print()
4219 entry = entry->next) { in vm_map_print()
4221 (void *)entry, (void *)entry->start, (void *)entry->end); in vm_map_print()
4227 entry->protection, in vm_map_print()
4228 entry->max_protection, in vm_map_print()
4229 inheritance_name[(int)(unsigned char)entry->inheritance]); in vm_map_print()
4230 if (entry->wired_count != 0) in vm_map_print()
4233 if (entry->eflags & MAP_ENTRY_IS_SUB_MAP) { in vm_map_print()
4235 (void *)entry->object.sub_map, in vm_map_print()
4236 (uintmax_t)entry->offset); in vm_map_print()
4237 if ((entry->prev == &map->header) || in vm_map_print()
4238 (entry->prev->object.sub_map != in vm_map_print()
4239 entry->object.sub_map)) { in vm_map_print()
4241 vm_map_print((vm_map_t)entry->object.sub_map); in vm_map_print()
4245 if (entry->cred != NULL) in vm_map_print()
4246 db_printf(", ruid %d", entry->cred->cr_ruid); in vm_map_print()
4248 (void *)entry->object.vm_object, in vm_map_print()
4249 (uintmax_t)entry->offset); in vm_map_print()
4250 if (entry->object.vm_object && entry->object.vm_object->cred) in vm_map_print()
4252 entry->object.vm_object->cred->cr_ruid, in vm_map_print()
4253 (uintmax_t)entry->object.vm_object->charge); in vm_map_print()
4254 if (entry->eflags & MAP_ENTRY_COW) in vm_map_print()
4256 (entry->eflags & MAP_ENTRY_NEEDS_COPY) ? "needed" : "done"); in vm_map_print()
4259 if ((entry->prev == &map->header) || in vm_map_print()
4260 (entry->prev->object.vm_object != in vm_map_print()
4261 entry->object.vm_object)) { in vm_map_print()
4264 entry->object.vm_object, in vm_map_print()