免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6975 | 回复: 6
打印 上一主题 下一主题

内存映射问题--mmap in framebuffer [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-22 10:10 |只看该作者 |倒序浏览
小弟偶在写一个framebuffer驱动,用kmalloc在内核中分配了60k的内存,200*100,24bpp,这是自己设定的模式。然后不论是用我自己的mmap函数还是用framebuffer自带的fb_mmap函数映射到用户空间时,发现映射之后的用户空间地址正确,但是往用户空间的地址里写内容时,却没有结果,也就是我在用户空间写入和打印结果一致,但是却没有结果,用cat /proc/fb0 > xxxfb把结果打印出来却发现kernel内部的值没有发生任何变化,附上偶得mmap的代码。
   367 static int xxxfb_mmap(struct fb_info *info, struct file *file,
    368             struct vm_area_struct *vma)
    369 {
    370     unsigned long phys = virt_to_phys((void *)info->fix.smem_start);
    371
    372 //  debug
    373     printk("in mmap, physical address is %ld\n", phys);
    374 //  debug
    375     if (io_remap_page_range((struct vm_area_struct *) vma,
    376                             vma->vm_start, phys,
    377                             vma->vm_end-vma->vm_start,
    378                             vma->vm_page_prot))
    379         return -EAGAIN;
    380     return 0;
    381 }
小弟的机子是as4 ,kernel  2.6.9.5。

请各位多多指教!

[ 本帖最后由 riccy 于 2007-5-22 10:24 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-05-26 21:32 |只看该作者
io_remap_page_range这个函数在我的2.6代码里面没有啊。
另外,你是想做什么??内核里面申请了内存,然后隐射到用户空间,让用户空间的进程读写??

论坛徽章:
0
3 [报告]
发表于 2007-05-26 21:36 |只看该作者
如果是那样的话,你试试看__handle_mm_fault这个函数,也许不能直接用,你参考一下自己写个。

论坛徽章:
0
4 [报告]
发表于 2007-06-05 13:17 |只看该作者
好像LDD3中说的要想把内核逻辑地址映射出去,不能用remap函数一次搞定,必须用nopage的方法吧?
你查一下先

论坛徽章:
0
5 [报告]
发表于 2010-02-05 11:41 |只看该作者
nup~

论坛徽章:
0
6 [报告]
发表于 2010-02-07 22:24 |只看该作者
好像LDD3中说的要想把内核逻辑地址映射出去,不能用remap函数一次搞定,必须用nopage的方法吧?
你查一下先 ...
augustusqing 发表于 2007-06-05 13:17


不是的,有两种方法:
一种是lz的ioremap方法,另一种是你说的nopage方法,两种都可以的。

论坛徽章:
0
7 [报告]
发表于 2010-02-07 22:34 |只看该作者
不必自己实现mmap函数,fb设备有默认实现,可以参考下别人驱动是怎么写的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP