create a kernel buffer from user-level
Dave Jones
davej at redhat.com
Thu Dec 6 21:20:19 UTC 2007
On Thu, Dec 06, 2007 at 03:06:54PM -0600, Feng Xian wrote:
> I am doing a project related to thread scheduling. This project needs
> communication between kernel and user-level applications. Basically, the
> user-level application sets or unset a bit in a bit vector, according to the
> application's status (this part is not related to this question, so I skip
> it). Then the kernel reads the bit vector everytime it schedules a thread.
> My question is where to allocate the bit vector.
> 1. If I allocate the bit vector in user-level, then everytime the kernel
> wants to read the bit vector, I has to do a copy_from_user(). I tried this
> solution, this incurs a lot of overhead and also crash the os. Since the
> copy_from_user() needs to look up the virtual address which corresponds to
> the starting address of bit-vector, it will cause paging in the middle of
> scheduling. Is there any other way that the kernel can directly access
> user-level space without doing copying and address translation?
>
> 2. If I allocate the bit vector directly in the kernel space. How can I do
> this? Is it possible to create an extra system call that allows user-level
> program to allocate a kernel buffer?
>
> Could anyone help me out on this? Thanks!
Try the kernelnewbies list at http://kernelnewbies.org/ML
or linux-kernel at vger.kernel.org.
Your problem isn't related specifically to the Fedora kernel, so is
off-topic here.
Dave
--
http://www.codemonkey.org.uk
More information about the Fedora-kernel-list
mailing list