首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pci_alloc_consistent与dma_alloc_coherent的区别

pci_alloc_consistent与dma_alloc_coherent的区别
EN

Stack Overflow用户
提问于 2014-12-28 14:46:03
回答 1查看 7.5K关注 0票数 11

我正在研究基于pcie的网络驱动程序。不同的示例使用pci_alloc_consistentdma_alloc_coherent中的一个来获取用于传输和接收描述符的内存。哪一个更好,如果有的话,两者有什么区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-02 23:26:08

两者之间的差别是微妙的,但非常重要。pci_alloc_consistent()是这两种功能中较旧的一种,遗留驱动程序仍然使用它。现在,pci_alloc_consistent()只打电话给dma_alloc_coherent()

区别是什么?分配的内存的类型。

  • pci_alloc_consistent() -分配GFP_ATOMIC类型的内存。分配不睡觉,用于例如中断处理程序,底部半部。

  • dma_alloc_coherent()- -您可以自己指定要分配的内存类型。您不应该使用高优先级的GFP_ATOMIC内存,除非您需要它,而且在大多数情况下,您对GFP_KERNEL分配都很满意。

内核3.18 pci_alloc_consistent()的定义非常简单,即:

代码语言:javascript
复制
 static inline void *
 pci_alloc_consistent(struct pci_dev *hwdev, size_t size,
                      dma_addr_t *dma_handle)
 {
         return dma_alloc_coherent(hwdev == NULL ? NULL : &hwdev->dev, size, dma_handle, GFP_ATOMIC);
 }

简而言之,请使用dma_alloc_coherent()

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27677452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档