1*41488Smckusick /* 2*41488Smckusick * Copyright (c) 1982, 1986, 1990 The Regents of the University of California. 3*41488Smckusick * All rights reserved. 4*41488Smckusick * 5*41488Smckusick * %sccs.include.redist.c% 6*41488Smckusick * 7*41488Smckusick * @(#)conf.c 7.1 (Berkeley) 05/08/90 8*41488Smckusick */ 9*41488Smckusick 10*41488Smckusick #include "saio.h" 11*41488Smckusick 12*41488Smckusick devread(io) 13*41488Smckusick register struct iob *io; 14*41488Smckusick { 15*41488Smckusick int cc; 16*41488Smckusick 17*41488Smckusick /* check for interrupt */ 18*41488Smckusick (void) peekchar(); 19*41488Smckusick 20*41488Smckusick io->i_flgs |= F_RDDATA; 21*41488Smckusick io->i_error = 0; 22*41488Smckusick cc = (*devsw[io->i_ino.i_dev].dv_strategy)(io, READ); 23*41488Smckusick io->i_flgs &= ~F_TYPEMASK; 24*41488Smckusick return (cc); 25*41488Smckusick } 26*41488Smckusick 27*41488Smckusick devwrite(io) 28*41488Smckusick register struct iob *io; 29*41488Smckusick { 30*41488Smckusick int cc; 31*41488Smckusick 32*41488Smckusick io->i_flgs |= F_WRDATA; 33*41488Smckusick io->i_error = 0; 34*41488Smckusick cc = (*devsw[io->i_ino.i_dev].dv_strategy)(io, WRITE); 35*41488Smckusick io->i_flgs &= ~F_TYPEMASK; 36*41488Smckusick return (cc); 37*41488Smckusick } 38*41488Smckusick 39*41488Smckusick devopen(io) 40*41488Smckusick register struct iob *io; 41*41488Smckusick { 42*41488Smckusick 43*41488Smckusick (*devsw[io->i_ino.i_dev].dv_open)(io); 44*41488Smckusick } 45*41488Smckusick 46*41488Smckusick devclose(io) 47*41488Smckusick register struct iob *io; 48*41488Smckusick { 49*41488Smckusick 50*41488Smckusick (*devsw[io->i_ino.i_dev].dv_close)(io); 51*41488Smckusick } 52*41488Smckusick 53*41488Smckusick devioctl(io, cmd, arg) 54*41488Smckusick register struct iob *io; 55*41488Smckusick int cmd; 56*41488Smckusick caddr_t arg; 57*41488Smckusick { 58*41488Smckusick 59*41488Smckusick return ((*devsw[io->i_ino.i_dev].dv_ioctl)(io, cmd, arg)); 60*41488Smckusick } 61*41488Smckusick 62*41488Smckusick /*ARGSUSED*/ 63*41488Smckusick nullsys(io) 64*41488Smckusick struct iob *io; 65*41488Smckusick { 66*41488Smckusick 67*41488Smckusick ; 68*41488Smckusick } 69*41488Smckusick 70*41488Smckusick /*ARGSUSED*/ 71*41488Smckusick nullioctl(io, cmd, arg) 72*41488Smckusick struct iob *io; 73*41488Smckusick int cmd; 74*41488Smckusick caddr_t arg; 75*41488Smckusick { 76*41488Smckusick 77*41488Smckusick return (ECMD); 78*41488Smckusick } 79*41488Smckusick 80*41488Smckusick int nullsys(), nullioctl(); 81*41488Smckusick int rdstrategy(), rdopen(), rdioctl(); 82*41488Smckusick int sdstrategy(), sdopen(), sdioctl(); 83*41488Smckusick #ifndef BOOT 84*41488Smckusick int ctstrategy(), ctopen(), ctclose(); 85*41488Smckusick #endif 86*41488Smckusick 87*41488Smckusick struct devsw devsw[] = { 88*41488Smckusick { "rd", rdstrategy, rdopen, nullsys, nullioctl }, 89*41488Smckusick { "sd", sdstrategy, sdopen, nullsys, nullioctl }, 90*41488Smckusick #ifndef BOOT 91*41488Smckusick { "ct", ctstrategy, ctopen, ctclose, nullioctl }, 92*41488Smckusick #endif 93*41488Smckusick { 0, 0, 0, 0, 0 }, 94*41488Smckusick }; 95