]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/dev/i386/conf.c
xnu-344.tar.gz
[apple/xnu.git] / bsd / dev / i386 / conf.c
index dfc84d2097ddfcc6975f85f95477af06d4db7c2d..f06b30fc6a0d02584c8f93b4e105af763d058008 100644 (file)
@@ -254,17 +254,19 @@ isdisk(dev, type)
        dev_t dev;
        int type;
 {
-       switch (major(dev)) {
-       case 1: /* fd: floppy */
-       case 6: /* sd: scsi disk */
-       case 3: /* ide:  */
-               if (type == VBLK)
-                       return(1);
-               break;
-       case 14:         /* sd: scsi disk */
-       case 41: /* fd: floppy */
-               if (type == VCHR)
-                       return(1);
+       dev_t   maj = major(dev);
+
+       switch (type) {
+       case VCHR:
+               maj = chrtoblk(maj);
+               if (maj == NODEV) {
+                       break;
+               }
+               /* FALL THROUGH */
+       case VBLK:
+               if (bdevsw[maj].d_type == D_DISK) {
+                       return (1);
+               }
                break;
        }
        return(0);
@@ -314,6 +316,17 @@ chrtoblk(dev)
        return(makedev(blkmaj, minor(dev)));
 }
 
+int
+chrtoblk_set(int cdev, int bdev)
+{
+       if (cdev >= nchrdev)
+               return (-1);
+       if (bdev != NODEV && bdev >= nblkdev)
+               return (-1);
+       chrtoblktab[cdev] = bdev;
+       return 0;
+}
+
 /*
  * Returns true if dev is /dev/mem or /dev/kmem.
  */