USB_SET_DEVICE_STATE(9) USB Core APIs USB_SET_DEVICE_STATE(9)NAMEusb_set_device_state - change a device's current state (usbcore, hcds)
SYNOPSIS
void usb_set_device_state(struct usb_device * udev,
enum usb_device_state new_state);
ARGUMENTS
udev
pointer to device whose state should be changed
new_state
new state value to be stored
DESCRIPTION
udev->state is _not_ fully protected by the device lock. Although most
transitions are made only while holding the lock, the state can can
change to USB_STATE_NOTATTACHED at almost any time. This is so that
devices can be marked as disconnected as soon as possible, without
having to wait for any semaphores to be released. As a result, all
changes to any device's state must be protected by the
device_state_lock spinlock.
Once a device has been added to the device tree, all changes to its
state should be made using this routine. The state should _not_ be set
directly.
If udev->state is already USB_STATE_NOTATTACHED then no change is made.
Otherwise udev->state is set to new_state, and if new_state is
USB_STATE_NOTATTACHED then all of udev's descendants' states are also
set to USB_STATE_NOTATTACHED.
COPYRIGHTKernel Hackers Manual 3.8. June 2014 USB_SET_DEVICE_STATE(9)