Địa chỉ DMA có được trả lại từ cuộc gọi này giống với địa chỉ thực không? LDD3 nói địa chỉ DMA nên được xử lý như trình điều khiển mờ đục. Tôi muốn mmap bộ đệm DMA này để người dùng không gian có thể đọc/ghi trực tiếp vào nó. Câu hỏi là những gì PFN tôi nên chỉ định cho remap_pfn_range (mà để ngạc nhiên thú vị của tôi bây giờ (kernel 3.4+) hoạt động cho bộ nhớ thông thường giống như cho bộ nhớ I/O). Tôi có thể chỉ cần đúc địa chỉ DMA để unsigned dài và chuyển đổi đó để PFN? Đây không phải là một sự vi phạm những gì LDD3 nói về sự không rõ ràng?Một số câu hỏi về dma_alloc_coherent
Có
dma_alloc_coherent
luôn sử dụng__get_free_pages
nội bộ? Điều này có nghĩa là khu vực này có khả năng luôn được phân bổ quá mức (vì hàm đầu tiên nhận byte nhưng hàm thứ hai phân bổ theo đơn vị trang)?Có cách nào để thiết lập ánh xạ trực tiếp cho nhiều trang liên tiếp thu được từ cuộc gọi đến
__get_free_pages
không?dma_map_page
chỉ áp dụng cho các trang đơn lẻ.
16
A
Trả lời
11
Không, địa chỉ trở lại là một địa chỉ ảo, nếu không bạn sẽ không thể truy cập nó từ vũ trụ hạt nhân. Đó là dma_handle đại diện cho địa chỉ vật lý, nhưng nó mờ đục. Bạn cần sử dụng virt_to_phys trên địa chỉ mà nó trả về và sau đó chuyển nó đến remap_pfn_range.
Tôi không tin nó (mặc dù có thể phụ thuộc vào nền tảng), nhưng nó phân bổ các trang. Nếu bạn muốn một lượng bộ nhớ nhỏ hơn cho DMA, bạn nên sử dụng dma_pool_create và sau đó phân bổ các vùng từ đó.
Bạn có thể sử dụng dma_map_single thay vì dma_map_page.
Tôi khuyên bạn nên tham khảo ý kiến DMA-API.txt để biết thêm chi tiết về một số nội dung này.
Các vấn đề liên quan
- 1. Câu hỏi về hàm số C#
- 2. Một số câu hỏi về các toán tử bitwise
- 3. Một số câu hỏi về dịch vụ Grails
- 4. Một số câu hỏi về 25 lời khuyên jquery
- 5. Một số câu hỏi về đồng bộ hóa chủ đề
- 6. Một số câu hỏi về các monads trong Haskell
- 7. Một số câu hỏi về OAuth và Android
- 8. câu hỏi về mysql_real_escape_string
- 9. Câu hỏi JSmooth về gói một JRE
- 10. Câu hỏi về giấy phép di chuyển ReSharper Câu hỏi
- 11. Câu hỏi về PHP Ngày
- 12. Câu hỏi chung về Ruby
- 13. Câu hỏi về đại biểu
- 14. Câu hỏi về C bitfields
- 15. Câu hỏi mới về COM
- 16. Một số câu hỏi Python cơ bản
- 17. Câu hỏi về Java tĩnh
- 18. Câu hỏi về JPA Cascading
- 19. Câu hỏi về round_up macro
- 20. Một số câu hỏi C chung
- 21. câu hỏi về phép nhân karatsuba
- 22. Câu hỏi về cấu trúc plugin C#
- 23. Câu hỏi cơ bản về SNMP
- 24. Câu hỏi về dữ liệu bị thiếu
- 25. C# thông số câu hỏi
- 26. Câu hỏi về sản lượng var_dump
- 27. Câu hỏi về set.seed() trong R
- 28. câu hỏi về? và: trong C++
- 29. câu hỏi chung về Java Swing
- 30. Câu hỏi về không gian tên C#
bạn có tìm đúng cách để đính kèm bộ nhớ dma vào bộ nhớ remap_pfn_range không? – Luca