On Sat, Jun 07, Wout Mertens wrote: > Hi Olaf, > > Is the waiting absolutely necessary? > > Could it be shorter? Or could you make it only do that during coldplug > phase? > > The reason I'm asking is because I use my USB memory key to log in, and > that needs to wait 3 seconds (I patch it out of course) for no reason > whatsoever.
You mean you need the sleep 3 or you do not need the sleep 3? And with the current way, a 3 seonds delay will happen anyway, with the patch it will only wait 1 second for the first event. If you are worried about usb.rc, there will be no delay if the events are already finished. I'm not sure if we should wait for all background events before proceeding. A little testing shows that it could take up to 30 seconds, depending on the amound and kind of connected USB devices. Really slow hid devices are a pain... We could improve things alot if /proc/bus/usb/devices had a better design :( It is updated dynamically, reading it can take an unknown amount of time and it triggers bus traffic. You can not do grep -Eq '^I: .* Driver=\(none\)$' /proc/bus/usb/devices Alot bus traffic could be avoided if the content would be static, no poking with usbmodules needed if there is no device without a driver -> no delay needed at all in such a case. There are probably ways in 2.5 to check for devices without drivers in /sys, but I have not verified it. -rw-r--r-- 1 root root 225 2003-06-08 07:26:57.000000000 +0200 /tmp/a -rw-r--r-- 1 root root 3022 2003-06-08 07:27:01.000000000 +0200 /tmp/b -rw-r--r-- 1 root root 980 2003-06-08 07:27:26.000000000 +0200 /tmp/c This was my test patch: # there could be still some active hotplug events # wait for them because other rc scripts may need the drivers + echo /var/run/usb/*.queue.* > /tmp/a sleep 3 & DELAY_PID=$! until [ "`ls /var/run/usb/*.queue.* 2>/dev/null`" = "" ] ; do test -d /proc/$DELAY_PID || break done + echo /var/run/usb/*.queue.* > /tmp/b + ps axf >> /tmp/b + until [ "`ls /var/run/usb/*.queue.* 2>/dev/null`" = "" ] ; do + sleep 1 + done + echo /var/run/usb/*.queue.* > /tmp/c + ps axf >> /tmp/c > > + # there could be still some active hotplug events > > + # wait for them because other rc scripts may need the drivers > > + sleep 3 & DELAY_PID=$! > > + until [ "`ls /var/run/usb/*.queue.* 2>/dev/null`" = "" ] ; do > > + test -d /proc/$DELAY_PID || break > > + done -- USB is for mice, FireWire is for men! ------------------------------------------------------- This SF.net email is sponsored by: Etnus, makers of TotalView, The best thread debugger on the planet. Designed with thread debugging features you've never dreamed of, try TotalView 6 free at www.etnus.com. _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel