* vm_map_wire_entry_failure: * * Handle a wiring failure on the given entry. * * The map should be locked. */
| 3415 | * The map should be locked. |
| 3416 | */ |
| 3417 | static void |
| 3418 | vm_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 | |
| 3446 | int |
| 3447 | vm_map_wire(vm_map_t map, vm_offset_t start, vm_offset_t end, int flags) |
no test coverage detected