map share memory to kernel space

John Baldwin jhb at freebsd.org
Tue Feb 15 12:51:50 UTC 2011


On Monday, February 14, 2011 10:12:59 pm beezarliu wrote:
> On 2011-02-14 22:56:28, John Baldwin wrote:
> >On Monday, February 14, 2011 4:18:50 am beezarliu wrote:
> >> Hackers,
> >> 
> >> I want to access a userland share memory in a kernel thread. 
> >> So I tried to map the share memory to the kernel space. 
> >> The basic idea is to map the shm_object into kernel_map
> >> when the share memory is created.
> >> 
> >> Using the following patch, I found the vm_object in kernel_map,
> >> and the vm_object in the address space of userland process are the same.
> >> But their content in the kernel and userland address mapped are different.
> >> 
> >> It's very strang since they are exactly the same vm_object.
> >> Do I miss something, please help.
> >
> >Hmm, this is a bit of code I use for something similar to map a VM object into 
> >the kernel.  It does not use vm_page_grab() directly though:
> 
> 
> Initially, I wanted to allocate all the pages needed when the share memory is created,
> in order to reduce page fault at the time it's used.
> This seems to be an extra step.  :(
> 
> John, thank you very much!

I think vm_map_wire() will find pages for you when it wires the object.

-- 
John Baldwin


More information about the freebsd-hackers mailing list