[svn-commits] tzafrir: branch tools/2.3 r8624 - in /tools/branches/2.3: ./ xpp/xpp_fxloader

SVN commits to the Digium repositories svn-commits at lists.digium.com
Sat May 15 16:24:25 CDT 2010


Author: tzafrir
Date: Sat May 15 16:24:19 2010
New Revision: 8624

URL: http://svnview.digium.com/svn/dahdi?view=rev&rev=8624
Log:
Load xpp firmware in the background (udev)

Move loading the the xpp firmwares (when called from udev) to a background
sub-process. This helps with:
* Don't block udev
* It seems that with older systems (e.g. CentOS 5) we need to wait a bit
  for the device file to appear (in one of the upcoming udev events). If we
  keep blocking udev, we won't have the device file.

Merged revisions 8580 via svnmerge from 
http://svn.digium.com/svn/dahdi/tools/trunk

Modified:
    tools/branches/2.3/   (props changed)
    tools/branches/2.3/xpp/xpp_fxloader

Propchange: tools/branches/2.3/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat May 15 16:24:19 2010
@@ -1,1 +1,1 @@
-/tools/trunk:8529,8535,8589
+/tools/trunk:8529,8535,8580,8589

Propchange: tools/branches/2.3/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Sat May 15 16:24:19 2010
@@ -1,1 +1,1 @@
-/tools/trunk:1-8509,8528-8529,8535,8589
+/tools/trunk:1-8509,8528-8529,8535,8580,8589

Modified: tools/branches/2.3/xpp/xpp_fxloader
URL: http://svnview.digium.com/svn/dahdi/tools/branches/2.3/xpp/xpp_fxloader?view=diff&rev=8624&r1=8623&r2=8624
==============================================================================
--- tools/branches/2.3/xpp/xpp_fxloader (original)
+++ tools/branches/2.3/xpp/xpp_fxloader Sat May 15 16:24:19 2010
@@ -67,6 +67,7 @@
 FIRMWARE_DIR="${FIRMWARE_DIR:-/usr/share/dahdi}"
 ASTRIBANK_HEXLOAD=${ASTRIBANK_HEXLOAD:-/usr/sbin/astribank_hexload}
 ASTRIBANK_TOOL=${ASTRIBANK_TOOL:-/usr/sbin/astribank_tool}
+XPP_UDEV_SLEEP_TIME="${XPP_UDEV_SLEEP_TIME:-1}"
 
 USB_FW="${USB_FW:-USB_FW.hex}"
 
@@ -313,8 +314,23 @@
 	exit 0
 fi
 
-if [ "$ACTION" = "add" ] && [ -w "$DEVICE" ]
-then
+if [ "$ACTION" != add ]; then
+	exit 0;
+fi
+
+# This procedure is run in the background to do the actual work of loading the
+# firmware. Running it in the background allows udev to continue doing other tasks
+# and thus provide a faster startup.
+#
+# On some systems (e.g. CentOS 5) we get the relevant udev event before the device
+# file is ready. Which is why we want the background process to wait a bit first.
+udev_delayed_load() {
+	# Make sure the new device is writable:
+	sleep "$XPP_UDEV_SLEEP_TIME"
+	if [ ! -w "$DEVICE" ]; then
+		return;
+	fi
+
 	$LOGGER "Trying to find what to do for product $PRODUCT, device $DEVICE"
 	prod_id=`echo "$PRODUCT" | cut -d/ -f2`
 	case "$PRODUCT" in
@@ -333,4 +349,7 @@
 		load_fw_device "$DEVICE" "$FIRM_FPGA"
 		;;
 	esac	
-fi
+}
+
+udev_delayed_load &
+




More information about the svn-commits mailing list