summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2002-06-08 07:32:38 +0000
committeralc <alc@FreeBSD.org>2002-06-08 07:32:38 +0000
commit75c335726c3d324435eb9a5d3ab9b529ec21b061 (patch)
treeaf43ad2b469193a0a301a9ba1975d8c06654b2bb /sys
parent38740250412b74e00ddeed31b89d7d2650d6d2de (diff)
downloadFreeBSD-src-75c335726c3d324435eb9a5d3ab9b529ec21b061.zip
FreeBSD-src-75c335726c3d324435eb9a5d3ab9b529ec21b061.tar.gz
o Remove an unnecessary call to vm_map_wakeup() from vm_map_unwire().
o Add a stub for vm_map_wire(). Note: the description of the previous commit had an error. The in- transition flag actually blocks the deallocation of a vm_map_entry by vm_map_delete() and vm_map_simplify_entry().
Diffstat (limited to 'sys')
-rw-r--r--sys/vm/vm_map.c21
-rw-r--r--sys/vm/vm_map.h2
2 files changed, 17 insertions, 6 deletions
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index 9b63f47..c784ff5 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -1486,7 +1486,7 @@ vm_map_inherit(vm_map_t map, vm_offset_t start, vm_offset_t end,
/*
* vm_map_unwire:
*
- * Implements both kernel and user unwire.
+ * Implements both kernel and user unwiring.
*/
int
vm_map_unwire(vm_map_t map, vm_offset_t start, vm_offset_t end,
@@ -1505,7 +1505,6 @@ vm_map_unwire(vm_map_t map, vm_offset_t start, vm_offset_t end,
return (KERN_INVALID_ADDRESS);
}
last_timestamp = map->timestamp;
- need_wakeup = FALSE;
entry = first_entry;
while (entry != &map->header && entry->start < end) {
if (entry->eflags & MAP_ENTRY_IN_TRANSITION) {
@@ -1515,10 +1514,6 @@ vm_map_unwire(vm_map_t map, vm_offset_t start, vm_offset_t end,
saved_start = (start >= entry->start) ? start :
entry->start;
entry->eflags |= MAP_ENTRY_NEEDS_WAKEUP;
- if (need_wakeup) {
- vm_map_wakeup(map);
- need_wakeup = FALSE;
- }
if (vm_map_unlock_and_wait(map, user_unwire)) {
/*
* Allow interruption of user unwiring?
@@ -1600,6 +1595,7 @@ vm_map_unwire(vm_map_t map, vm_offset_t start, vm_offset_t end,
}
rv = KERN_SUCCESS;
done:
+ need_wakeup = FALSE;
if (first_entry == NULL) {
result = vm_map_lookup_entry(map, start, &first_entry);
KASSERT(result, ("vm_map_unwire: lookup failed"));
@@ -1623,6 +1619,19 @@ done:
}
/*
+ * vm_map_wire:
+ *
+ * Implements both kernel and user wiring.
+ */
+int
+vm_map_wire(vm_map_t map, vm_offset_t start, vm_offset_t end,
+ boolean_t user_wire)
+{
+
+ return (KERN_FAILURE);
+}
+
+/*
* Implement the semantics of mlock
*/
int
diff --git a/sys/vm/vm_map.h b/sys/vm/vm_map.h
index 66e54fe..7dc819c 100644
--- a/sys/vm/vm_map.h
+++ b/sys/vm/vm_map.h
@@ -320,6 +320,8 @@ int vm_map_stack (vm_map_t, vm_offset_t, vm_size_t, vm_prot_t, vm_prot_t, int);
int vm_map_growstack (struct proc *p, vm_offset_t addr);
int vm_map_unwire(vm_map_t map, vm_offset_t start, vm_offset_t end,
boolean_t user_unwire);
+int vm_map_wire(vm_map_t map, vm_offset_t start, vm_offset_t end,
+ boolean_t user_wire);
int vmspace_swap_count (struct vmspace *vmspace);
int vm_uiomove(vm_map_t, vm_object_t, off_t, int, vm_offset_t, int *);
#endif /* _KERNEL */
OpenPOWER on IntegriCloud