d_unmap_slave-Kernel-Service
Zweck
Gibt Ressourcen frei, die zuvor in einem D_map_slave -Aufruf zugeordnet wurden.
Syntax
#include <sys/dma.h> int d_unmap_slave (*handle)
struct d_handle *handle;Parameter
| Element | Beschreibung |
|---|---|
| Handle | Gibt die vom D_map_init -Kernelservice zurückgegebene eindeutige Kennung an. |
Beschreibung
Der D_unmap_slave -Kernel-Service gibt Ressourcen frei, die zuvor in einem D_map_slave -Aufruf zugeordnet wurden, inaktiviert den physischen DMA-Kanal und gibt nach der DMA-Übertragung Fehler-und Statusinformationen zurück. Der D_unmap_slave -Kernel-Service ist kein exportierter Kernel-Service, sondern eine busspezifische Dienstprogrammroutine, die vom D_map_init -Kernel-Service bestimmt und dem Aufrufenden über die Kennung -Struktur bereitgestellt wird.
Anmerkung: Sie können das Makro D_UNMAP_SLAVE verwenden, das in der Datei /usr/include/sys/dma.h bereitgestellt wird, um Aufrufe des Kernel-Service d_unmap_slave zu codieren. Ist dies nicht der Fall, müssen Sie sicherstellen, dass der Funktionszeiger D_unmap_slave nichtNULL ist, bevor Sie versuchen, den Aufruf auszuführen. Nicht alle Plattformen erfordern den Service zum Aufheben der Zuordnung.
Der Einheitentreiber muss D_unmap_slave aufrufen, wenn die Ein-/Ausgabe mit einer vorherigen Zuordnung durch den D_map_slave -Kernel-Service abgeschlossen ist.
Anmerkung: Der D_unmap_slave -Kernel sollte mit einem vorherigen D_map_slave -Aufruf paarweise verbunden werden. Mehrere ausstehende DMA-Worker-Übertragungen werden nicht unterstützt. Dieser Kernel-Service geht davon aus, dass im betroffenen Kanal kein DMA in Bearbeitung ist, und hebt die Zuordnung des aktuellen Kanals auf.
Rückgabewerte
| Element | Beschreibung |
|---|---|
| DMA_SUMME | Zeigt eine erfolgreiche Übertragung an. Der DMA-Controller hat keine Fehler gemeldet und die Kassenanzahl wurde erreicht. |
| DMA_TC_NOTREACHT | Zeigt eine erfolgreiche Teilübertragung an. Der DMA-Controller hat gemeldet, dass die Anzahl der Terminals für die beabsichtigte Übertragung erreicht wurde, wie durch den Aufruf D_map_slave eingerichtet. Blockeinheiten betrachten dies als erro; bei Einheiten variabler Länge ist dies jedoch möglicherweise kein Fehler. |
| DMA_FEHLER | Gibt an, dass die Übertragung fehlgeschlagen ist. Der DMA-Controller hat einen Fehler gemeldet. Der Einheitentreiber geht davon aus, dass die Übertragung nicht erfolgreich war. |