On Thu, 7 Jun 2007, Curran, Dominic wrote:

> 
> In Documentation/usb/error-codes.txt it says:
> 
> -ENOENT                 URB was synchronously unlinked by usb_unlink_urb

This line is mistaken; it should say "unlinked by usb_kill_urb".

> -ECONNRESET             URB was asynchronously unlinked by
> usb_unlink_urb
> 
> What is the difference between a synchronously and an asynchronously
> unlink ?

With usb_unlink_urb, the subroutine call returns almost immediately but
the URB isn't fully unlinked until some time later, when its completion
handler runs.

With usb_kill_urb, you are guaranteed that the URB will be fully
unlinked and the completion handler will have run before the subroutine
call returns.

> My understanding from the answer to a previous question is that if you
> have the situation where 2 URBS are sent to the HCD:
> 1) URB  4K   URB_SHORT_NOT_OK
> 2) URB  8K   URB_SHORT_NOT_OK
> 
> If then only 1K of data is sent back from the Device (short packet) then
> the HCD would complete the 4K URB with:
>   actual_length=1024
>   status = -EREMOTEIO
> 
> The client driver should then call usb_unlink_urb() for the 8K URB which
> would then complete this URB with:
>   status = -ECONNRESET
> 
> So I assume that would be an example of an asynchronously
> unlink...although I'm not entirely sure I understand whats
> 'asynchronous' about it. 

It's asynchronous in the sense that the subroutine call doesn't wait
for the unlink to finish.  It _can't_ wait, because the caller (the
completion handler) runs in an interrupt context.

The timing of the subroutine call and the timing of the unlink aren't
synchronized -- hence they are "asynchronous".

> I don't think I understand what 'synchronous ' & 'asynchronous' mean in
> this context.

In general, "synchronous" means roughly "at the same time" or
"synchronized with".  A call is synchronous if all its actions have
finished by the time the call returns.  "Asynchronous" is the opposite
-- some of the actions may not have finished when the call returns.

Alan Stern


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to