[lkml]   [2000]   [Oct]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: mapping user space buffer to kernel address space
On 13 Oct 00 at 15:31, wrote:

> I have a user buffer and i want to map it to kernel address space
> can anyone tell how to do this like in AIX we have xmattach

Look at mm/memory.c:map_user_kiobuf. It is used by drivers/char/raw.c,
or by drivers/media/video/bttv-driver.c, for example. It is 2.4 solution.

For 2.2 solution, you have to
(1) pagein page to memory (getuser(c, (char*)addr)),
(2) walk pagetables (yourself, as p[gm]d_offset and pte_offset are 2.3 things),
(3) increment page reference count (get_page(mem_map + pagenr))
I believe that it is implemented by 2.2 drivers/char/bttv.c, and by
vmware's vmmon module.
Petr Vandrovec

P.S.: Last week I wrote that incrementing page->count can cause troubles
under 2.4 kernels. I found that you do not have to increment page count,
just shared mappings are not correctly truncated at ftruncate at all...
So you can use 2.2 solution in 2.4 too. But kiobuf is not i386 specific,
so it is preferred solution.

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
Please read the FAQ at

 \ /
  Last update: 2005-03-22 12:41    [W:0.040 / U:0.736 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site