.\" 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.