2015-11-19 19 views
5

Piszę moduł jądra, który przydzieli trochę spójnej pamięci i zwróci odpowiednie wirtualne i fizyczne adresy.Jak zdobyć urządzenie z cdev

Rejestruję moduł jako cdev, przydzielając przestrzeń z dma_alloc_coherent() i chciałem go zminimalizować używając dma_common_mmap().

dma_common_mmap() wymaga wskaźnika do struct device: jak mogę go uzyskać?

Odpowiedz

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

Ta funkcja obsługuje zarówno przydział, jak i odwzorowanie bufora. Pierwsze dwa argumenty to struktura urządzenia i rozmiar wymaganego bufora. Funkcja zwraca wynik mapowania DMA w dwóch miejscach. Zwracaną wartością funkcji jest wirtualny adres jądra dla bufora, który może być użyty przez sterownik. Tymczasem powiązany adres magistrali jest zwracany w dma_handle.

+0

Czy zdołałeś kiedyś uzyskać interfejs dma_alloc_coherent i mmap do pracy. Nie mogę tego zrobić. Musiałem napisać własne funkcje odczytu/zapisu. – user1876942

Powiązane problemy