On Thursday 17 May 2007, Pete Zaitcev wrote:
> On Thu, 17 May 2007 14:26:18 -0400 (EDT), Alan Stern <[EMAIL PROTECTED]> 
> wrote:
> 
> > As it happens, USB callbacks cannot be interrupted.  That's a somewhat 
> > artificial restriction; in theory there's no reason we couldn't allow 
> > interrupts.
> 
> Do you remember why we're doing this? I did not touch that part since
> the attempt to keep usb->lock across the callback (read: years back).

HCDs have, for historical reasons, issued URB completions in their IRQ
handlers.

In order to do that correctly -- since completion handlers need to be
able to submit URBs -- that must be done while (a) dropping the HCD's
internal spinlock, but also (b) not re-enabling the HCD's IRQ, and a bit
more subtly (c) ensuring certain HCD-internal state doesn't change until
after the completion returns.

Examples of (c) being the release of some reserved periodic bandwidth,
or cleanup then re-enabling a halted bulk queue.

- Dave

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