1*41072Swilliam /*- 2*41072Swilliam * Copyright (c) 1990 The Regents of the University of California. 3*41072Swilliam * All rights reserved. 4*41072Swilliam * 5*41072Swilliam * This code is derived from software contributed to Berkeley by 6*41072Swilliam * William Jolitz. 7*41072Swilliam * 8*41072Swilliam * %sccs.include.noredist.c% 9*41072Swilliam * 10*41072Swilliam * @(#)conf.c 7.1 (Berkeley) 04/24/90 11*41072Swilliam */ 12*41072Swilliam 13*41072Swilliam 14*41072Swilliam /*#include "../machine/pte.h"*/ 15*41072Swilliam 16*41072Swilliam #include "../h/param.h" 17*41072Swilliam #include "../h/inode.h" 18*41072Swilliam #include "../h/fs.h" 19*41072Swilliam 20*41072Swilliam 21*41072Swilliam #include "saio.h" 22*41072Swilliam 23*41072Swilliam devread(io) 24*41072Swilliam register struct iob *io; 25*41072Swilliam { 26*41072Swilliam int cc; 27*41072Swilliam 28*41072Swilliam io->i_flgs |= F_RDDATA; 29*41072Swilliam io->i_error = 0; 30*41072Swilliam cc = (*devsw[major(io->i_ino.i_dev)].dv_strategy)(io, READ); 31*41072Swilliam io->i_flgs &= ~F_TYPEMASK; 32*41072Swilliam return (cc); 33*41072Swilliam } 34*41072Swilliam 35*41072Swilliam devwrite(io) 36*41072Swilliam register struct iob *io; 37*41072Swilliam { 38*41072Swilliam int cc; 39*41072Swilliam 40*41072Swilliam io->i_flgs |= F_WRDATA; 41*41072Swilliam io->i_error = 0; 42*41072Swilliam cc = (*devsw[major(io->i_ino.i_dev)].dv_strategy)(io, WRITE); 43*41072Swilliam io->i_flgs &= ~F_TYPEMASK; 44*41072Swilliam return (cc); 45*41072Swilliam } 46*41072Swilliam 47*41072Swilliam devopen(io) 48*41072Swilliam register struct iob *io; 49*41072Swilliam { 50*41072Swilliam 51*41072Swilliam (*devsw[major(io->i_ino.i_dev)].dv_open)(io); 52*41072Swilliam } 53*41072Swilliam 54*41072Swilliam devclose(io) 55*41072Swilliam register struct iob *io; 56*41072Swilliam { 57*41072Swilliam 58*41072Swilliam (*devsw[major(io->i_ino.i_dev)].dv_close)(io); 59*41072Swilliam } 60*41072Swilliam 61*41072Swilliam devioctl(io, cmd, arg) 62*41072Swilliam register struct iob *io; 63*41072Swilliam int cmd; 64*41072Swilliam caddr_t arg; 65*41072Swilliam { 66*41072Swilliam 67*41072Swilliam return ((*devsw[major(io->i_ino.i_dev)].dv_ioctl)(io, cmd, arg)); 68*41072Swilliam } 69*41072Swilliam 70*41072Swilliam /*ARGSUSED*/ 71*41072Swilliam nullsys(io) 72*41072Swilliam struct iob *io; 73*41072Swilliam { 74*41072Swilliam 75*41072Swilliam ; 76*41072Swilliam } 77*41072Swilliam 78*41072Swilliam /*ARGSUSED*/ 79*41072Swilliam nullioctl(io, cmd, arg) 80*41072Swilliam struct iob *io; 81*41072Swilliam int cmd; 82*41072Swilliam caddr_t arg; 83*41072Swilliam { 84*41072Swilliam 85*41072Swilliam return (ECMD); 86*41072Swilliam } 87*41072Swilliam 88*41072Swilliam int nullsys(), nullioctl(); 89*41072Swilliam int wdstrategy(), wdopen()/*, wdioctl()*/; 90*41072Swilliam 91*41072Swilliam struct devsw devsw[] = { 92*41072Swilliam /*{ "xx", xxstrategy, xxopen, nullsys, nullioctl },*/ 93*41072Swilliam { "wd", wdstrategy, wdopen, nullsys,/*wdioctl*/ nullioctl }, 94*41072Swilliam { 0, 0, 0, 0, 0 }, 95*41072Swilliam }; 96*41072Swilliam int ndevs = 2 ; 97