Date: Mon, 20 Oct 1997 23:17:20 -0600 (MDT) From: Kenneth Merry <ken@plutotech.com> To: durian@plutotech.com (Mike Durian) Cc: hackers@FreeBSD.ORG Subject: Re: user vm addr to kernel vm addr Message-ID: <199710210517.XAA18704@pluto.plutotech.com> In-Reply-To: <199710210201.UAA10419@pluto.plutotech.com> from Mike Durian at "Oct 20, 97 08:01:11 pm"
next in thread | previous in thread | raw e-mail | index | archive | help
Mike Durian wrote... > In my virtual file system I'd like to speed up reads and writes > by copying directly from the uio structure to a vm address of > a buffer in the user process running on behalf of the filesystem. > I'm currently shoving all the data through a socket that the > user process reads from and copies into a buffer. I'd like to > go direct and skip the socket writing part. Does that make sense? > Anyway, I want to copy from a uio to a different process's vm space. > I can get the vm address of the destination buffer over a socket and > think I can use vm_fault_wire to make sure it stays accessable, but > I don't know how to convert that user space vm address into a > kernel space vm address that I can then use with copyout. > Is there an easy (or any) way to do this? I'm not positive this is what you're looking for, but... one way to do it is to map the user address into the kernel address space using vmapbuf(). If you want a specific code example, just let me know. (or look in the CAM SCSI passthrough driver for the passmapmem() and passunmapmem() functions) Ken -- Kenneth Merry ken@plutotech.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199710210517.XAA18704>