Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1329164
  • 博文数量: 281
  • 博客积分: 8800
  • 博客等级: 中将
  • 技术积分: 3345
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-17 22:31
文章分类

全部博文(281)

文章存档

2013年(1)

2012年(18)

2011年(16)

2010年(44)

2009年(86)

2008年(41)

2007年(10)

2006年(65)

我的朋友

分类: LINUX

2009-11-02 17:03:56

void *dxt_dma_contig_alloc(unsigned int size)
{
    struct page *page;
    void *addr = (void *)__get_free_pages( GFP_DMA, get_order(size));
    for (page = virt_to_page(addr); page <= virt_to_page(addr + size - 1); page++)
        //SetPageReserved(page);
    return addr;
}

void dxt_dma_contig_free(void *addr, unsigned int size)
{
    struct page *page;
    for (page = virt_to_page(addr); page <= virt_to_page(addr + size - 1); page++)
        //ClearPageReserved(page);
    free_pages((unsigned long)addr, get_order(size));
}
 
1. 在PC上可以分配8M
2. __get_free_pages( GFP_DMA | GFP_KERNEL, )有问题
3. 不能SetPageReserved()
阅读(2646) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~