Page MenuHomeFreeBSD

D20846.1794798867.diff
No OneTemporary

Authored By
Unknown
Size
6 KB
Referenced Files
None
Subscribers
None

D20846.1794798867.diff

Index: sys/vm/vm_map.c
===================================================================
--- sys/vm/vm_map.c
+++ sys/vm/vm_map.c
@@ -2851,15 +2851,16 @@
vm_offset_t saved_start;
unsigned int last_timestamp;
int rv;
- boolean_t need_wakeup, result, user_unwire;
+ bool holes_ok, need_wakeup, user_unwire;
if (start == end)
return (KERN_SUCCESS);
- user_unwire = (flags & VM_MAP_WIRE_USER) ? TRUE : FALSE;
+ holes_ok = (flags & VM_MAP_WIRE_HOLESOK) != 0;
+ user_unwire = (flags & VM_MAP_WIRE_USER) != 0;
vm_map_lock(map);
VM_MAP_RANGE_CHECK(map, start, end);
if (!vm_map_lookup_entry(map, start, &first_entry)) {
- if (flags & VM_MAP_WIRE_HOLESOK)
+ if (holes_ok)
first_entry = first_entry->next;
else {
vm_map_unlock(map);
@@ -2891,7 +2892,7 @@
*/
if (!vm_map_lookup_entry(map, saved_start,
&tmp_entry)) {
- if (flags & VM_MAP_WIRE_HOLESOK)
+ if (holes_ok)
tmp_entry = tmp_entry->next;
else {
if (saved_start == start) {
@@ -2928,9 +2929,9 @@
entry->wiring_thread = curthread;
/*
* Check the map for holes in the specified region.
- * If VM_MAP_WIRE_HOLESOK was specified, skip this check.
+ * If holes_ok, skip this check.
*/
- if (((flags & VM_MAP_WIRE_HOLESOK) == 0) &&
+ if (!holes_ok &&
(entry->end < end && entry->next->start > entry->end)) {
end = entry->end;
rv = KERN_INVALID_ADDRESS;
@@ -2949,17 +2950,15 @@
}
rv = KERN_SUCCESS;
done:
- need_wakeup = FALSE;
- if (first_entry == NULL) {
- result = vm_map_lookup_entry(map, start, &first_entry);
- if (!result && (flags & VM_MAP_WIRE_HOLESOK))
- first_entry = first_entry->next;
- else
- KASSERT(result, ("vm_map_unwire: lookup failed"));
+ need_wakeup = false;
+ if (first_entry == NULL &&
+ !vm_map_lookup_entry(map, start, &first_entry)) {
+ KASSERT(holes_ok, ("vm_map_unwire: lookup failed"));
+ first_entry = first_entry->next;
}
for (entry = first_entry; entry->start < end; entry = entry->next) {
/*
- * If VM_MAP_WIRE_HOLESOK was specified, an empty
+ * If holes_ok was specified, an empty
* space in the unwired region could have been mapped
* while the map lock was dropped for draining
* MAP_ENTRY_IN_TRANSITION. Moreover, another thread
@@ -2969,7 +2968,7 @@
*/
if ((entry->eflags & MAP_ENTRY_IN_TRANSITION) == 0 ||
entry->wiring_thread != curthread) {
- KASSERT((flags & VM_MAP_WIRE_HOLESOK) != 0,
+ KASSERT(holes_ok,
("vm_map_unwire: !HOLESOK and new/changed entry"));
continue;
}
@@ -2991,7 +2990,7 @@
entry->wiring_thread = NULL;
if (entry->eflags & MAP_ENTRY_NEEDS_WAKEUP) {
entry->eflags &= ~MAP_ENTRY_NEEDS_WAKEUP;
- need_wakeup = TRUE;
+ need_wakeup = true;
}
vm_map_simplify_entry(map, entry);
}
@@ -3085,7 +3084,7 @@
u_long npages;
u_int last_timestamp;
int rv;
- boolean_t need_wakeup, result, user_wire;
+ bool holes_ok, need_wakeup, user_wire;
vm_prot_t prot;
VM_MAP_ASSERT_LOCKED(map);
@@ -3095,10 +3094,11 @@
prot = 0;
if (flags & VM_MAP_WIRE_WRITE)
prot |= VM_PROT_WRITE;
- user_wire = (flags & VM_MAP_WIRE_USER) ? TRUE : FALSE;
+ holes_ok = (flags & VM_MAP_WIRE_HOLESOK) != 0;
+ user_wire = (flags & VM_MAP_WIRE_USER) != 0;
VM_MAP_RANGE_CHECK(map, start, end);
if (!vm_map_lookup_entry(map, start, &first_entry)) {
- if (flags & VM_MAP_WIRE_HOLESOK)
+ if (holes_ok)
first_entry = first_entry->next;
else
return (KERN_INVALID_ADDRESS);
@@ -3128,7 +3128,7 @@
*/
if (!vm_map_lookup_entry(map, saved_start,
&tmp_entry)) {
- if (flags & VM_MAP_WIRE_HOLESOK)
+ if (holes_ok)
tmp_entry = tmp_entry->next;
else {
if (saved_start == start) {
@@ -3165,7 +3165,7 @@
if ((entry->protection & (VM_PROT_READ | VM_PROT_EXECUTE)) == 0
|| (entry->protection & prot) != prot) {
entry->eflags |= MAP_ENTRY_WIRE_SKIPPED;
- if ((flags & VM_MAP_WIRE_HOLESOK) == 0) {
+ if (!holes_ok) {
end = entry->end;
rv = KERN_INVALID_ADDRESS;
goto done;
@@ -3212,9 +3212,10 @@
* may have been clipped, but NOT merged or
* deleted.
*/
- result = vm_map_lookup_entry(map, saved_start,
- &tmp_entry);
- KASSERT(result, ("vm_map_wire: lookup failed"));
+ if (!vm_map_lookup_entry(map, saved_start,
+ &tmp_entry))
+ KASSERT(true,
+ ("vm_map_wire: lookup failed"));
if (entry == first_entry)
first_entry = tmp_entry;
else
@@ -3248,10 +3249,10 @@
}
/*
* Check the map for holes in the specified region.
- * If VM_MAP_WIRE_HOLESOK was specified, skip this check.
+ * If holes_ok was specified, skip this check.
*/
next_entry:
- if ((flags & VM_MAP_WIRE_HOLESOK) == 0 &&
+ if (!holes_ok &&
entry->end < end && entry->next->start > entry->end) {
end = entry->end;
rv = KERN_INVALID_ADDRESS;
@@ -3261,17 +3262,15 @@
}
rv = KERN_SUCCESS;
done:
- need_wakeup = FALSE;
- if (first_entry == NULL) {
- result = vm_map_lookup_entry(map, start, &first_entry);
- if (!result && (flags & VM_MAP_WIRE_HOLESOK))
- first_entry = first_entry->next;
- else
- KASSERT(result, ("vm_map_wire: lookup failed"));
+ need_wakeup = false;
+ if (first_entry == NULL &&
+ !vm_map_lookup_entry(map, start, &first_entry)) {
+ KASSERT(holes_ok, ("vm_map_wire: lookup failed"));
+ first_entry = first_entry->next;
}
for (entry = first_entry; entry->start < end; entry = entry->next) {
/*
- * If VM_MAP_WIRE_HOLESOK was specified, an empty
+ * If holes_ok was specified, an empty
* space in the unwired region could have been mapped
* while the map lock was dropped for faulting in the
* pages or draining MAP_ENTRY_IN_TRANSITION.
@@ -3281,7 +3280,7 @@
*/
if ((entry->eflags & MAP_ENTRY_IN_TRANSITION) == 0 ||
entry->wiring_thread != curthread) {
- KASSERT((flags & VM_MAP_WIRE_HOLESOK) != 0,
+ KASSERT(holes_ok,
("vm_map_wire: !HOLESOK and new/changed entry"));
continue;
}
@@ -3322,7 +3321,7 @@
entry->wiring_thread = NULL;
if (entry->eflags & MAP_ENTRY_NEEDS_WAKEUP) {
entry->eflags &= ~MAP_ENTRY_NEEDS_WAKEUP;
- need_wakeup = TRUE;
+ need_wakeup = true;
}
vm_map_simplify_entry(map, entry);
}

File Metadata

Mime Type
text/plain
Expires
Mon, Nov 16, 3:14 AM (12 h, 12 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41757064
Default Alt Text
D20846.1794798867.diff (6 KB)

Event Timeline