141072Swilliam /*- 241072Swilliam * Copyright (c) 1990 The Regents of the University of California. 341072Swilliam * All rights reserved. 441072Swilliam * 541072Swilliam * This code is derived from software contributed to Berkeley by 641072Swilliam * William Jolitz. 741072Swilliam * 8*48816Swilliam * %sccs.include.redist.c% 941072Swilliam * 10*48816Swilliam * @(#)conf.c 7.2 (Berkeley) 04/28/91 1141072Swilliam */ 1241072Swilliam 13*48816Swilliam #include "param.h" 1441072Swilliam 1541072Swilliam #include "saio.h" 16*48816Swilliam #ifdef BOOT 17*48816Swilliam extern exception; 18*48816Swilliam extern int debugflag; 19*48816Swilliam #endif 2041072Swilliam 2141072Swilliam devread(io) 2241072Swilliam register struct iob *io; 2341072Swilliam { 2441072Swilliam int cc; 25*48816Swilliam char c; 2641072Swilliam 2741072Swilliam io->i_flgs |= F_RDDATA; 2841072Swilliam io->i_error = 0; 29*48816Swilliam cc = (*devsw[io->i_dev].dv_strategy)(io, READ); 3041072Swilliam io->i_flgs &= ~F_TYPEMASK; 31*48816Swilliam 32*48816Swilliam #ifdef BOOT 33*48816Swilliam if(/*io->i_error || */(c=scankbd())) 34*48816Swilliam _longjmp(&exception,1); 35*48816Swilliam #endif 3641072Swilliam return (cc); 3741072Swilliam } 3841072Swilliam 3941072Swilliam devwrite(io) 4041072Swilliam register struct iob *io; 4141072Swilliam { 4241072Swilliam int cc; 43*48816Swilliam char c; 4441072Swilliam 4541072Swilliam io->i_flgs |= F_WRDATA; 4641072Swilliam io->i_error = 0; 47*48816Swilliam cc = (*devsw[io->i_dev].dv_strategy)(io, WRITE); 4841072Swilliam io->i_flgs &= ~F_TYPEMASK; 49*48816Swilliam #ifdef BOOT 50*48816Swilliam if(/* io->i_error || */ (c=scankbd())) 51*48816Swilliam _longjmp(&exception,1); 52*48816Swilliam #endif 5341072Swilliam return (cc); 5441072Swilliam } 5541072Swilliam 5641072Swilliam devopen(io) 5741072Swilliam register struct iob *io; 5841072Swilliam { 5941072Swilliam 60*48816Swilliam (*devsw[io->i_dev].dv_open)(io); 6141072Swilliam } 6241072Swilliam 6341072Swilliam devclose(io) 6441072Swilliam register struct iob *io; 6541072Swilliam { 6641072Swilliam 67*48816Swilliam (*devsw[io->i_dev].dv_close)(io); 6841072Swilliam } 6941072Swilliam 7041072Swilliam devioctl(io, cmd, arg) 7141072Swilliam register struct iob *io; 7241072Swilliam int cmd; 7341072Swilliam caddr_t arg; 7441072Swilliam { 7541072Swilliam 76*48816Swilliam return ((*devsw[io->i_dev].dv_ioctl)(io, cmd, arg)); 7741072Swilliam } 7841072Swilliam 7941072Swilliam /*ARGSUSED*/ 8041072Swilliam nullsys(io) 8141072Swilliam struct iob *io; 8241072Swilliam { 8341072Swilliam 8441072Swilliam ; 8541072Swilliam } 8641072Swilliam 8741072Swilliam /*ARGSUSED*/ 8841072Swilliam nullioctl(io, cmd, arg) 8941072Swilliam struct iob *io; 9041072Swilliam int cmd; 9141072Swilliam caddr_t arg; 9241072Swilliam { 9341072Swilliam 9441072Swilliam return (ECMD); 9541072Swilliam } 9641072Swilliam 9741072Swilliam int nullsys(), nullioctl(); 9841072Swilliam int wdstrategy(), wdopen()/*, wdioctl()*/; 99*48816Swilliam int fdstrategy(), fdopen()/*, fdioctl()*/; 10041072Swilliam 10141072Swilliam struct devsw devsw[] = { 10241072Swilliam /*{ "xx", xxstrategy, xxopen, nullsys, nullioctl },*/ 10341072Swilliam { "wd", wdstrategy, wdopen, nullsys,/*wdioctl*/ nullioctl }, 104*48816Swilliam { "", 0, 0, 0, 0 }, /* swapdev place holder */ 105*48816Swilliam { "fd", fdstrategy, fdopen, nullsys,/*fdioctl*/ nullioctl }, 10641072Swilliam { 0, 0, 0, 0, 0 }, 10741072Swilliam }; 108*48816Swilliam int ndevs = 3 ; 109