summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authorjasone <jasone@FreeBSD.org>2000-10-04 01:29:17 +0000
committerjasone <jasone@FreeBSD.org>2000-10-04 01:29:17 +0000
commit4e290e67b7310d906f113850fddfdf1017a9d15b (patch)
treebae3e99c848c6e38aee34a7cf61ffa9ca55b0095 /sys/vm
parentbea51a4aa1bf67a183bd1d4a6227fa891345af60 (diff)
downloadFreeBSD-src-4e290e67b7310d906f113850fddfdf1017a9d15b.zip
FreeBSD-src-4e290e67b7310d906f113850fddfdf1017a9d15b.tar.gz
Convert lockmgr locks from using simple locks to using mutexes.
Add lockdestroy() and appropriate invocations, which corresponds to lockinit() and must be called to clean up after a lockmgr lock is no longer needed.
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_map.c8
-rw-r--r--sys/vm/vm_map.h10
2 files changed, 14 insertions, 4 deletions
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index 4eea821..e5b50d2 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -215,6 +215,7 @@ vmspace_free(vm)
vm_map_unlock(&vm->vm_map);
pmap_release(vmspace_pmap(vm));
+ vm_map_destroy(&vm->vm_map);
zfree(vmspace_zone, vm);
}
}
@@ -261,6 +262,13 @@ vm_map_init(map, min, max)
lockinit(&map->lock, PVM, "thrd_sleep", 0, LK_NOPAUSE);
}
+void
+vm_map_destroy(map)
+ struct vm_map *map;
+{
+ lockdestroy(&map->lock);
+}
+
/*
* vm_map_entry_dispose: [ internal use only ]
*
diff --git a/sys/vm/vm_map.h b/sys/vm/vm_map.h
index f290b2c..d238488 100644
--- a/sys/vm/vm_map.h
+++ b/sys/vm/vm_map.h
@@ -203,6 +203,7 @@ struct vmspace {
* as unbraced elements in a higher level statement.
*/
+/* XXX This macro is not called anywhere, and (map)->ref_lock doesn't exist. */
#define vm_map_lock_drain_interlock(map) \
do { \
lockmgr(&(map)->lock, LK_DRAIN|LK_INTERLOCK, \
@@ -290,15 +291,15 @@ _vm_map_lock_upgrade(vm_map_t map, struct proc *p) {
#define vm_map_set_recursive(map) \
do { \
- simple_lock(&(map)->lock.lk_interlock); \
+ mtx_enter(&(map)->lock.lk_interlock, MTX_DEF); \
(map)->lock.lk_flags |= LK_CANRECURSE; \
- simple_unlock(&(map)->lock.lk_interlock); \
+ mtx_exit(&(map)->lock.lk_interlock, MTX_DEF); \
} while(0)
#define vm_map_clear_recursive(map) \
do { \
- simple_lock(&(map)->lock.lk_interlock); \
+ mtx_enter(&(map)->lock.lk_interlock, MTX_DEF); \
(map)->lock.lk_flags &= ~LK_CANRECURSE; \
- simple_unlock(&(map)->lock.lk_interlock); \
+ mtx_exit(&(map)->lock.lk_interlock, MTX_DEF); \
} while(0)
/*
@@ -355,6 +356,7 @@ int vm_map_find __P((vm_map_t, vm_object_t, vm_ooffset_t, vm_offset_t *, vm_size
int vm_map_findspace __P((vm_map_t, vm_offset_t, vm_size_t, vm_offset_t *));
int vm_map_inherit __P((vm_map_t, vm_offset_t, vm_offset_t, vm_inherit_t));
void vm_map_init __P((struct vm_map *, vm_offset_t, vm_offset_t));
+void vm_map_destroy __P((struct vm_map *));
int vm_map_insert __P((vm_map_t, vm_object_t, vm_ooffset_t, vm_offset_t, vm_offset_t, vm_prot_t, vm_prot_t, int));
int vm_map_lookup __P((vm_map_t *, vm_offset_t, vm_prot_t, vm_map_entry_t *, vm_object_t *,
vm_pindex_t *, vm_prot_t *, boolean_t *));
OpenPOWER on IntegriCloud