这个调用返回的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. 关于流的一些问题
- 3. 关于'delayed_job'的一些基本问题
- 4. 关于Java AbstractProcessor的一些问题?
- 5. 关于使用resque的一些问题
- 6. modernizr.js关于它的一些小问题
- 7. 关于Mulesoft的一些概念问题
- 8. 关于C++的一些问题try catch
- 9. 关于Scanf的一些问题
- 10. 关于Asp.net MVC的一些问题
- 11. 关于iOS开发的一些问题
- 12. 关于RIA服务的一些问题
- 13. 关于pthread_mutex_lock和pthread_mutex_unlock的一些问题
- 14. 关于innerHTML的一些问题
- 15. 关于perl程序的一些问题
- 16. 关于laravel 5的一些问题
- 17. 关于一些unix代码的问题?
- 18. 关于OpenId的一些问题
- 19. 关于Extjs 4.0.7的一些问题
- 20. 关于MFC开发的一些问题?
- 21. 关于一些设计问题
- 22. 关于定位自己,一些问题
- 23. 关于DI的问题以及如何解决一些问题
- 24. 关于关系数据库的一些基本问题
- 25. 关于这些UIButton的问题
- 26. 关于一段Fortran代码的一些问题,Fortran新手段
- 27. 关于CSS spritesheet的问题(有些关于缓存)
- 28. 有关NHibernate的GuidCombGenerator的一些问题
- 29. 关于手机编程中的SQLite的一些问题
- 30. 传统的ASP很像PHP和一些关于MVC的问题?
您是否发现将dma内存附加到remap_pfn_range内存的正确方法? – Luca 2015-01-27 18:53:24