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
  • Der Befehl ist aufgrund eines festgestellten Fehlers fehlgeschlagen.
  • Der Einheitentreiber konnte den Code nicht pinnen.
  • Ein Kernel-Service ist fehlgeschlagen oder es ist ein nicht behebbarer E/A-Fehler aufgetreten.
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.