aboutsummaryrefslogtreecommitdiffstats
path: root/core/busybox-initscripts/usbdev
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2009-06-11 13:25:47 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2009-06-11 13:25:47 +0000
commitb0a83e81230c8a6e83c139307079b33c1cd9441f (patch)
tree20143364d9c11290b536b94783c8104242b872bc /core/busybox-initscripts/usbdev
parentf0ce46793efe6e5386086cc035e8fa1cb81c1b43 (diff)
downloadaports-b0a83e81230c8a6e83c139307079b33c1cd9441f.tar.bz2
aports-b0a83e81230c8a6e83c139307079b33c1cd9441f.tar.xz
core/busybox-initscripts: added klogd script and mdev stuff
we split the syslogd and klogd into different scripts since klog should not be run in vserver while syslog should. the mdev config and helper scripts were moved from alpine-baselayout too
Diffstat (limited to 'core/busybox-initscripts/usbdev')
-rw-r--r--core/busybox-initscripts/usbdev62
1 files changed, 62 insertions, 0 deletions
diff --git a/core/busybox-initscripts/usbdev b/core/busybox-initscripts/usbdev
new file mode 100644
index 0000000000..b1aff296cd
--- /dev/null
+++ b/core/busybox-initscripts/usbdev
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+# script is buggy; until patched just do exit 0
+#exit 0
+
+# add zeros to device or bus
+add_zeros () {
+ case "$(echo $1 | wc -L)" in
+ 1) echo "00$1" ;;
+ 2) echo "0$1" ;;
+ *) echo "$1"
+ esac
+ exit 0
+}
+
+
+# bus and device dirs in /sys
+local USB_PATH=$(echo $MDEV | sed -e 's/usbdev\([0-9]\).[0-9]/usb\1/')
+USB_PATH=$(find /sys/devices -type d -name "$USB_PATH")
+local USB_DEV_DIR=$(echo $MDEV | sed -e 's/usbdev\([0-9]\).\([0-9]\)/\1-\2/')
+
+# dir names in /dev
+local BUS=$(add_zeros $(echo $MDEV | sed -e 's/^usbdev\([0-9]\).[0-9]/\1/'))
+local USB_DEV=$(add_zeros $(echo $MDEV | sed -e 's/^usbdev[0-9].\([0-9]\)/\1/'))
+
+
+# try to load the proper driver for usb devices
+case "$ACTION" in
+ add|"")
+ # load usb bus driver
+ for i in $USB_PATH/*/modalias ; do
+ modprobe `cat $i` 2>/dev/null
+ done
+ # load usb device driver if existent
+ if [ -d $USB_PATH/$USB_DEV_DIR ]; then
+ for i in $USB_PATH/$USB_DEV_DIR/*/modalias ; do
+ modprobe `cat $i` 2>/dev/null
+ done
+ fi
+ # move usb device file
+ mkdir -p bus/usb/$BUS
+ mv $MDEV bus/usb/$BUS/$USB_DEV
+ ;;
+ remove)
+ # unload device driver, if device dir is existent
+ if [ -d $USB_PATH/$USB_DEV_DIR ]; then
+ for i in $USB_PATH/$USB_DEV_DIR/*/modalias ; do
+ modprobe -r `cat $i` 2>/dev/null
+ done
+ fi
+ # unload usb bus driver. Does this make sense?
+ # what happens, if two usb devices are plugged in
+ # and one is removed?
+ for i in $USB_PATH/*/modalias ; do
+ modprobe -r `cat $i` 2>/dev/null
+ done
+ # remove device file and possible empty dirs
+ rm -f bus/usb/$BUS/$USB_DEV
+ rmdir bus/usb/$BUS/ 2>/dev/null
+ rmdir bus/usb/ 2>/dev/null
+ rmdir bus/ 2>/dev/null
+esac