Controlador de protocolo USBD
Finalidad
Da soporte al protocolo de controlador de sistema USB (USBD).
Sintaxis
#include <sys/usb.h>
#include <sys/usbdi.h>
#include <sys/hubClass.h>
#include <sys/hidClass.h>Descripción
El controlador de protocolo USBD es la capa entre el controlador de host y los controladores de cliente. El archivo especial /dev/usb0 proporciona una interfaz para permitir la comunicación entre el controlador de host y los controladores de cliente. Este controlador es responsable de la comunicación del dispositivo al controlador de host adecuado. La conexión de dispositivo, la desconexión y la reconexión se realizan en este nivel. No hay padre para este dispositivo y la entrada CuDv del dispositivo se crea mediante el script /usr/lib/methods/startusb que se invoca desde el campo ConfigRules .
El controlador /usr/lib/drivers/usb/usbd implementa el protocolo USB y el archivo /usr/lib/methods/cfgusb es el método de configuración del archivo usbd . El controlador de protocolo USB actualiza el atributo de velocidad ODM que es específico de cada dispositivo USB individual. La velocidad se actualiza cuando se enumeran los dispositivos USB durante la configuración de AIX® .
Subrutinas dependientes de dispositivos
El controlador de protocolo USBD sólo da soporte a las subrutinas open, closey ioctl . Las subrutinas read y write no están soportadas.
abrir y cerrar subrutinas
La subrutina open asocia un número de dispositivo específico que se pasa como parámetro a la llamada del sistema open con la estructura de dispositivo del adaptador interno. Si encuentra una estructura de adaptador, verifica que el dispositivo de adaptador correspondiente esté configurado y establezca el estado como abierto. De lo contrario, la subrutina devuelve un error.
subrutina ioctl
Las operaciones de ioctl para controladores de protocolo USBD están expuestas a entornos de kernel y de usuario.
Operaciones de ioctl USBD
Las siguientes operaciones de USBD ioctl están expuestas a hebras de kernel que se utilizan para abrir un dispositivo lógico USB específico:
- USBD_OPEN_DEVICE
- USBD_OPEN_DEVICE_EXT
Las siguientes operaciones de USBD ioctl están expuestas a hebras de usuario:
| Operación | Descripción |
|---|---|
| USBD_REGISTER_MULTI_HC | Registra todos los controladores de host USB con controlador de sistema USB. |
| USBD_REGISTER_SINGLE_HC | Registra sólo un único controlador de host USB con controlador de sistema USB. |
| USBD_ENUMERATE_DEVICE | Obtiene una lista de dispositivos lógicos USB (excluidos los concentradores) que están conectados a un controlador de host. |
| USBD_ENUMERATE_ALL | Obtiene una lista de todos los dispositivos lógicos USB que están conectados a un controlador de host. |
| USBD_ENUMERATE_CFG | Obtiene una lista de dispositivos lógicos USB que están conectados a un controlador de host junto con la información de selección de dispositivo de cliente. |
| USBD_GET_DESCRIPTORS | Obtiene descriptores USB estándar para un dispositivo lógico. |
| USBD_CFG_CLIENT_UPDATE | Actualiza la información de conexión del cliente. |
Resumen de las condiciones de error de USBD
Los valores posibles de errno para el controlador de dispositivo de adaptador son los siguientes:
| Valor | Descripción |
|---|---|
| EACCES | Se ha intentado ejecutar una subrutina openx mientras el adaptador tenía uno o más dispositivos en uso. |
| EEXIST | El dispositivo ya está configurado. |
| EINVAL | Un parámetro no válido o que el dispositivo no está abierto. |
| EIO |
|
| ENOCONEC | Se ha producido un error de bus USB. |
| ENDEV | El dispositivo de destino no se puede seleccionar o no responde. |
| ENOMEM | El mandato no se puede completar debido a una cantidad insuficiente de memoria. |
| ENXIO | El adaptador no da soporte a la operación ioctl solicitada. |
| EPERM | El llamante no tiene la autorización necesaria. |