QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2030|回复: 1

DMA + mmap的问题

[复制链接]
发表于 2006-1-20 12:21:18 | 显示全部楼层 |阅读模式
我用的内核版本是2.6.9,想用__get_free_pages得到一个2M的空间,然后mmap给应用层,让应用层直接来写这个空间,之后我用DMA把这2M的数据搬到其他地方去处理,结果碰到了一些问题,向大家讨教。我测试发现,通过mmap以后,应用层只写入了4k的数据,其他的数据没有写成功,很奇怪~,我的代码如下,编译没有报任何错误
1、 使用__get_free_pages得到内存
pvideo_codec_dev->DMA_BaseAddr = (DWORD*) __get_free_pages(GFP_KERNEL|GFP_DMA,9)

  res_addr = (DWORD *)pvideo_codec_dev->DMA_BaseAddr;
  while (pages < 512)
  {
    //Let the page always in the mem
    SetPageReserved(virt_to_page(res_addr));
    res_addr = res_addr + PAGE_SIZE;
    pages++;
  }
  memset(pvideo_codec_dev->DMA_BaseAddr, 0, PAGE_SIZE<<9);

2. 使用mmap
map_page_range(vma,vma->vm_start,
                           virt_to_phys(pvideo_codec_dev->DMA_BaseAddr),
                   vma->vm_end-vma->vm_start,
                           vma->vm_page_prot)

请大家帮忙看一些,我的代码或者思路是否有问题,多谢!

另外还有一个问题,为何我#include <linux/wrapper.h>,make后报错,
linux/wrapper.h: No such file or directory

多谢大家~
发表于 2006-1-20 22:02:28 | 显示全部楼层
用下code功能
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-27 08:02 , Processed in 0.098620 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表