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

Function vm_map_wire_entry_failure

freebsd/vm/vm_map.c:3417–3444  ·  view source on GitHub ↗

* vm_map_wire_entry_failure: * * Handle a wiring failure on the given entry. * * The map should be locked. */

Source from the content-addressed store, hash-verified

3415 * The map should be locked.
3416 */
3417static void
3418vm_map_wire_entry_failure(vm_map_t map, vm_map_entry_t entry,
3419 vm_offset_t failed_addr)
3420{
3421
3422 VM_MAP_ASSERT_LOCKED(map);
3423 KASSERT((entry->eflags & MAP_ENTRY_IN_TRANSITION) != 0 &&
3424 entry->wired_count == 1,
3425 ("vm_map_wire_entry_failure: entry %p isn't being wired", entry));
3426 KASSERT(failed_addr < entry->end,
3427 ("vm_map_wire_entry_failure: entry %p was fully wired", entry));
3428
3429 /*
3430 * If any pages at the start of this entry were successfully wired,
3431 * then unwire them.
3432 */
3433 if (failed_addr > entry->start) {
3434 pmap_unwire(map->pmap, entry->start, failed_addr);
3435 vm_object_unwire(entry->object.vm_object, entry->offset,
3436 failed_addr - entry->start, PQ_ACTIVE);
3437 }
3438
3439 /*
3440 * Assign an out-of-range value to represent the failure to wire this
3441 * entry.
3442 */
3443 entry->wired_count = -1;
3444}
3445
3446int
3447vm_map_wire(vm_map_t map, vm_offset_t start, vm_offset_t end, int flags)

Callers 1

vm_map_wire_lockedFunction · 0.85

Calls 2

vm_object_unwireFunction · 0.85
pmap_unwireFunction · 0.50

Tested by

no test coverage detected