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

Function vm_object_backing_transfer

freebsd/vm/vm_object.c:809–831  ·  view source on GitHub ↗

* Transfer a backing reference from backing_object to object. */

Source from the content-addressed store, hash-verified

807 * Transfer a backing reference from backing_object to object.
808 */
809static void
810vm_object_backing_transfer(vm_object_t object, vm_object_t backing_object)
811{
812 vm_object_t new_backing_object;
813
814 /*
815 * Note that the reference to backing_object->backing_object
816 * moves from within backing_object to within object.
817 */
818 vm_object_backing_remove_locked(object);
819 new_backing_object = backing_object->backing_object;
820 if (new_backing_object == NULL)
821 return;
822 if ((new_backing_object->flags & OBJ_ANON) != 0) {
823 VM_OBJECT_WLOCK(new_backing_object);
824 vm_object_backing_remove_locked(backing_object);
825 vm_object_backing_insert_locked(object, new_backing_object);
826 VM_OBJECT_WUNLOCK(new_backing_object);
827 } else {
828 object->backing_object = new_backing_object;
829 backing_object->backing_object = NULL;
830 }
831}
832
833/*
834 * Wait for a concurrent collapse to settle.

Callers 1

vm_object_collapseFunction · 0.85

Tested by

no test coverage detected