1*32555Sbostic /* conf.c 1.4 87/10/27 */ 225866Ssam /* conf.c 6.1 83/07/29 */ 325866Ssam 425866Ssam #include "../machine/pte.h" 525866Ssam 625866Ssam #include "param.h" 725866Ssam #include "inode.h" 825866Ssam #include "fs.h" 925866Ssam 1025866Ssam #include "saio.h" 1125866Ssam 1225866Ssam devread(io) 1325866Ssam register struct iob *io; 1425866Ssam { 1525866Ssam int cc; 1625866Ssam 1725866Ssam io->i_flgs |= F_RDDATA; 1825866Ssam io->i_error = 0; 1925866Ssam cc = (*devsw[io->i_ino.i_dev].dv_strategy)(io, READ); 2025866Ssam io->i_flgs &= ~F_TYPEMASK; 2125866Ssam return (cc); 2225866Ssam } 2325866Ssam 2425866Ssam devwrite(io) 2525866Ssam register struct iob *io; 2625866Ssam { 2725866Ssam int cc; 2825866Ssam 2925866Ssam io->i_flgs |= F_WRDATA; 3025866Ssam io->i_error = 0; 3125866Ssam cc = (*devsw[io->i_ino.i_dev].dv_strategy)(io, WRITE); 3225866Ssam io->i_flgs &= ~F_TYPEMASK; 3325866Ssam return (cc); 3425866Ssam } 3525866Ssam 3625866Ssam devopen(io) 3725866Ssam register struct iob *io; 3825866Ssam { 3925866Ssam 4025866Ssam (*devsw[io->i_ino.i_dev].dv_open)(io); 4125866Ssam } 4225866Ssam 4325866Ssam devclose(io) 4425866Ssam register struct iob *io; 4525866Ssam { 4625866Ssam 4725866Ssam (*devsw[io->i_ino.i_dev].dv_close)(io); 4825866Ssam } 4925866Ssam 5030308Skarels devioctl(io, cmd, arg) 5130308Skarels register struct iob *io; 5230308Skarels int cmd; 5330308Skarels caddr_t arg; 5430308Skarels { 5530308Skarels 5630308Skarels return ((*devsw[io->i_ino.i_dev].dv_ioctl)(io, cmd, arg)); 5730308Skarels } 5830308Skarels 5925866Ssam /*ARGSUSED*/ 6029566Ssam nullsys(io) struct iob *io; {} 6129566Ssam nullopen(io) struct iob *io; { _stop("bad device type"); } 6225866Ssam 6330308Skarels /*ARGSUSED*/ 6430308Skarels noioctl(io, cmd, arg) 6530308Skarels struct iob *io; 6630308Skarels int cmd; 6730308Skarels caddr_t arg; 6830308Skarels { 6930308Skarels 7030308Skarels return (ECMD); 7130308Skarels } 7230308Skarels 7329566Ssam int udstrategy(), udopen(); 7429566Ssam int vdstrategy(), vdopen(); 75*32555Sbostic int hdstrategy(), hdopen(); 7629566Ssam int cystrategy(), cyopen(), cyclose(); 7725866Ssam 7825866Ssam struct devsw devsw[] = { 7930308Skarels { "ud", udstrategy, udopen, nullsys, noioctl }, 8030308Skarels { "dk", vdstrategy, vdopen, nullsys, noioctl }, 81*32555Sbostic { "hd", hdstrategy, hdopen, nullsys, noioctl }, 8229566Ssam #ifdef notdef 8330308Skarels { "xp", xpstrategy, xpopen, nullsys, noioctl }, 8429566Ssam #else 8530308Skarels { "xp", nullopen, nullsys, nullsys, noioctl }, 8629566Ssam #endif 8730308Skarels { "cy", cystrategy, cyopen, cyclose, noioctl }, 8829566Ssam { 0 } 8925866Ssam }; 9030308Skarels int ndevs = (sizeof(devsw) / sizeof(devsw[0]) - 1); 91