Hi,
 
Are there any kernel guys (girls) who know about copying memory while in a kernel module ?
 
A kernel module may copy data from user space to kernel space using 'copy_to_user'.
Can a kernel module copy data from one user space to another user space ?
 
( I want to be able to send a essage from one task to the other with only one memory copy.
ie copy directly from Task A's memory space to Task B's memory space.)
 
 
THE REASON BEHIND THE QUESTION:
 
I have Task A that wants to send a message to Task B.              Task A is now not running
Task B does some work and sends a reply message to Task A.  Task B is now running
 
For anyone familiar with QNX, this is the classic Send/Receive/Reply programming paradigm.
I know this can be done in user space (I've done it) and seen what 'SIMPL' has to offer (from parrallel computing) but these are very slow compared to benchmarks done on my old QNX os (same hardware of course)
 
MY OWN REASONING:
 
I figure the reason this may be difficult is because the task not 'current' to the kernel module may have had its memory swapped out and therefore may not be in memory at the time of the call.
 
I can live with the client tasks allocating their send/receive memory on a non-swappable basis (can't remember how but I know it can be done in user-space).  Given this then it should be possible to acheive the transfer in only one memory copy.
 
Any ideas ?
 
Regards,
 
Andrew Eager
 
 

Reply via email to