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

Reply via email to