ref: 0c1dd5754491b7d59b14a0dc6dbaa95ab3f18c8c
dir: /sys/src/9/boot/nusbrc/
#!/bin/rc
if(! bind -a '#u' /dev)
exit
mkdir -p -m 700 '#σc/usb'
mkdir -p -m 700 '#σc/usbnet'
if(! nusb/usbd)
exit
@{
rfork ne
fn attach {
switch($2$3){
case 0b957720 0b95772a 0db0a877 13b10018 15577720 20013c05 07d13c05 05ac1402
nusb/ether -t a88772 $etherargs $1 &
case 0b951780 14eaab11 17370039 0411006e 050d5055
nusb/ether -t a88178 $etherargs $1 &
case 2001abc1
nusb/ether -t aue $etherargs $1 &
case 0bda8150
nusb/ether -t url $etherargs $1 &
case *
switch($4){
case *03
nusb/kb $1 &
case *02
# CDC ethernet
nusb/ether $etherargs $1 &
case *08
@{
rfork ne
nusb/disk $1
cd '#σ/usb'
for(dev in sdU^$1.*) if(test -d $dev) {
diskparts $dev
for(part in $dev/dos* $dev/9fat) if(test -r $part) {
mkdir -m 0700 '#σc/'^$dev || exit
{dossrv -s -f $part &} <[0=1] |
echo 0 >'#σc/'^$dev/dos
exit
}
}
} &
case *
if(~ $2 0424)
nusb/ether -t smsc $etherargs $1 &
}
}
}
fn detach {
rm -rf '#σc/usb/'^$1.* '#σc/sdU'^$1.* '#σc/usbnet/'^$1.*
}
rc < '#σ/usb/usbevent' &
}
bind -a '#σ/usb' /dev
bind -a '#σ/usbnet' /net