On Tue, 8 May 2007, Oliver Neukum wrote:

> Am Dienstag, 8. Mai 2007 20:33 schrieb Alan Stern:
> > > > > +int usb_wait_anchor_empty_timeout(struct usb_anchor *anchor, int 
> > > > > timeout)
> > > > > +{
> > > > > + int res;
> > > > > +
> > > > > + res = wait_event_timeout(anchor->wait, 
> > > > > list_empty(&anchor->urb_list), timeout);
> > > > 
> > > > Maybe make this an interruptible wait?
> > > 
> > > For use in disconnect(), suspend() and pre_reset()? Theses can't handle
> > > signals.
> > 
> > What do you mean?  They don't have to handle signals.  They just have to
> > cut the timeout short when a signal arrives and then kill the outstanding
> > URBs.
> 
> Who would send a signal? If this is called with pending URBs, aren't
> tasks frozen?

disconnect() can be called as a result of a user doing:

        echo -n $device_name >/sys/bus/usb/drivers/$driver_name/unbind

and a signal could occur if the user presses ^C.  suspend() can also be 
called as a result of writing to sysfs.  pre_reset() can be called as 
part of a reset initiated through usbfs.  None of these things require 
tasks to be frozen.

> > Also, you don't want to contribute to the load average while you're 
> > waiting.
> 
> Why? This is a system function.

To tell the truth, I never understand the reason why interruptible waits
don't add to the load average and uninterruptible waits do.  As far as I
can see, a wait should never count as load since the process isn't doing
anything or using CPU time.


> > Is this really correct?  You might end up reporting one user's errors
> > to a different user.  But maybe that's the standard approach; I don't 
> > know...
> 
> We are mixing writes anyway.

Yeah.  Oh well.

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