Subject: Re: direct copy() between two proc address spaces
To: Ian Zagorskih <ianzag@megasignal.com>
From: Jaromir Dolecek <jdolecek@NetBSD.org>
List: tech-kern
Date: 06/20/2004 19:17:07
Ian Zagorskih wrote:
> 
> In short: Inside kernel, is it possibly to directly copy data from address 
> space of one process to address space of another process ?
> 
> According to man pages there are copyin()/copyout() functions which move data 
> from user space to kernel space and back. In my case, i have two processes 
> struct proc *p1 and *p2 and i need to copy some block of data between p1 and 
> p2.
> 
> Of course i can manually allocate temporary buffer inside kernel, copy data in 
> buffer from p1, copy data from buffer to p2 and free buffer. But this is 
> quite significant overhead and unneeded operations. Is there some direct way 
> to do this ?

I believe uiomove() can be used to move data from one process's
address space to anothers. I've actually wanted to experiment
with this to optimize pipes further.

Jaromir
 
> Thanks.
> 
> // wbr
> 

-- 
Jaromir Dolecek <jdolecek@NetBSD.org>            http://www.NetBSD.cz/
-=- We should be mindful of the potential goal, but as the Buddhist -=-
-=- masters say, ``You may notice during meditation that you        -=-
-=- sometimes levitate or glow.   Do not let this distract you.''   -=-