2015-11-19 17 views
5

Tôi đang viết một mô-đun hạt nhân sẽ phân bổ một số bộ nhớ mạch lạc và trả về các địa chỉ ảo và vật lý tương ứng.Cách lấy thiết bị từ cdev

Tôi đang đăng ký mô-đun dưới dạng cdev, phân bổ không gian bằng dma_alloc_coherent() và tôi muốn mmap nó bằng cách sử dụng dma_common_mmap().

dma_common_mmap() yêu cầu con trỏ đến struct device: làm cách nào tôi có thể lấy nó?

Trả lời

0
void *dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, int flag); 

Chức năng này xử lý cả phân bổ và ánh xạ bộ đệm. Hai đối số đầu tiên là cấu trúc thiết bị và kích thước của bộ đệm cần thiết. Hàm trả về kết quả của ánh xạ DMA ở hai nơi. Giá trị trả về từ hàm là một địa chỉ ảo hạt nhân cho bộ đệm, có thể được trình điều khiển sử dụng. Địa chỉ xe buýt liên quan, trong khi đó, được trả lại trong dma_handle.

+0

Bạn đã bao giờ quản lý để có được dma_alloc_coherent và mmap để hoạt động. Tôi không thể làm việc này. Tôi phải viết các chức năng đọc/ghi của riêng mình. – user1876942

Các vấn đề liên quan