aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vm_map.h
diff options
context:
space:
mode:
authorAlan Cox <alc@FreeBSD.org>1999-08-23 18:08:34 +0000
committerAlan Cox <alc@FreeBSD.org>1999-08-23 18:08:34 +0000
commitb7d742995eaeadfb5dd21d5ec5c26d97b41b2c36 (patch)
treebb4cb96095ac8dc2a6089ad22de9bc1b358ffaea /sys/vm/vm_map.h
parent0d68c4b07e421959082e8621ac4cdc6b931df981 (diff)
Notes
Diffstat (limited to 'sys/vm/vm_map.h')
-rw-r--r--sys/vm/vm_map.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/vm/vm_map.h b/sys/vm/vm_map.h
index 3d0f1de30e354..251029d1a4aaa 100644
--- a/sys/vm/vm_map.h
+++ b/sys/vm/vm_map.h
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_map.h,v 1.45 1999/08/16 18:21:09 alc Exp $
+ * $Id: vm_map.h,v 1.46 1999/08/18 03:56:57 mjacob Exp $
*/
/*
@@ -143,10 +143,17 @@ vm_map_entry_set_behavior(struct vm_map_entry *entry, u_char behavior)
* by address. A single hint is provided to start
* searches again from the last successful search,
* insertion, or removal.
+ *
+ * Note: the lock structure cannot be the first element of vm_map
+ * because this can result in a running lockup between two or more
+ * system processes trying to kmem_alloc_wait() due to kmem_alloc_wait()
+ * and free tsleep/waking up 'map' and the underlying lockmgr also
+ * sleeping and waking up on 'map'. The lockup occurs when the map fills
+ * up. The 'exec' map, for example.
*/
struct vm_map {
- struct lock lock; /* Lock for map data */
struct vm_map_entry header; /* List of entries */
+ struct lock lock; /* Lock for map data */
int nentries; /* Number of entries */
vm_size_t size; /* virtual size */
unsigned char system_map; /* Am I a system map? */