summaryrefslogtreecommitdiffstats
path: root/etc/MAKEDEV
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>1994-12-16 15:59:44 +0000
committerbde <bde@FreeBSD.org>1994-12-16 15:59:44 +0000
commit4b9c4e466a1b0c6bc1b1fa5f0684ae1c0c7462d0 (patch)
tree94062a4c5ccb738c31cbd787ee60ae2bc429c333 /etc/MAKEDEV
parent353b6fc6d3b55f9b568fb3b1eea53d8d590479da (diff)
downloadFreeBSD-src-4b9c4e466a1b0c6bc1b1fa5f0684ae1c0c7462d0.zip
FreeBSD-src-4b9c4e466a1b0c6bc1b1fa5f0684ae1c0c7462d0.tar.gz
Add support for sliced disk devices ssd*, svn*, swd*. The `s' at the start
of these names is so that they can be distinguished in MAKEDEV until the non-sliced devices go away.
Diffstat (limited to 'etc/MAKEDEV')
-rw-r--r--etc/MAKEDEV67
1 files changed, 66 insertions, 1 deletions
diff --git a/etc/MAKEDEV b/etc/MAKEDEV
index fda819c..71fff62 100644
--- a/etc/MAKEDEV
+++ b/etc/MAKEDEV
@@ -70,12 +70,29 @@
# socksys iBCS2 socket system driver
# vat VAT compatibility audio driver (requires snd*)
#
-# $Id: MAKEDEV,v 1.58 1994/12/06 23:06:10 ache Exp $
+# $Id: MAKEDEV,v 1.59 1994/12/08 00:44:55 ache Exp $
#
PATH=/sbin:/bin/:/usr/bin:/usr/sbin:
umask 77
+# Convert integer to partition number
+dkitop() {
+ local p
+
+ case $1 in
+ 0) p=a;; 1) p=b;; 2) p=c;; 3) p=d;; 4) p=e;; 5) p=f;; 6) p=g;; 7) p=h;;
+ default) p="?";;
+ esac
+ echo $p
+}
+
+# Convert disk (type, unit, slice, partition) to minor number
+dkminor()
+{
+ echo $((32 * 65536 * $1 + 8 * $2 + 65536 * $3 + $4))
+}
+
# Convert the last character of a tty name to a minor number.
ttyminor()
{
@@ -90,6 +107,12 @@ ttyminor()
echo $m
}
+# Raw partition for disks
+dkrawpart=2
+
+# Raw slice for disks
+dkrawslice=0
+
for i
do
case $i in
@@ -314,6 +337,48 @@ sd*|vn*|wd*)
umask 77
;;
+# Sliced disks.
+ssd*|svn*|swd*)
+ umask 37
+ case $i in
+ ssd*) name=sd; blk=4; chr=13;;
+ swd*) name=wd; blk=0; chr=3;;
+ svn*) name=vn; blk=15; chr=43;;
+ esac
+ unit=`expr $i : '...\(.*\)'`
+ rm -f $name$unit* r$name$unit*
+ case $unit in
+ 0|1|2|3|4|5|6)
+ # Whole disk is on (non-)slice 0, (non-)partition C.
+ minor=`dkminor 0 $unit $dkrawslice $dkrawpart`
+ mknod ${name}${unit} b $blk $minor
+ mknod r${name}${unit} c $chr $minor
+ for slice in 1 2 3 4
+ do
+ for part in 0 1 2 3 4 5 6 7
+ do
+ minor=`dkminor 0 $unit $slice $part`
+ partname=`dkitop $part`
+ mknod ${name}${unit}s${slice}${partname} \
+ b $blk $minor
+ mknod r${name}${unit}s${slice}${partname} \
+ c $chr $minor
+ done
+ partname=`dkitop $dkrawpart`
+ ln ${name}${unit}s${slice}${partname} \
+ ${name}${unit}s${slice}
+ ln r${name}${unit}s${slice}${partname} \
+ r${name}${unit}s${slice}
+ done
+ chgrp operator ${name}${unit}* r${name}${unit}*
+ ;;
+ *)
+ echo bad unit for disk in: $i
+ ;;
+ esac
+ umask 77
+ ;;
+
uk*)
unit=`expr $i : 'uk\(.*\)'`
rm -f uk$unit
OpenPOWER on IntegriCloud