diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2009-06-11 13:25:47 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2009-06-11 13:25:47 +0000 |
commit | b0a83e81230c8a6e83c139307079b33c1cd9441f (patch) | |
tree | 20143364d9c11290b536b94783c8104242b872bc /core/busybox-initscripts/usbdev | |
parent | f0ce46793efe6e5386086cc035e8fa1cb81c1b43 (diff) | |
download | aports-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/usbdev | 62 |
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 |