<?xml version="1.0" encoding="ANSI_X3.4-1968" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968" /><title>usb_kill_urb</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="index.html" title="The Linux-USB Host Side API" /><link rel="up" href="ch05.html" title="Chapter 5. USB Core APIs" /><link rel="prev" href="re48.html" title="usb_unlink_urb" /><link rel="next" href="re50.html" title="usb_poison_urb" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span>usb_kill_urb</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="re48.html">Prev</a> </td><th width="60%" align="center">Chapter 5. USB Core APIs</th><td width="20%" align="right"> <a accesskey="n" href="re50.html">Next</a></td></tr></table><hr /></div><div class="refentry" title="usb_kill_urb"><a id="API-usb-kill-urb"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>usb_kill_urb — cancel a transfer request and wait for it to finish </p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">usb_kill_urb </b>(</code></td><td>struct urb * <var class="pdparam">urb</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Arguments"><a id="id2744669"></a><h2>Arguments</h2><div class="variablelist"><dl><dt><span class="term"><em class="parameter"><code>urb</code></em></span></dt><dd><p> pointer to URB describing a previously submitted request, may be NULL </p></dd></dl></div></div><div class="refsect1" title="Description"><a id="id2744696"></a><h2>Description</h2><p> 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 <code class="function">disconnect</code> callback or <code class="function">close</code> function. If the request has not already finished or been unlinked the completion handler will see urb->status == -ENOENT. </p><p> 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. </p><p> 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 <code class="function">schedule</code>. </p><p> This routine should not be called by a driver after its disconnect method has returned. </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="re48.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch05.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="re50.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span>usb_unlink_urb</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> <span>usb_poison_urb</span></td></tr></table></div></body></html>