Changeset View
Changeset View
Standalone View
Standalone View
head/sys/kern/kern_physio.c
Show All 21 Lines | |||||
#include <sys/param.h> | #include <sys/param.h> | ||||
#include <sys/systm.h> | #include <sys/systm.h> | ||||
#include <sys/bio.h> | #include <sys/bio.h> | ||||
#include <sys/buf.h> | #include <sys/buf.h> | ||||
#include <sys/conf.h> | #include <sys/conf.h> | ||||
#include <sys/malloc.h> | #include <sys/malloc.h> | ||||
#include <sys/proc.h> | #include <sys/proc.h> | ||||
#include <sys/racct.h> | |||||
#include <sys/uio.h> | #include <sys/uio.h> | ||||
#include <geom/geom.h> | #include <geom/geom.h> | ||||
#include <vm/vm.h> | #include <vm/vm.h> | ||||
#include <vm/vm_page.h> | #include <vm/vm_page.h> | ||||
#include <vm/vm_extern.h> | #include <vm/vm_extern.h> | ||||
#include <vm/vm_map.h> | #include <vm/vm_map.h> | ||||
▲ Show 20 Lines • Show All 66 Lines • ▼ Show 20 Lines | if (uio->uio_segflg != UIO_USERSPACE) { | ||||
maxpages = btoc(MAXPHYS); | maxpages = btoc(MAXPHYS); | ||||
pages = pbuf->b_pages; | pages = pbuf->b_pages; | ||||
} | } | ||||
prot = VM_PROT_READ; | prot = VM_PROT_READ; | ||||
if (uio->uio_rw == UIO_READ) | if (uio->uio_rw == UIO_READ) | ||||
prot |= VM_PROT_WRITE; /* Less backwards than it looks */ | prot |= VM_PROT_WRITE; /* Less backwards than it looks */ | ||||
error = 0; | error = 0; | ||||
for (i = 0; i < uio->uio_iovcnt; i++) { | for (i = 0; i < uio->uio_iovcnt; i++) { | ||||
#ifdef RACCT | |||||
if (racct_enable) { | |||||
PROC_LOCK(curproc); | |||||
if (uio->uio_rw == UIO_READ) { | |||||
racct_add_force(curproc, RACCT_READBPS, | |||||
uio->uio_iov[i].iov_len); | |||||
racct_add_force(curproc, RACCT_READIOPS, 1); | |||||
} else { | |||||
racct_add_force(curproc, RACCT_WRITEBPS, | |||||
uio->uio_iov[i].iov_len); | |||||
racct_add_force(curproc, RACCT_WRITEIOPS, 1); | |||||
} | |||||
PROC_UNLOCK(curproc); | |||||
} | |||||
#endif /* RACCT */ | |||||
while (uio->uio_iov[i].iov_len) { | while (uio->uio_iov[i].iov_len) { | ||||
g_reset_bio(bp); | g_reset_bio(bp); | ||||
if (uio->uio_rw == UIO_READ) { | if (uio->uio_rw == UIO_READ) { | ||||
bp->bio_cmd = BIO_READ; | bp->bio_cmd = BIO_READ; | ||||
curthread->td_ru.ru_inblock++; | curthread->td_ru.ru_inblock++; | ||||
} else { | } else { | ||||
bp->bio_cmd = BIO_WRITE; | bp->bio_cmd = BIO_WRITE; | ||||
curthread->td_ru.ru_oublock++; | curthread->td_ru.ru_oublock++; | ||||
▲ Show 20 Lines • Show All 89 Lines • Show Last 20 Lines |