USB_CLIENT_ATTACH(9F) | Kernel Functions for Drivers | USB_CLIENT_ATTACH(9F) |
usb_client_attach, usb_client_detach - USBA framework registration of client USB drivers
#define USBDRV_MAJOR_VER <major> #define USBDRV_MINOR_VER <minor> #include <sys/usb/usba.h> int usb_client_attach(dev_info_t *dip,
uint_t version, usb_flags_t flags);
void usb_client_detach(dev_info_t *dip,
usb_client_dev_data_t *dev_data);
illumos DDI specific (illumos DDI)
For usb_client_attach():
dip
version
flags
For usb_client_detach():
dip
dev_data
The usb_client_attach() function registers a driver with the USBA framework and must be called before any other USBA function. Usually, usb_client_attach() is followed by a call to usb_get_dev_data(9F).
The usb_client_detach() function unregisters a driver with the USBA framework. The usb_client_detach() function releases memory for all strings, descriptors and trees set up by usb_get_dev_data(9F) when its dev_data argument is non-NULL. The usb_client_detach() function is the last USBA function a client calls before completing detach(9E). It is not necessary to call usb_client_detach() during a suspend operation.
USBDRV_VERSION is a macro which creates a version number based on the USBDRV_MAJOR_VER and USBDRV_MINOR_VER definitions. It must be passed as the version argument.
For drivers version 2.0 or greater, the value of USBDRV_MAJOR_VERSION must match its corresponding USBA_MAJOR_VER value in <sys/usb/usbai.h>, and the value of USBDRV_MINOR_VERSION must not be greater than its corresponding USBA_MINOR_VER value also in <sys/usb/usbai.h>.
Version 0.8 drivers from previous releases are binary compatible and run on illumos, but are not compilable.
Definitions of USBDRV_MAJOR_VERSION and USBDRV_MINOR_VERSION must appear in the client driver above the reference to <sys/usb/usba.h>. Note that different releases have different USBA_[MAJOR|MINOR]_VER numbers.
For usb_client_attach():
USB_SUCCESS
USB_INVALID_ARGS
USB_INVALID_CONTEXT
USB_INVALID_VERSION
USB_FAILURE
For usb_client_detach():
USB_INVALID_ARGS
USB_INVALID_CONTEXT
The usb_client_attach() function may only be called from attach(9E).
The usb_client_detach() function may be called only from attach(9E) or detach(9E).
if (usb_client_attach(dip, USBDRV_VERSION, 0) != USB_SUCCESS) {
cmn_err (CE_WARN, "%s%d: Couldn't register USB device",
ddi_driver_name(dip), ddi_get_instance(dip));
return (USB_FAILURE);
}
if (usb_get_dev_data(dip, &dev_data, USB_PARSE_LVL_IF, 0) !=
USB_SUCCESS) {
cmn_err (CE_WARN, "%s%d: Couldn't get device descriptor data.",
ddi_driver_name(dip), ddi_get_instance(dip));
return (USB_FAILURE);
}
See attributes(7) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
Architecture | PCI-based systems |
Interface stability | Committed |
October 30, 2016 | OmniOS |