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
  • El mandato ha fallado debido a un error detectado.
  • El controlador de dispositivo no ha podido fijar el código.
  • Ha fallado un servicio de kernel o se ha producido un error de E/S irrecuperable.
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.