> > It would be great if we could eleminate the need for handling unlinking
> > during completion at all. Is there a reason you cannot make them mutually
> > exclusive? IMHO it should be possible to do that if you make it a
> > requirement to call giveback with handler_lock held.
>
> Sure, that could be done.  Or even easier, hcd_unlink_urb() could just
> grab handler_lock and hold it all the way up until the call to
> wait_for_completion().  That would eliminate the need for the
> err_out_waiting part.

It's not so simple. hcd_unlink_urb makes calls down into the hcds which
can block.

> But I don't see this as much of a simplification.  We would still need the
> handler_lock spinlock.  We would still need to track the urb's internal
> state in order to prevent resubmitting unlinked urbs, double unlinking,
> and double submitting.  In short, it would only amount to a very slight
> change from what I sent you before.

It would keep the API completely unchanged, which is a huge advantage.
We'd make sure that you either can still unlink the "old" urb, or you are ready
to unlink the "new" urb.

> Also, it's not an improvement performance-wise.  It would mean that an
> unlink during the completion handler would have to spin and then actively
> cancel a resubmitted urb rather than just prevent it from being
> resubmitted in the first place.

These are unlikely cases of a relatively rarely used API call.
Speed does not matter. If you are concerned with speed, concentrate
on usb_submit_urb() and giveback.

> More worrisome, in my opinion, is the change in the API requirements.
> Besides the obvious one about not resubmitting unlinked urbs, there is a
> more subtle requirement:  With handler_lock acquired during the completion
> handler, it's no longer legal for the handler to free the urb.  Hmmm,

Not true. Reference counting makes this case safe.

> maybe I should call usb_get_urb() just before the handler and
> usb_free_urb() just after.

Would not hurt.

        Regards
                Oliver



-------------------------------------------------------
This SF.net email is sponsored by: Scholarships for Techies!
Can't afford IT training? All 2003 ictp students receive scholarships.
Get hands-on training in Microsoft, Cisco, Sun, Linux/UNIX, and more.
www.ictp.com/training/sourceforge.asp
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to