Ich habe eine Situation, in der ich dma_unmap_single
nach dma_sync_single_for_cpu
anrufen muss. Unten ist mein Szenario.Kann ich dma_unmap_single nach dma_sync_single_for_cpu aufrufen?
- Weisen Speicher für einen Puffer
kmalloc()
- den Puffer Vorrichtungskarte
dma_map_single
mitDMA_FROM_DEVICE
Richtung verwendet wird. - Nach Erhalt des Pakets, erhalten Puffer-Besitz unter Verwendung
dma_sync_single_for_cpu
. - Nach einiger Zeit, wenn eine andere Funktion im Kernel mit dem gleichen Puffer verwendet, Unmap-Puffer von Gerät mit
dma_unmap_single
mit Richtung.
Sind alle oben genannten Schritte akzeptabel?
DMA Map-API ist über Adressraum, es kann auch eine Nebenwirkung als Bounce-Puffer haben, wenn IOMMU verwendet wird. Die von Ihnen beschriebenen Schritte sind in Ordnung, solange Sie hinsichtlich des Zugriffs auf diesen Puffer alles serialisiert haben. – 0andriy