Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

usb_register_hotplug_cbs(9f) [sunos man page]

usb_register_hotplug_cbs(9F)				   Kernel Functions for Drivers 			      usb_register_hotplug_cbs(9F)

NAME
usb_register_hotplug_cbs, usb_unregister_hotplug_cbs - Register/unregister for notification of device hotplug events SYNOPSIS
#include <sys/usb/usba.h> int usb_register_hotplug_cbs(dev_info_t *dip, int (*disconnection_event_handler)(dev_info_t *dip, int (*reconnection_event_han- dler)(dev_info_t *dip); void usb_unregister_hotplug_cbs(dev_info_t *dip); INTERFACE LEVEL
Solaris DDI specific (Solaris DDI) PARAMETERS
For usb_register_hotplug_cbs() dip Pointer to the device's dev_info structure. disconnection_event_handler Called when device is disconnected. This handler takes a dev_info_t as an argument (representing the device being disconnected) and always returns USB_SUCCESS. reconnection_event_handler Called when device is reconnected. This handler takes a dev_info_t as an argument (representing the device being reconnected) and always returns USB_SUCCESS. For usb_unregister_hotplug_cbs(): dip Pointer to the device's dev_info structure. DESCRIPTION
The usb_register_hotplug_cbs() function registers callbacks to be executed when the USB device represented by dip is hotplugged or removed. The usb_unregister_hotplug_cbs() function unregisters or disengages callbacks from executing when the USB device represented by dip is hot- plugged or removed. RETURN VALUES
For usb_register_hotplug_cbs(): USB_SUCCESS Callbacks were successfully registered. USB_FAILURE One or more arguments were NULL. Callbacks could not be successfully registered. For usb_unregister_hotplug_cbs(): None CONTEXT
The usb_register_hotplug_cbs() function may be called only from attach(9E). The usb_unregister_hotplug_cbs() function may be called only from detach(9E). Registered callback handlers requiring the use of any DDI (section 9F) function (except ddi_taskq_* functions), should launch a separate thread using ddi_taskq_* routines for processing their event, to avoid deadlocks. The new thread can then safely call any DDI function it needs to handle the event. The registered callback handlers execute in kernel context. EXAMPLES
int remove_device(dev_info_t *) { ... ... return (USB_SUCCESS); } int accommodate_device(dev_info_t *) { ... ... return (USB_SUCCESS); } if (usb_register_hotplug_cbs( dip, remove_device, accommodate_device) == USB_FAILURE) { cmn_err (CE_WARN, "%s%d: Could not register hotplug handlers.", ddi_driver_name(dip), ddi_get_instance(dip)); } ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Architecture |PCI-based systems | +-----------------------------+-----------------------------+ |Interface stability |Evolving | +-----------------------------+-----------------------------+ |Availability |SUNWusb | +-----------------------------+-----------------------------+ SEE ALSO
attributes(5), attach(9E), detach(9E), usb_get_status(9F) SunOS 5.10 17 Aug 2004 usb_register_hotplug_cbs(9F)

Check Out this Related Man Page

usb_client_attach(9F)					   Kernel Functions for Drivers 				     usb_client_attach(9F)

NAME
usb_client_attach, usb_client_detach - USBA framework registration of client USB drivers SYNOPSIS
#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); INTERFACE LEVEL
Solaris DDI specific (Solaris DDI) PARAMETERS
For usb_client_attach(): dip Pointer to the device's dev_info structure. version Must be set to USBDRV_VERSION. (See below.) flags Not used. For usb_client_detach(): dip Pointer to the device's dev_info structure. dev_data Pointer to a usb_client_dev_data_t to free. Can be NULL. DESCRIPTION
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 opera- tion. VERSIONING 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 Solaris 10, but are not compilable. Version 0.8 binary compati- bility will not be supported in subsequent Solaris OS releases. 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. RETURN VALUES
For usb_client_attach(): USB_SUCCESS Registration is successful. USB_INVALID_ARGS dip is NULL. USB_INVALID_CONTEXT Called from interrupt context. Not called from an attach routine context. USB_INVALID_VERSION Version passed in version is invalid. USB_FAILURE Other internal error. For usb_client_detach(): USB_INVALID_ARGS dip is NULL. USB_INVALID_CONTEXT Not called from an attach routine context. 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). EXAMPLES
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); } ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Architecture |PCI-based systems | +-----------------------------+-----------------------------+ |Interface stability |Evolving | +-----------------------------+-----------------------------+ |Availability |SUNWusb | +-----------------------------+-----------------------------+ SEE ALSO
attributes(5), attach(9E), detach(9E), usb_get_dev_data(9F) SunOS 5.10 5 Jan 2004 usb_client_attach(9F)
Man Page