I'm rather accustomed to lists that fill my mailbox until I can't
stand it, so I'm a little surprised how quiet the linux-hotplug
list is. I posted a patch to the hotplug scripts to support hot
remove of USB devices, but I haven't heard praise or protest in a
few days, so I'll present it here before it gets cold.
Basically, what it does is provide a means for hotplug ``add'' scripts
to register a remove handler that will automatically be called if
the device is removed. It shouldn't affect the (already slow) speed
of the add behavior, and really is a small and simple patch.
This patch applies to the CVS version of libux-hotplug as of last
weekend.
--
Steve Williams "The woods are lovely, dark and deep.
[EMAIL PROTECTED] But I have promises to keep,
[EMAIL PROTECTED] and lines to code before I sleep,
http://www.picturel.com And lines to code before I sleep."
Index: etc/hotplug/usb.agent
===================================================================
RCS file: /cvsroot/linux-hotplug/admin/etc/hotplug/usb.agent,v
retrieving revision 1.12
diff -u -r1.12 usb.agent
--- etc/hotplug/usb.agent 2001/04/24 15:07:33 1.12
+++ etc/hotplug/usb.agent 2001/05/23 00:35:47
@@ -18,6 +18,14 @@
# DEVFS=/proc/bus/usb
# DEVICE=/proc/bus/usb/%03d/%03d
#
+# This script then adds the variable:
+#
+# REMOVER=/var/run/usb/<some string unique to $DEVICE>
+#
+# This is the path where the script would like to find a remover, if
+# the target device needs one. This script is executed on remove if
+# it is executable when the remove happens.
+#
# If usbdevfs is mounted on /proc/bus/usb, $DEVICE is a file which
# can be read to get the device's current configuration descriptor.
# (The "usbmodules" utility helps do that.)
@@ -269,6 +277,11 @@
done
}
+#
+# declare a REMOVER name that the add action can use to create a
+# remover, or that the remove action can use to execute a remover.
+#
+declare -rx REMOVER=/var/run/usb/`echo $DEVICE | sed -e 's;/;%;g'`
#
# What to do with this USB hotplug event?
@@ -281,6 +294,10 @@
FOUND=false
LABEL="USB product $PRODUCT"
+ if [ -e "$REMOVER" ]; then
+ rm -f "$REMOVER"
+ fi
+
# on 2.4 systems, modutils 2.4.2+ maintains MAP_CURRENT
# ... otherwise we can't rely on it (sigh)
case "$KERNEL" in
@@ -320,6 +337,13 @@
exit 2
fi
+ ;;
+
+remove)
+ if [ -x $REMOVER ]; then
+ $REMOVER
+ fi
+ rm -f $REMOVER
;;
*)
Index: etc/hotplug/usb.rc
===================================================================
RCS file: /cvsroot/linux-hotplug/admin/etc/hotplug/usb.rc,v
retrieving revision 1.8
diff -u -r1.8 usb.rc
--- etc/hotplug/usb.rc 2001/03/22 04:52:56 1.8
+++ etc/hotplug/usb.rc 2001/05/23 00:35:47
@@ -134,6 +134,11 @@
return 1
fi
+ # Create a directory to hold remover programs. Close it up so
+ # that only hotplug scripts can write to this directory.
+ mkdir /var/run/usb
+ chmod 0700 /var/run/usb
+
# hotplug events didn't fire during booting;
# cope with devices that enumerated earlier
# and may not have been fully configured.
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
http://lists.sourceforge.net/lists/listinfo/linux-usb-devel