diff options
author | tegge <tegge@FreeBSD.org> | 2004-08-12 20:14:49 +0000 |
---|---|---|
committer | tegge <tegge@FreeBSD.org> | 2004-08-12 20:14:49 +0000 |
commit | c5a462b4d9c262be85ebc8bcaf384b7fedf6635f (patch) | |
tree | cdd456b0a228f822484d6c67d1339fd17b892cfe /sys/vm/vm_map.h | |
parent | f579b621f44c9fd326dcebc027de9a72f7b9e8f3 (diff) | |
download | FreeBSD-src-c5a462b4d9c262be85ebc8bcaf384b7fedf6635f.zip FreeBSD-src-c5a462b4d9c262be85ebc8bcaf384b7fedf6635f.tar.gz |
The vm map lock is needed in vm_fault() after the page has been found,
to avoid later changes before pmap_enter() and vm_fault_prefault()
has completed.
Simplify deadlock avoidance by not blocking on vm map relookup.
In collaboration with: alc
Diffstat (limited to 'sys/vm/vm_map.h')
-rw-r--r-- | sys/vm/vm_map.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/vm/vm_map.h b/sys/vm/vm_map.h index 6531ff0..1d79a51 100644 --- a/sys/vm/vm_map.h +++ b/sys/vm/vm_map.h @@ -185,7 +185,6 @@ struct vm_map { u_int timestamp; /* Version number */ u_char needs_wakeup; u_char system_map; /* Am I a system map? */ - u_char infork; /* Am I in fork processing? */ vm_flags_t flags; /* flags for this vm_map */ vm_map_entry_t root; /* Root of a binary search tree */ vm_map_entry_t first_free; /* First free space hint */ @@ -341,6 +340,8 @@ void vm_map_init (struct vm_map *, vm_offset_t, vm_offset_t); int vm_map_insert (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 (vm_map_t *, vm_offset_t, vm_prot_t, vm_map_entry_t *, vm_object_t *, vm_pindex_t *, vm_prot_t *, boolean_t *); +int vm_map_lookup_locked(vm_map_t *, vm_offset_t, vm_prot_t, vm_map_entry_t *, vm_object_t *, + vm_pindex_t *, vm_prot_t *, boolean_t *); void vm_map_lookup_done (vm_map_t, vm_map_entry_t); boolean_t vm_map_lookup_entry (vm_map_t, vm_offset_t, vm_map_entry_t *); void vm_map_pmap_enter(vm_map_t map, vm_offset_t addr, vm_prot_t prot, |