diff options
-rw-r--r-- | sys/vm/vm_extern.h | 2 | ||||
-rw-r--r-- | sys/vm/vm_glue.c | 29 |
2 files changed, 31 insertions, 0 deletions
diff --git a/sys/vm/vm_extern.h b/sys/vm/vm_extern.h index ee71f81..07f28fa 100644 --- a/sys/vm/vm_extern.h +++ b/sys/vm/vm_extern.h @@ -88,6 +88,8 @@ void vmspace_unshare(struct proc *); void vmspace_free(struct vmspace *); void vmspace_exitfree(struct proc *); void vnode_pager_setsize(struct vnode *, vm_ooffset_t); +void vslock(void *, u_int); +void vsunlock(void *, u_int); void vm_object_print(/* db_expr_t */ long, boolean_t, /* db_expr_t */ long, char *); int vm_fault_quick(caddr_t v, int prot); diff --git a/sys/vm/vm_glue.c b/sys/vm/vm_glue.c index b1e1cdf..6e2872f 100644 --- a/sys/vm/vm_glue.c +++ b/sys/vm/vm_glue.c @@ -180,6 +180,35 @@ useracc(addr, len, rw) } /* + * MPSAFE + */ +void +vslock(addr, len) + void *addr; + u_int len; +{ + + vm_map_wire(&curproc->p_vmspace->vm_map, trunc_page((vm_offset_t)addr), + round_page((vm_offset_t)addr + len), + VM_MAP_WIRE_SYSTEM|VM_MAP_WIRE_NOHOLES); +} + +/* + * MPSAFE + */ +void +vsunlock(addr, len) + void *addr; + u_int len; +{ + + vm_map_unwire(&curproc->p_vmspace->vm_map, + trunc_page((vm_offset_t)addr), + round_page((vm_offset_t)addr + len), + VM_MAP_WIRE_SYSTEM|VM_MAP_WIRE_NOHOLES); +} + +/* * Create the U area for a new process. * This routine directly affects the fork perf for a process. */ |