Provided by: linux-doc-2.6.15_2.6.15-23.39_all bug

NAME

       usb_kill_urb - cancel a transfer request and wait for it to finish

SYNOPSIS

       void usb_kill_urb  (struct urb * urb);

ARGUMENTS

       urb    pointer to URB describing a previously submitted request, may be
              NULL

DESCRIPTION

       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 disconnect callback or close function. If the
       request has not  already  finished  or  been  unlinked  the  completion
       handler will see urb->status == -ENOENT.

       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.

       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 schedule.