나는 PCI 장치 드라이버를 쓰고 있어요 그리고 난 내가이 기능을 사용하고 , DMA에 대한 몇 가지 메모리를 할당해야합니다dma_addr_t를 리눅스 커널의 가상 주소로 변환하려면 어떻게해야합니까?
이void *dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, int flag);
내가 장치에 dma_handle를 전달합니다.
이 함수의 반환 값은 커널에서 사용할 수있는 가상 주소입니다. 실제로 각 메모리 할당에 대해이 주소를 저장하지 않으려합니다.
물리적 주소 dma_handle을 커널에서 사용할 수있는 주소로 변환하는 방법이 있습니까? 이러한 기능/매크로 중 하나와 같은 일 :
virt_to_page(kaddr)
page_to_pfn(page)
phy_to_kvirt 매크로/함수 또는 가상 주소를 커널 실제 주소를 번역 할 수있는 다른 방법이?
감사