Add unit2minor() and use it where appropriate so that we handle

units > 255 properly.

Fix usio while I'm there
This commit is contained in:
Brian Somers 2000-08-16 16:42:50 +00:00
parent 584b694b75
commit 2bc268486d

View File

@ -215,6 +215,12 @@ ttyminor()
echo $m echo $m
} }
# Convert a unit number to a minor number.
unit2minor()
{
echo $(((($1 >> 8) << 16) | ($1 % 256)))
}
# Raw partition for disks # Raw partition for disks
dkrawpart=2 dkrawpart=2
@ -623,7 +629,7 @@ pt[0-9]*)
unit=0 unit=0
fi fi
unit=`expr $unit + 1 - 1` unit=`expr $unit + 1 - 1`
mknod ${name}${unit} c $chr $unit mknod ${name}${unit} c $chr `unit2minor $unit`
;; ;;
# SCSI SES/SAF-TE type driver # SCSI SES/SAF-TE type driver
@ -635,7 +641,7 @@ ses[0-9]*)
unit=0 unit=0
fi fi
unit=`expr $unit + 1 - 1` unit=`expr $unit + 1 - 1`
mknod ${name}${unit} c $chr $unit mknod ${name}${unit} c $chr `unit2minor $unit`
;; ;;
# SCSI target mode sample driver # SCSI target mode sample driver
targ[0-9]*) targ[0-9]*)
@ -646,7 +652,7 @@ targ[0-9]*)
unit=0 unit=0
fi fi
unit=`expr $unit + 1 - 1` unit=`expr $unit + 1 - 1`
mknod ${name}${unit} c $chr $unit mknod ${name}${unit} c $chr `unit2minor $unit`
mknod ${name}.ctl c $chr 0xffff00ff mknod ${name}.ctl c $chr 0xffff00ff
;; ;;
@ -663,7 +669,7 @@ xpt*)
while [ $i -lt $units ]; do while [ $i -lt $units ]; do
dname=$name$i dname=$name$i
rm -rf $dname r$dname rm -rf $dname r$dname
mknod $dname c $chr $i root:operator mknod $dname c $chr `unit2minor $i` root:operator
i=$(($i + 1)) i=$(($i + 1))
done done
;; ;;
@ -681,7 +687,7 @@ pass*)
while [ $i -lt $units ]; do while [ $i -lt $units ]; do
dname=$name$i dname=$name$i
rm -rf $dname r$dname rm -rf $dname r$dname
mknod $dname c $chr $i root:operator mknod $dname c $chr `unit2minor $i` root:operator
i=$(($i + 1)) i=$(($i + 1))
done done
;; ;;
@ -892,27 +898,27 @@ wst*)
iic*) iic*)
unit=`expr $i : 'iic\(.*\)'` unit=`expr $i : 'iic\(.*\)'`
mknod iic$unit c 105 $unit mknod iic$unit c 105 `unit2minor $unit`
;; ;;
smb*) smb*)
unit=`expr $i : 'smb\(.*\)'` unit=`expr $i : 'smb\(.*\)'`
mknod smb$unit c 106 $unit mknod smb$unit c 106 `unit2minor $unit`
;; ;;
pcfclock*) pcfclock*)
unit=`expr $i : 'pcfclock\(.*\)'` unit=`expr $i : 'pcfclock\(.*\)'`
mknod pcfclock$unit c 140 $unit mknod pcfclock$unit c 140 `unit2minor $unit`
;; ;;
ppi*) ppi*)
unit=`expr $i : 'ppi\(.*\)'` unit=`expr $i : 'ppi\(.*\)'`
mknod ppi$unit c 82 $unit mknod ppi$unit c 82 `unit2minor $unit`
;; ;;
pps*) pps*)
unit=`expr $i : 'pps\(.*\)'` unit=`expr $i : 'pps\(.*\)'`
mknod pps$unit c 89 $unit mknod pps$unit c 89 `unit2minor $unit`
;; ;;
usb) usb)
@ -922,25 +928,25 @@ usb)
usb*) usb*)
unit=`expr $i : 'usb\(.*\)'` unit=`expr $i : 'usb\(.*\)'`
mknod usb$unit c 108 $unit root:operator mknod usb$unit c 108 `unit2minor $unit` root:operator
chmod 0660 usb$unit chmod 0660 usb$unit
;; ;;
uhid*) uhid*)
unit=`expr $i : 'uhid\(.*\)'` unit=`expr $i : 'uhid\(.*\)'`
mknod uhid$unit c 122 $unit mknod uhid$unit c 122 `unit2minor $unit`
;; ;;
ums*) ums*)
unit=`expr $i : 'ums\(.*\)'` unit=`expr $i : 'ums\(.*\)'`
mknod ums$unit c 111 $unit mknod ums$unit c 111 `unit2minor $unit`
;; ;;
ulpt*) ulpt*)
unit=`expr $i : 'ulpt\(.*\)'` unit=`expr $i : 'ulpt\(.*\)'`
minor=$unit minor=`unit2minor $unit`
mknod ulpt$unit c 113 $minor mknod ulpt$unit c 113 $minor
minor=`expr $unit + 64` minor=`unit2minor \`expr $unit + 64\``
mknod unlpt$unit c 113 $minor # and the 'no prime' version mknod unlpt$unit c 113 $minor # and the 'no prime' version
;; ;;
@ -951,38 +957,39 @@ ugen*)
echo $i - Invalid unit number echo $i - Invalid unit number
fi fi
if [ -z "${endpoint}" ]; then # ugen0 & ugen0.1 - ugen0.15 if [ -z "${endpoint}" ]; then # ugen0 & ugen0.1 - ugen0.15
mknod ugen$unit c 114 $(($unit * 16)) mknod ugen$unit c 114 `unit2minor $(($unit * 16))`
i=1 i=1
while [ $i -lt 16 ]; do while [ $i -lt 16 ]; do
mknod ugen$unit.$i c 114 $(($unit * 16 + $i)) mknod ugen$unit.$i c 114 \
`unit2minor $(($unit * 16 + $i))`
i=$(($i + 1)) i=$(($i + 1))
done done
else else
minor=$(($unit * 16 + $endpoint)) minor=`minor2unit $(($unit * 16 + $endpoint))`
mknod ugen$unit.$endpoint c 114 $minor mknod ugen$unit.$endpoint c 114 $minor
fi fi
;; ;;
urio*) urio*)
unit=`expr $i : 'urio\(.*\)'` unit=`expr $i : 'urio\(.*\)'`
mknod urio$unit c 143 $unit mknod urio$unit c 143 `minor2unit $unit`
;; ;;
usio*) usio*)
unit=`expr $i : 'usio\(.*\)'` unit=`expr $i : 'usio\(.*\)'`
minor=$(($minor + 128)) minor=`unit2minor $(($unit + 128))`
mknod usio$unit c 138 $minor mknod usio$unit c 138 $minor
;; ;;
lpt*) lpt*)
unit=`expr $i : 'lpt\(.*\)'` unit=`expr $i : 'lpt\(.*\)'`
mknod lpt$unit c 16 $unit mknod lpt$unit c 16 `unit2minor $unit`
mknod lpctl$unit c 16 `expr $unit + 128` mknod lpctl$unit c 16 `unit2minor \`expr $unit + 128\``
;; ;;
tw*) tw*)
unit=`expr $i : 'tw\(.*\)'` unit=`expr $i : 'tw\(.*\)'`
mknod tw$unit c 19 $unit root:operator mknod tw$unit c 19 `unit2minor $unit` root:operator
;; ;;
# Use this to create virtual consoles for syscons, pcvt or codrv # Use this to create virtual consoles for syscons, pcvt or codrv
@ -993,7 +1000,7 @@ vty*)
units=`expr $i : 'vty\(.*\)'` units=`expr $i : 'vty\(.*\)'`
i=0 i=0
while [ $i -lt $units ]; do while [ $i -lt $units ]; do
mknod ttyv$(printf %01x $i) c $chr $i mknod ttyv$(printf %01x $i) c $chr `unit2minor $i`
i=$(($i + 1)) i=$(($i + 1))
done done
ln -fs ttyv0 vga # XXX X still needs this pccons relic ln -fs ttyv0 vga # XXX X still needs this pccons relic
@ -1003,7 +1010,7 @@ bpf*)
nbpf=`expr $i : 'bpf\(.*\)$'` nbpf=`expr $i : 'bpf\(.*\)$'`
unit=0 unit=0
while [ $unit -le $nbpf ]; do while [ $unit -le $nbpf ]; do
mknod bpf$unit c 23 $unit mknod bpf$unit c 23 `unit2minor $unit`
unit=$(($unit + 1)) unit=$(($unit + 1))
done done
;; ;;
@ -1296,13 +1303,15 @@ cuaR?)
mse*) mse*)
unit=`expr $i : 'mse\(.*\)'` unit=`expr $i : 'mse\(.*\)'`
chr=27 chr=27
mknod mse$unit c $chr `expr $unit '*' 2 + 1` # non-blocking for X11 # non-blocking for X11
mknod mse$unit c $chr `unit2minor \`expr $unit '*' 2 + 1\``
;; ;;
psm*) psm*)
unit=`expr $i : 'psm\(.*\)'` unit=`expr $i : 'psm\(.*\)'`
chr=21 chr=21
mknod psm$unit c $chr `expr $unit '*' 2 + 1` # non-blocking for X11 # non-blocking for X11
mknod psm$unit c $chr `unit2minor \`expr $unit '*' 2 + 1\``
;; ;;
mouse*) mouse*)
@ -1349,16 +1358,16 @@ snd*)
ln -fs music$unit music ln -fs music$unit music
ln -fs pss$unit pss ln -fs pss$unit pss
mknod mixer$unit c $chr `expr $unit '*' 16 + 0` mknod mixer$unit c $chr `unit2minor \`expr $unit '*' 16 + 0\``
mknod sequencer$unit c $chr `expr $unit '*' 16 + 1` mknod sequencer$unit c $chr `unit2minor \`expr $unit '*' 16 + 1\``
mknod midi$unit c $chr `expr $unit '*' 16 + 2` mknod midi$unit c $chr `unit2minor \`expr $unit '*' 16 + 2\``
mknod dsp$unit c $chr `expr $unit '*' 16 + 3` mknod dsp$unit c $chr `unit2minor \`expr $unit '*' 16 + 3\``
mknod audio$unit c $chr `expr $unit '*' 16 + 4` mknod audio$unit c $chr `unit2minor \`expr $unit '*' 16 + 4\``
mknod dspW$unit c $chr `expr $unit '*' 16 + 5` mknod dspW$unit c $chr `unit2minor \`expr $unit '*' 16 + 5\``
mknod sndstat c $chr 6 mknod sndstat c $chr 6
# minor number 7 is unused # minor number 7 is unused
mknod music$unit c $chr `expr $unit '*' 16 + 8` mknod music$unit c $chr `unit2minor \`expr $unit '*' 16 + 8\``
mknod pss$unit c $chr `expr $unit '*' 16 + 9` mknod pss$unit c $chr `unit2minor \`expr $unit '*' 16 + 9\``
# minor number 10 is unused # minor number 10 is unused
mknod midistat c $chr 11 mknod midistat c $chr 11
# minor numbers 12-15 are unused # minor numbers 12-15 are unused
@ -1372,10 +1381,10 @@ vat)
gsc*) gsc*)
unit=`expr $i : 'gsc\(.*\)'` unit=`expr $i : 'gsc\(.*\)'`
mknod gsc${unit} c 47 $unit mknod gsc${unit} c 47 `unit2minor $unit`
mknod gsc${unit}p c 47 $(($unit + 8)) mknod gsc${unit}p c 47 `unit2minor $(($unit + 8))`
mknod gsc${unit}d c 47 $(($unit + 32)) mknod gsc${unit}d c 47 `unit2minor $(($unit + 32))`
mknod gsc${unit}pd c 47 $(($unit + 40)) mknod gsc${unit}pd c 47 `unit2minor $(($unit + 40))`
chmod 666 gsc${unit}* chmod 666 gsc${unit}*
;; ;;
@ -1392,7 +1401,7 @@ apmctl)
card*) card*)
unit=`expr $i : 'card\(.*\)'` unit=`expr $i : 'card\(.*\)'`
chr=50 chr=50
mknod card$unit c $chr $unit mknod card$unit c $chr `unit2minor $unit`
chmod 644 card$unit chmod 644 card$unit
;; ;;
@ -1427,21 +1436,21 @@ spigot)
ctx?) ctx?)
unit=`expr $i : 'ctx\(.*\)'` unit=`expr $i : 'ctx\(.*\)'`
mknod ctx$unit c 40 $unit mknod ctx$unit c 40 `unit2minor $unit`
chmod 444 ctx$unit chmod 444 ctx$unit
;; ;;
meteor?) meteor?)
unit=`expr $i : 'meteor\(.*\)'` unit=`expr $i : 'meteor\(.*\)'`
mknod meteor$unit c 67 $unit mknod meteor$unit c 67 `unit2minor $unit`
chmod 444 meteor$unit chmod 444 meteor$unit
;; ;;
bktr?) bktr?)
unit=`expr $i : 'bktr\(.*\)'` unit=`expr $i : 'bktr\(.*\)'`
mknod bktr$unit c 92 $unit mknod bktr$unit c 92 `unit2minor $unit`
mknod tuner$unit c 92 $((16 + $unit )) mknod tuner$unit c 92 `unit2minor $((16 + $unit ))`
mknod vbi$unit c 92 $((32 + $unit )) mknod vbi$unit c 92 `unit2minor $((32 + $unit ))`
chmod 444 bktr$unit tuner$unit vbi$unit chmod 444 bktr$unit tuner$unit vbi$unit
;; ;;
@ -1449,7 +1458,7 @@ tun*)
ntun=`expr $i : 'tun\(.*\)$'` ntun=`expr $i : 'tun\(.*\)$'`
unit=0 unit=0
while [ $unit -le $ntun ]; do while [ $unit -le $ntun ]; do
mknod tun$unit c 52 $unit uucp:dialer mknod tun$unit c 52 `unit2minor $unit` uucp:dialer
unit=$(($unit + 1)) unit=$(($unit + 1))
done done
;; ;;
@ -1458,7 +1467,7 @@ tap*)
ntap=`expr $i : 'tap\(.*\)$'` ntap=`expr $i : 'tap\(.*\)$'`
unit=0 unit=0
while [ $unit -le $ntap ]; do while [ $unit -le $ntap ]; do
mknod tap$unit c 149 $unit root:network mknod tap$unit c 149 `unit2minor $unit` root:network
unit=$(($unit + 1)) unit=$(($unit + 1))
done done
;; ;;
@ -1470,7 +1479,7 @@ sysmouse)
snp?) snp?)
unit=`expr $i : 'snp\(.*\)'` unit=`expr $i : 'snp\(.*\)'`
mknod snp$unit c 53 $unit mknod snp$unit c 53 `unit2minor $unit`
;; ;;
# dufault@hda.com: If I do much more work on other A-D boards # dufault@hda.com: If I do much more work on other A-D boards
@ -1533,7 +1542,7 @@ ipl)
kbd*) kbd*)
unit=`expr $i : 'kbd\(.*\)'` unit=`expr $i : 'kbd\(.*\)'`
chr=112 chr=112
mknod kbd$unit c $chr $unit mknod kbd$unit c $chr `unit2minor $unit`
;; ;;
i4b) i4b)
@ -1546,33 +1555,33 @@ i4bctl)
i4brbch*) i4brbch*)
unit=`expr $i : 'i4brbch\(.*\)'` unit=`expr $i : 'i4brbch\(.*\)'`
mknod i4brbch$unit c 57 $unit mknod i4brbch$unit c 57 `unit2minor $unit`
;; ;;
i4bteld*) i4bteld*)
offset=64 offset=64
unit=`expr $i : 'i4bteld\(.*\)'` unit=`expr $i : 'i4bteld\(.*\)'`
mknod i4bteld$unit c 56 `expr $offset + $unit ` mknod i4bteld$unit c 56 `unit2minor \`expr $offset + $unit\``
;; ;;
i4btel*) i4btel*)
unit=`expr $i : 'i4btel\(.*\)'` unit=`expr $i : 'i4btel\(.*\)'`
mknod i4btel$unit c 56 $unit mknod i4btel$unit c 56 `unit2minor $unit`
;; ;;
i4btrc*) i4btrc*)
unit=`expr $i : 'i4btrc\(.*\)'` unit=`expr $i : 'i4btrc\(.*\)'`
mknod i4btrc$unit c 59 $unit mknod i4btrc$unit c 59 `unit2minor $unit`
;; ;;
mlx*) mlx*)
unit=`expr $i : 'mlx\(.*\)'` unit=`expr $i : 'mlx\(.*\)'`
mknod mlx$unit c 130 $unit mknod mlx$unit c 130 `unit2minor $unit`
;; ;;
3dfx*) 3dfx*)
unit=`expr $i : '3dfx\(.*\)'` unit=`expr $i : '3dfx\(.*\)'`
mknod 3dfx$unit c 107 $unit mknod 3dfx$unit c 107 `unit2minor $unit`
ln -sf 3dfx$unit 3dfx ln -sf 3dfx$unit 3dfx
;; ;;
@ -1582,7 +1591,7 @@ agpgart)
twe*) twe*)
unit=`expr $i : 'twe\(.*\)'` unit=`expr $i : 'twe\(.*\)'`
mknod twe$unit c 146 $unit mknod twe$unit c 146 `unit2minor $unit`
;; ;;
local) local)