123221Smckusick /* 229293Smckusick * Copyright (c) 1982, 1986 Regents of the University of California. 323221Smckusick * All rights reserved. The Berkeley software License Agreement 423221Smckusick * specifies the terms and conditions for redistribution. 523221Smckusick * 6*30547Skarels * @(#)conf.c 7.2 (Berkeley) 02/21/87 723221Smckusick */ 8318Sbill 99803Ssam #include "../machine/pte.h" 109803Ssam 11318Sbill #include "../h/param.h" 12318Sbill #include "../h/inode.h" 137444Sroot #include "../h/fs.h" 149186Ssam 159186Ssam #include "../vaxmba/mbareg.h" 169186Ssam 17318Sbill #include "saio.h" 18318Sbill 19318Sbill devread(io) 203261Swnj register struct iob *io; 21318Sbill { 2211082Ssam int cc; 23318Sbill 2410022Ssam io->i_flgs |= F_RDDATA; 2511082Ssam io->i_error = 0; 2611082Ssam cc = (*devsw[io->i_ino.i_dev].dv_strategy)(io, READ); 2710022Ssam io->i_flgs &= ~F_TYPEMASK; 2811082Ssam return (cc); 29318Sbill } 30318Sbill 31318Sbill devwrite(io) 323261Swnj register struct iob *io; 33318Sbill { 3411082Ssam int cc; 353261Swnj 3610022Ssam io->i_flgs |= F_WRDATA; 3711082Ssam io->i_error = 0; 3811082Ssam cc = (*devsw[io->i_ino.i_dev].dv_strategy)(io, WRITE); 3910022Ssam io->i_flgs &= ~F_TYPEMASK; 4011082Ssam return (cc); 41318Sbill } 42318Sbill 43318Sbill devopen(io) 443261Swnj register struct iob *io; 45318Sbill { 463261Swnj 47*30547Skarels return (*devsw[io->i_ino.i_dev].dv_open)(io); 48318Sbill } 49318Sbill 50318Sbill devclose(io) 513261Swnj register struct iob *io; 52318Sbill { 533261Swnj 54318Sbill (*devsw[io->i_ino.i_dev].dv_close)(io); 55318Sbill } 56318Sbill 5710022Ssam devioctl(io, cmd, arg) 5810022Ssam register struct iob *io; 5910022Ssam int cmd; 6010022Ssam caddr_t arg; 613261Swnj { 62318Sbill 6310022Ssam return ((*devsw[io->i_ino.i_dev].dv_ioctl)(io, cmd, arg)); 6410022Ssam } 6510022Ssam 6610022Ssam /*ARGSUSED*/ 6710022Ssam nullsys(io) 6810022Ssam struct iob *io; 6910022Ssam { 7010022Ssam 713261Swnj ; 723261Swnj } 733261Swnj 7410022Ssam /*ARGSUSED*/ 75*30547Skarels nodev(io) 7610022Ssam struct iob *io; 77*30547Skarels { 78*30547Skarels 79*30547Skarels errno = EBADF; 80*30547Skarels } 81*30547Skarels 82*30547Skarels /*ARGSUSED*/ 83*30547Skarels noioctl(io, cmd, arg) 84*30547Skarels struct iob *io; 8510022Ssam int cmd; 8610022Ssam caddr_t arg; 8710022Ssam { 8810022Ssam 8910022Ssam return (ECMD); 9010022Ssam } 9110022Ssam 9224152Sbloom #if defined(VAX780) || defined(VAX750) || defined(VAX8600) 93*30547Skarels #define HP "hp" 9410022Ssam int hpstrategy(), hpopen(), hpioctl(); 95*30547Skarels #else 96*30547Skarels #define HP "" 97*30547Skarels #define hpstrategy nodev 98*30547Skarels #define hpopen nodev 99*30547Skarels #define hpioctl noioctl 1006970Ssam #endif 10110022Ssam int upstrategy(), upopen(), upioctl(); 10210022Ssam int rkstrategy(), rkopen(), rkioctl(); 10311111Ssam int rastrategy(), raopen(), raioctl(); 10413812Ssam #if defined(VAX730) 105*30547Skarels #define RB "rb" 10610022Ssam int idcstrategy(), idcopen(), idcioctl(); 107*30547Skarels #else 108*30547Skarels #define RB "" 109*30547Skarels #define idcstrategy nodev 110*30547Skarels #define idcopen nodev 111*30547Skarels #define idcioctl noioctl 11213812Ssam #endif 11311111Ssam int rlstrategy(), rlopen(), rlioctl(); 114*30547Skarels 1157277Swnj #ifndef BOOT 116*30547Skarels #define TM "tm" 1171812Sbill int tmstrategy(), tmopen(), tmclose(); 118*30547Skarels #define TS "ts" 1193261Swnj int tsstrategy(), tsopen(), tsclose(); 12024152Sbloom #if defined(VAX780) || defined(VAX750) || defined(VAX8600) 121*30547Skarels #define HT "ht" 1227277Swnj int htstrategy(), htopen(), htclose(); 123*30547Skarels #define MT "mt" 1244868Sroot int mtstrategy(), mtopen(), mtclose(); 125*30547Skarels 126*30547Skarels #else massbus vax 127*30547Skarels #define HT "" 128*30547Skarels #define htstrategy nodev 129*30547Skarels #define htopen nodev 130*30547Skarels #define htclose nodev 131*30547Skarels #define MT "" 132*30547Skarels #define mtstrategy nodev 133*30547Skarels #define mtopen nodev 134*30547Skarels #define mtclose nodev 135*30547Skarels #endif massbus vax 136*30547Skarels 137*30547Skarels #define UT "" 1385156Ssam int utstrategy(), utopen(), utclose(); 139*30547Skarels #else BOOT 140*30547Skarels #define TM "" 141*30547Skarels #define tmstrategy nodev 142*30547Skarels #define tmopen nodev 143*30547Skarels #define tmclose nodev 144*30547Skarels #define TS "" 145*30547Skarels #define tsstrategy nodev 146*30547Skarels #define tsopen nodev 147*30547Skarels #define tsclose nodev 148*30547Skarels #define HT "" 149*30547Skarels #define htstrategy nodev 150*30547Skarels #define htopen nodev 151*30547Skarels #define htclose nodev 152*30547Skarels #define MT "" 153*30547Skarels #define mtstrategy nodev 154*30547Skarels #define mtopen nodev 155*30547Skarels #define mtclose nodev 156*30547Skarels #define UT "" 157*30547Skarels #define utstrategy nodev 158*30547Skarels #define utopen nodev 159*30547Skarels #define utclose nodev 1607277Swnj #endif 161318Sbill 162318Sbill struct devsw devsw[] = { 163*30547Skarels { HP, hpstrategy, hpopen, nullsys, hpioctl }, /* 0 = hp */ 164*30547Skarels { HT, htstrategy, htopen, htclose, noioctl }, /* 1 = ht */ 165*30547Skarels { "up", upstrategy, upopen, nullsys, upioctl }, /* 2 = up */ 166*30547Skarels { "hk", rkstrategy, rkopen, nullsys, rkioctl }, /* 3 = hk */ 167*30547Skarels { "", nodev, nodev, nullsys, noioctl }, /* 4 = sw */ 168*30547Skarels { TM, tmstrategy, tmopen, tmclose, noioctl }, /* 5 = tm */ 169*30547Skarels { TS, tsstrategy, tsopen, tsclose, noioctl }, /* 6 = ts */ 170*30547Skarels { MT, mtstrategy, mtopen, mtclose, noioctl }, /* 7 = mt */ 171*30547Skarels { "", nodev, nodev, nullsys, noioctl }, /* 8 = tu */ 172*30547Skarels { "ra", rastrategy, raopen, nullsys, raioctl }, /* 9 = ra */ 173*30547Skarels { UT, utstrategy, utopen, utclose, noioctl }, /* 10 = ut */ 174*30547Skarels { RB, idcstrategy, idcopen,nullsys, idcioctl },/* 11 = rb */ 175*30547Skarels { "", nodev, nodev, nullsys, noioctl }, /* 12 = uu */ 176*30547Skarels { "", nodev, nodev, nullsys, noioctl }, /* 13 = rx */ 177*30547Skarels { "rl", rlstrategy, rlopen, nullsys, rlioctl }, /* 14 = rl */ 17810022Ssam { 0, 0, 0, 0, 0 }, 179318Sbill }; 180*30547Skarels 181*30547Skarels int ndevs = (sizeof(devsw) / sizeof(devsw[0]) - 1); 182