.\" 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_KILL_URB" "9" "09 October 2005" "" ""
.SH NAME
usb_kill_urb \- cancel a transfer request and wait for it to finish
.SH SYNOPSIS
"SYNOPSIS"
.sp
\fB
.sp
void usb_kill_urb (struct urb * \fIurb\fB);
\fR
.SH "ARGUMENTS"
.TP
\fB\fIurb\fB\fR
pointer to URB describing a previously submitted request,
may be NULL
.SH "DESCRIPTION"
.PP
This routine cancels an in-progress request. It is guaranteed that
upon return all completion handlers will have finished and the URB
will be totally idle and available for reuse. These features make
this an ideal way to stop I/O in a \fBdisconnect\fR callback or \fBclose\fR
function. If the request has not already finished or been unlinked
the completion handler will see urb->status == -ENOENT.
.PP
While the routine is running, attempts to resubmit the URB will fail
with error -EPERM. Thus even if the URB's completion handler always
tries to resubmit, it will not succeed and the URB will become idle.
.PP
This routine may not be used in an interrupt context (such as a bottom
half or a completion handler), or when holding a spinlock, or in other
situations where the caller can't \fBschedule\fR\&.