Lines Matching refs:uio
64 #include <sys/uio.h>
196 uiomove_object_page(vm_object_t obj, size_t len, struct uio *uio)
203 idx = OFF_TO_IDX(uio->uio_offset);
204 offset = uio->uio_offset & PAGE_MASK;
219 if (uio->uio_rw == UIO_READ && m == NULL &&
222 return (uiomove(__DECONST(void *, zero_region), tlen, uio));
245 error = uiomove_fromphys(&m, offset, tlen, uio);
246 if (uio->uio_rw == UIO_WRITE && error == 0)
255 uiomove_object(vm_object_t obj, off_t obj_size, struct uio *uio)
262 while ((resid = uio->uio_resid) > 0) {
263 if (obj_size <= uio->uio_offset)
265 len = MIN(obj_size - uio->uio_offset, resid);
268 error = uiomove_object_page(obj, len, uio);
269 if (error != 0 || resid == uio->uio_resid)
455 shm_read(struct file *fp, struct uio *uio, struct ucred *active_cred,
468 foffset_lock_uio(fp, uio, flags);
469 rl_cookie = shm_rangelock_rlock(shmfd, uio->uio_offset,
470 uio->uio_offset + uio->uio_resid);
471 error = uiomove_object(shmfd->shm_object, shmfd->shm_size, uio);
473 foffset_unlock_uio(fp, uio, flags);
478 shm_write(struct file *fp, struct uio *uio, struct ucred *active_cred,
494 foffset_lock_uio(fp, uio, flags);
495 if (uio->uio_resid > OFF_MAX - uio->uio_offset) {
502 foffset_unlock_uio(fp, uio, flags);
508 size = uio->uio_offset + uio->uio_resid;
513 rl_cookie = shm_rangelock_wlock(shmfd, uio->uio_offset, size);
524 shmfd->shm_size, uio);
527 foffset_unlock_uio(fp, uio, flags);