.\" This manpage has been automatically generated by docbook2man .\" from a DocBook document. This tool can be found at: .\" .\" Please send any bug reports, improvements, comments, patches, .\" etc. to Steve Cheng . .TH "USB_SET_DEVICE_STATE" "9" "09 October 2005" "" "" .SH NAME usb_set_device_state \- change a device's current state (usbcore, hcds) .SH SYNOPSIS "SYNOPSIS" .sp \fB .sp void usb_set_device_state (struct usb_device * \fIudev\fB, enum usb_device_state \fInew_state\fB); \fR .SH "ARGUMENTS" .TP \fB\fIudev\fB\fR pointer to device whose state should be changed .TP \fB\fInew_state\fB\fR new state value to be stored .SH "DESCRIPTION" .PP 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. .PP 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. .PP 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.