이 호출에서 반환 된 DMA 주소는 실제 주소와 동일합니까? LDD3은 DMA 주소가 드라이버에 의해 불투명 한 것으로 취급되어야한다고 말합니다. 이 DMA 버퍼를 mmap하여 사용자 공간이 직접 읽고 쓸 수있게하고 싶습니다. 질문은 remap_pfn_range에 대해 PFN이 지정해야하는 것입니다 (현재 유쾌한 놀라움으로 (커널 3.4+)은 I/O 메모리와 같은 기본 메모리에서 작동합니다). DMA 주소를 부호없는 long으로 변환하여 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_page 대신 dma_map_single을 사용할 수 있습니다.
이 자료 중 일부는 DMA-API.txt에게 문의하는 것이 좋습니다.
관련 문제
- 1. 캐싱에 대한 몇 가지 질문
- 2. DLR에 대한 몇 가지 질문
- 3. AsyncTask에 대한 몇 가지 질문
- 4. OpenID에 대한 몇 가지 질문
- 5. 순열에 대한 몇 가지 질문
- 6. CodeSmith에 대한 몇 가지 질문
- 7. Git에 대한 몇 가지 질문
- 8. VBO에 대한 몇 가지 질문
- 9. 몇 가지 질문
- 10. 포인터 - 몇 가지 질문
- 11. 몇 가지 질문
- 12. Django 현지화에 대한 몇 가지 질문
- 13. 단위 테스트에 대한 몇 가지 질문
- 14. Qt pro-file에 대한 몇 가지 질문
- 15. Amazon S3에 대한 몇 가지 기본적인 질문
- 16. 오라클 양식 빌더에 대한 몇 가지 질문
- 17. iOS 공유에 대한 몇 가지 질문
- 18. iOS 개발에 대한 몇 가지 질문
- 19. 안드로이드 SDK의 MediaPlayer에 대한 몇 가지 질문
- 20. 팩맨 경로 찾기에 대한 몇 가지 질문
- 21. 스레드 동기화에 대한 몇 가지 질문
- 22. 웹 디자인 방법에 대한 몇 가지 질문
- 23. db4o 작업에 대한 몇 가지 질문
- 24. NHibernate의 GuidCombGenerator에 대한 몇 가지 질문
- 25. Facebook Score API에 대한 몇 가지 질문
- 26. 문자열 길이 계산에 대한 몇 가지 질문
- 27. XMPP/Jabber 기능에 대한 몇 가지 질문
- 28. Word 매크로에 대한 몇 가지 질문
- 29. 전화 프로그래밍에서 SQLite에 대한 몇 가지 질문
- 30. 실버 라이트에 대한 몇 가지 질문
remap_pfn_range 메모리에 dma 메모리를 연결하는 올바른 방법을 찾으셨습니까? – Luca