MCPcopy Create free account
hub / github.com/F-Stack/f-stack / vm_object_collapse_scan_wait

Function vm_object_collapse_scan_wait

freebsd/vm/vm_object.c:1648–1674  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1646}
1647
1648static vm_page_t
1649vm_object_collapse_scan_wait(vm_object_t object, vm_page_t p)
1650{
1651 vm_object_t backing_object;
1652
1653 VM_OBJECT_ASSERT_WLOCKED(object);
1654 backing_object = object->backing_object;
1655 VM_OBJECT_ASSERT_WLOCKED(backing_object);
1656
1657 KASSERT(p == NULL || p->object == object || p->object == backing_object,
1658 ("invalid ownership %p %p %p", p, object, backing_object));
1659 /* The page is only NULL when rename fails. */
1660 if (p == NULL) {
1661 VM_OBJECT_WUNLOCK(object);
1662 VM_OBJECT_WUNLOCK(backing_object);
1663 vm_radix_wait();
1664 } else {
1665 if (p->object == object)
1666 VM_OBJECT_WUNLOCK(backing_object);
1667 else
1668 VM_OBJECT_WUNLOCK(object);
1669 vm_page_busy_sleep(p, "vmocol", false);
1670 }
1671 VM_OBJECT_WLOCK(object);
1672 VM_OBJECT_WLOCK(backing_object);
1673 return (TAILQ_FIRST(&backing_object->memq));
1674}
1675
1676static bool
1677vm_object_scan_all_shadowed(vm_object_t object)

Callers 1

vm_object_collapse_scanFunction · 0.85

Calls 2

vm_radix_waitFunction · 0.85
vm_page_busy_sleepFunction · 0.85

Tested by

no test coverage detected