Lines Matching refs:dev

94 #define	BD(dev)		(bdinfo[(dev)->d_unit])
96 static int bd_read(struct disk_devdesc *dev, daddr_t dblk, int blks,
98 static int bd_write(struct disk_devdesc *dev, daddr_t dblk, int blks,
287 struct disk_devdesc dev;
301 dev.d_dev = &biosdisk;
302 dev.d_unit = i;
303 dev.d_slice = -1;
304 dev.d_partition = -1;
305 if (disk_open(&dev,
311 ret = disk_print(&dev, line, verbose);
312 disk_close(&dev);
321 * Attempt to open the disk described by (dev) for use by (f).
333 struct disk_devdesc *dev;
337 dev = va_arg(ap, struct disk_devdesc *);
340 if (dev->d_unit < 0 || dev->d_unit >= nbdinfo)
342 BD(dev).bd_open++;
343 if (BD(dev).bd_bcache == NULL)
344 BD(dev).bd_bcache = bcache_allocate();
345 return (disk_open(dev, BD(dev).bd_sectors * BD(dev).bd_sectorsize,
346 BD(dev).bd_sectorsize, (BD(dev).bd_flags & BD_FLOPPY) ?
353 struct disk_devdesc *dev;
355 dev = (struct disk_devdesc *)f->f_devdata;
356 BD(dev).bd_open--;
357 if (BD(dev).bd_open == 0) {
358 bcache_free(BD(dev).bd_bcache);
359 BD(dev).bd_bcache = NULL;
361 return (disk_close(dev));
367 struct disk_devdesc *dev;
369 dev = (struct disk_devdesc *)f->f_devdata;
372 *(u_int *)data = BD(dev).bd_sectorsize;
375 *(off_t *)data = BD(dev).bd_sectors * BD(dev).bd_sectorsize;
388 struct disk_devdesc *dev;
390 dev = (struct disk_devdesc *)devdata;
393 bcd.dv_cache = BD(dev).bd_bcache;
395 return (bcache_strategy(&bcd, rw, dblk + dev->d_offset, offset, size,
403 struct disk_devdesc *dev = (struct disk_devdesc *)devdata;
411 if (size % BD(dev).bd_sectorsize)
415 DEBUG("open_disk %p", dev);
416 blks = size / BD(dev).bd_sectorsize;
426 remaining = (int)(BD(dev).bd_sectors - dblk); /* truncate */
429 size = blks * BD(dev).bd_sectorsize;
437 if (blks && bd_read(dev, dblk, blks, buf)) {
454 if (blks && bd_write(dev, dblk, blks, buf)) {
479 bd_edd_io(struct disk_devdesc *dev, daddr_t dblk, int blks, caddr_t dest,
496 v86.edx = BD(dev).bd_unit;
504 bd_chs_io(struct disk_devdesc *dev, daddr_t dblk, int blks, caddr_t dest,
509 bpc = BD(dev).bd_sec * BD(dev).bd_hds; /* blocks per cylinder */
513 hd = x / BD(dev).bd_sec; /* offset / blocks per track */
514 sec = x % BD(dev).bd_sec; /* offset into track */
530 v86.edx = (hd << 8) | BD(dev).bd_unit;
538 bd_io(struct disk_devdesc *dev, daddr_t dblk, int blks, caddr_t dest, int dowrite)
551 if (VTOP(dest) >> 20 != 0 || (BD(dev).bd_unit < 0x80 &&
553 blks * BD(dev).bd_sectorsize) >> 16))) {
564 bbuf = alloca(x * 2 * BD(dev).bd_sectorsize);
566 ((u_int32_t)VTOP(bbuf + x * BD(dev).bd_sectorsize) & 0xffff0000)) {
569 breg = bbuf + x * BD(dev).bd_sectorsize;
582 sec = dblk % BD(dev).bd_sec; /* offset into track */
583 x = min(BD(dev).bd_sec - sec, resid);
595 bcopy(p, breg, x * BD(dev).bd_sectorsize);
607 v86.edx = BD(dev).bd_unit;
611 if (BD(dev).bd_flags & BD_MODEEDD1)
612 result = bd_edd_io(dev, dblk, x, xp, dowrite);
614 result = bd_chs_io(dev, dblk, x, xp, dowrite);
629 bcopy(breg, p, x * BD(dev).bd_sectorsize);
630 p += (x * BD(dev).bd_sectorsize);
635 /* hexdump(dest, (blks * BD(dev).bd_sectorsize)); */
640 bd_read(struct disk_devdesc *dev, daddr_t dblk, int blks, caddr_t dest)
643 return (bd_io(dev, dblk, blks, dest, 0));
647 bd_write(struct disk_devdesc *dev, daddr_t dblk, int blks, caddr_t dest)
650 return (bd_io(dev, dblk, blks, dest, 1));
683 * Return a suitable dev_t value for (dev).
685 * In the case where it looks like (dev) is a SCSI disk, we allow the number of
691 struct disk_devdesc *dev;
698 dev = (struct disk_devdesc *)d;
699 biosdev = bd_unit2bios(dev->d_unit);
700 DEBUG("unit %d BIOS device %d", dev->d_unit, biosdev);
703 if (disk_open(dev, BD(dev).bd_sectors * BD(dev).bd_sectorsize,
704 BD(dev).bd_sectorsize,(BD(dev).bd_flags & BD_FLOPPY) ?
708 disk_close(dev);
712 if (bdinfo[dev->d_unit].bd_type == DT_ATAPI) {
734 rootdev = MAKEBOOTDEV(major, dev->d_slice + 1, unit, dev->d_partition);
735 DEBUG("dev is 0x%x\n", rootdev);