From cab68d38d220a62ea8e133c93ef3c18d1ad3d14e Mon Sep 17 00:00:00 2001 From: alc Date: Wed, 24 Mar 2004 23:35:04 +0000 Subject: Use uiomove_fromphys() instead of pmap_qenter() and pmap_qremove() in proc_rwmem(). --- sys/kern/sys_process.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) (limited to 'sys/kern/sys_process.c') diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c index 636d10b..dcfad3d 100644 --- a/sys/kern/sys_process.c +++ b/sys/kern/sys_process.c @@ -152,7 +152,6 @@ proc_rwmem(struct proc *p, struct uio *uio) vm_object_t backing_object, object = NULL; vm_offset_t pageno = 0; /* page number */ vm_prot_t reqprot; - vm_offset_t kva; int error, writing; GIANT_REQUIRED; @@ -177,8 +176,6 @@ proc_rwmem(struct proc *p, struct uio *uio) reqprot = writing ? (VM_PROT_WRITE | VM_PROT_OVERRIDE_WRITE) : VM_PROT_READ; - kva = kmem_alloc_nofault(kernel_map, PAGE_SIZE); - /* * Only map in one page at a time. We don't have to, but it * makes things easier. This way is trivial - right? @@ -262,14 +259,10 @@ proc_rwmem(struct proc *p, struct uio *uio) */ vm_map_lookup_done(tmap, out_entry); - pmap_qenter(kva, &m, 1); - /* * Now do the i/o move. */ - error = uiomove((caddr_t)(kva + page_offset), len, uio); - - pmap_qremove(kva, 1); + error = uiomove_fromphys(&m, page_offset, len, uio); /* * Release the page. @@ -280,7 +273,6 @@ proc_rwmem(struct proc *p, struct uio *uio) } while (error == 0 && uio->uio_resid > 0); - kmem_free(kernel_map, kva, PAGE_SIZE); vmspace_free(vm); return (error); } -- cgit v1.1