0
我正在ARM上使用內核3.18。我正在從我正在寫驅動程序的攝像頭讀取數據。 我用下面的設置內存:我在哪裏得到vm_area_struct remap_pfn_range?
cpu_handle = dma_alloc_coherent(NULL, dma_size, &dma_handle, GFP_KERNEL | GFP_DMA);
這是工作得很好。在相機傳送數據後,我使用相同的內核模塊讀出內存,並且可以看到照片。
現在我想啓動一個用戶空間應用程序來讀取相同的數據。 我想要走的路是remap_pfn_range
。
我一直在尋找例子,但是他們從來沒有描述過的一件事是從哪裏獲得vm_area_struct。我假設這必須來自用戶應用程序的權利?對於第一個參數,它說「用戶vma映射到」。那麼我如何得到這個結構的指針呢?
如果你的驅動程序用'dma_alloc_coherent()'分配緩衝區,它應該通過'dma_mmap_coherent()'實現對該緩衝區的'mmap()'請求,而不是直接調用'remap_pfn_range()'。 – Notlikethat
感謝您的提示。 dma_mmap_coherent似乎是這樣做的方式。 – pgibbons