2016-06-06 21 views
0

Meine Frage bezieht sich auf die Verwendung der pci_map_single-Funktion. Ich weiß, dass eine DMA-Adresse generiert wird, die das Gerät für die Datenübertragung verwenden kann, aber geschieht jede Änderung in dem Speicher (virtueller Adresszeiger), der als Argument für diese Funktion übergeben wird?Linux pci_map_single funktioniert

+0

Es ist auf einigen Systemen als nicht zwischengespeichert markiert. Wenn das System cachekohärent ist (z. B. x86), ist die Funktion tatsächlich keine Operation. Oh, warte, es adressiert die Übersetzung zum Busaddr, was im Falle von IOMMU eine andere Geschichte wäre. Alles hängt also von der verwendeten Architektur ab. – 0andriy

+0

@andy Bei generischen Anwendungen kann mit welcher Funktion der Speicher als nicht zwischengespeichert markiert werden? – malik12

Antwort

0

Nein, die virtuelle Adresse wird sich nicht ändern. Die virtuelle Adresse wird als Wert übergeben, der nicht als Referenz übergeben wurde.

Bei erfolgreichem Abschluss wird die DMA-Adresse wiederhergestellt.