USBD-Protokolltreiber
Zweck
Unterstützt das Protokoll des USB-Systemtreibers (USBD).
Syntax
#include <sys/usb.h>
#include <sys/usbdi.h>
#include <sys/hubClass.h>
#include <sys/hidClass.h>Beschreibung
Der USBD-Protokolltreiber ist die Schicht zwischen dem Host-Controller und den Client-Treibern. Die Gerätedatei /dev/usb0 stellt eine Schnittstelle für die Kommunikation zwischen dem Host-Controller und den Clienttreibern bereit. Dieser Treiber ist für die Einheitenkommunikation mit dem entsprechenden Host-Controller verantwortlich. Die Geräteverbindung, die Trennung und die erneute Verbindung werden auf dieser Ebene ausgeführt. Es gibt kein übergeordnetes Element für diese Einheit und der Eintrag CuDv der Einheit wird durch das Script /usr/lib/methods/startusb erstellt, das über das Feld ConfigRules aufgerufen wird.
Der /usr/lib/drivers/usb/usbd -Treiber implementiert das USB-Protokoll und die Datei /usr/lib/methods/cfgusb ist die Konfigurationsmethode der Datei usbd . Der USB-Protokolltreiber aktualisiert das ODM -Geschwindigkeitsattribut, das für jede einzelne USB-Einheit spezifisch ist. Die Geschwindigkeit wird aktualisiert, wenn die USB-Einheiten während der AIX® -Konfiguration aufgelistet werden.
Einheitenabhängige Subroutinen
Der USBD-Protokolltreiber unterstützt nur die Subroutinen open, closeund ioctl . Die Subroutinen read und write werden nicht unterstützt.
Subroutinen öffnen und schließen
Die Subroutine open ordnet der internen Adaptereinheitenstruktur eine bestimmte Einheitennummer zu, die als Parameter an den open -Systemaufruf übergeben wird. Wenn er eine Adapterstruktur findet, prüft er, ob die entsprechende Adaptereinheit konfiguriert ist, und legt den Status als offen fest. Andernfalls gibt die Subroutine einen Fehler zurück.
ioctl, Subroutine
Die ioctl -Operationen für USBD-Protokolltreiber sind für Kernel-und Benutzerumgebungen verfügbar.
USBD-ioctl-Operationen
Die folgenden USBD ioctl -Operationen sind Kernel-Threads verfügbar, die zum Öffnen einer bestimmten logischen USB-Einheit verwendet werden:
- USBD_OPEN_DEVICE
- USBD_OPEN_DEVICE_EXT
Die folgenden USBD ioctl -Operationen sind für Benutzerthreads verfügbar:
| Operation | Beschreibung |
|---|---|
| USBD_REGISTER_MULTI_HC | Registriert alle USB-Host-Controller mit USB-Systemtreiber. |
| USBD_REGISTER_SINGLE_HC | Registriert nur einen einzelnen USB-Host-Controller mit USB-Systemtreiber. |
| USBD_ENUMERATE_EINHEIT | Ruft eine Liste der logischen USB-Einheiten (ohne Hubs) ab, die mit einem Host-Controller verbunden sind. |
| USBD_ENUMERATE_ALL | Ruft eine Liste aller logischen USB-Einheiten ab, die mit einem Host-Controller verbunden sind. |
| USBD_ENUMERATE_CFG | Ruft eine Liste der logischen USB-Einheiten, die mit einem Host-Controller verbunden sind, zusammen mit den Informationen zur Clienteinheitenauswahl ab. |
| USBD_GET_BESCHREIBUNGSORS | Ruft USB-Standarddeskriptoren für eine logische Einheit ab. |
| USBD_CFG_CLIENT_UPDATE | Aktualisiert Clientverbindungsinformationen. |
Zusammenfassung der USBD-Fehlerbedingungen
Folgende Fehlernummer -Werte sind für den Adaptereinheitentreiber möglich:
| Wert | Beschreibung |
|---|---|
| EACCES | Es wurde versucht, eine openx -Subroutine auszuführen, während der Adapter eine oder mehrere Einheiten im Gebrauch hatte. |
| EEXIST | Die Einheit ist bereits konfiguriert. |
| EINVAL | Ein ungültiger Parameter oder die Einheit ist nicht geöffnet. |
| EIO |
|
| ENOCONNECT | Ein USB-Busfehler ist aufgetreten. |
| ENODEW | Die Zieleinheit kann nicht ausgewählt werden oder antwortet nicht. |
| ENOMEM | Der Befehl kann aufgrund einer unzureichenden Speicherkapazität nicht ausgeführt werden. |
| ENXIO | Die angeforderte ioctl-Operation wird von diesem Adapter nicht unterstützt. |
| EPERM | Der Aufrufende verfügt nicht über die erforderliche Berechtigung. |