这个调用返回的DMA地址是否与物理地址相同? LDD3表示DMA地址应该被驱动程序视为不透明。我想要映射这个DMA缓冲区,以便用户空间可以直接读取/写入它。问题是我应该为remap_pfn_range指定什么PFN(现在我的惊喜(内核3.4+)对传统内存和I/O内存相同)。我可以将DMA地址转换为无符号长整型并将其转换为PFN吗?这不违反LDD3关于不透明性的说法吗?关于dma_alloc_coherent的一些问题
dma_alloc_coherent
是否始终在内部使用__get_free_pages
?这是否意味着该区域可能总是被过度分配(因为第一个函数需要字节,但第二个函数以页为单位分配)?有没有一种方法可以为从
__get_free_pages
的调用获得的多个连续页面设置单个流式映射?dma_map_page
仅适用于单页。
16
A
回答
11
没有,返回的地址是一个虚拟地址,否则你将无法从内核空间访问它。它是代表物理地址的dma_handle,但它是不透明的。您需要在返回的地址上使用virt_to_phys,然后将其传递给remap_pfn_range。
我不相信它(虽然它可能是平台依赖),但它确实分配页面。如果你想为DMA使用更少的内存,你应该使用dma_pool_create,然后从那里分配区域。
您可以使用dma_map_single而不是dma_map_page。
我建议咨询DMA-API.txt关于这些东西的更多细节。
相关问题
- 1. 关于关注WPF的一些问题
- 2. 关于Perceptron的一些问题
- 3. 关于使用resque的一些问题
- 4. 关于MST的一些问题
- 5. 关于Flurry的一些问题
- 6. 关于dealloc方法的一些问题
- 7. 关于'delayed_job'的一些基本问题
- 8. 关于Java AbstractProcessor的一些问题?
- 9. 关于Elmah的一些问题
- 10. 关于一些unix代码的问题?
- 11. 关于智能卡的一些问题
- 12. 关于sipp的一些问题
- 13. 关于innerHTML的一些问题
- 14. 关于Mulesoft的一些概念问题
- 15. 关于PHPExcel图表的一些问题
- 16. 关于MFC开发的一些问题?
- 17. 关于RIA服务的一些问题
- 18. 关于C语法的一些问题
- 19. 关于perl程序的一些问题
- 20. 关于c的一些问题#
- 21. 关于Extjs 4.0.7的一些问题
- 22. 关于KeyEvent的一些问题
- 23. 关于FASM的一些问题
- 24. 关于URLEncoder和URLDecoder的一些问题?
- 25. 关于Asp.net MVC的一些问题
- 26. 关于pthread_mutex_lock和pthread_mutex_unlock的一些问题
- 27. 关于Windows DLL的一些问题?
- 28. 关于OpenId的一些问题
- 29. 关于C++的一些问题try catch
- 30. 关于HTML5的一些问题FileSystemAPI
您是否发现将dma内存附加到remap_pfn_range内存的正确方法? – Luca 2015-01-27 18:53:24