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*33408Skarels * @(#)conf.c 7.4 (Berkeley) 01/28/88 723221Smckusick */ 8318Sbill 99803Ssam #include "../machine/pte.h" 109803Ssam 11*33408Skarels #include "param.h" 12*33408Skarels #include "inode.h" 13*33408Skarels #include "fs.h" 149186Ssam 15318Sbill #include "saio.h" 16318Sbill 17318Sbill devread(io) 183261Swnj register struct iob *io; 19318Sbill { 2011082Ssam int cc; 21318Sbill 2210022Ssam io->i_flgs |= F_RDDATA; 2311082Ssam io->i_error = 0; 2411082Ssam cc = (*devsw[io->i_ino.i_dev].dv_strategy)(io, READ); 2510022Ssam io->i_flgs &= ~F_TYPEMASK; 2611082Ssam return (cc); 27318Sbill } 28318Sbill 29318Sbill devwrite(io) 303261Swnj register struct iob *io; 31318Sbill { 3211082Ssam int cc; 333261Swnj 3410022Ssam io->i_flgs |= F_WRDATA; 3511082Ssam io->i_error = 0; 3611082Ssam cc = (*devsw[io->i_ino.i_dev].dv_strategy)(io, WRITE); 3710022Ssam io->i_flgs &= ~F_TYPEMASK; 3811082Ssam return (cc); 39318Sbill } 40318Sbill 41318Sbill devopen(io) 423261Swnj register struct iob *io; 43318Sbill { 443261Swnj 4530547Skarels return (*devsw[io->i_ino.i_dev].dv_open)(io); 46318Sbill } 47318Sbill 48318Sbill devclose(io) 493261Swnj register struct iob *io; 50318Sbill { 513261Swnj 52318Sbill (*devsw[io->i_ino.i_dev].dv_close)(io); 53318Sbill } 54318Sbill 5510022Ssam devioctl(io, cmd, arg) 5610022Ssam register struct iob *io; 5710022Ssam int cmd; 5810022Ssam caddr_t arg; 593261Swnj { 60318Sbill 6110022Ssam return ((*devsw[io->i_ino.i_dev].dv_ioctl)(io, cmd, arg)); 6210022Ssam } 6310022Ssam 6410022Ssam /*ARGSUSED*/ 6510022Ssam nullsys(io) 6610022Ssam struct iob *io; 6710022Ssam { 6810022Ssam 693261Swnj ; 703261Swnj } 713261Swnj 7210022Ssam /*ARGSUSED*/ 7330547Skarels nodev(io) 7410022Ssam struct iob *io; 7530547Skarels { 7630547Skarels 7730547Skarels errno = EBADF; 7830547Skarels } 7930547Skarels 8030547Skarels /*ARGSUSED*/ 8130547Skarels noioctl(io, cmd, arg) 8230547Skarels struct iob *io; 8310022Ssam int cmd; 8410022Ssam caddr_t arg; 8510022Ssam { 8610022Ssam 8710022Ssam return (ECMD); 8810022Ssam } 8910022Ssam 9024152Sbloom #if defined(VAX780) || defined(VAX750) || defined(VAX8600) 9130547Skarels #define HP "hp" 9210022Ssam int hpstrategy(), hpopen(), hpioctl(); 9330547Skarels #else 94*33408Skarels #define HP 0 9530547Skarels #define hpstrategy nodev 9630547Skarels #define hpopen nodev 9730547Skarels #define hpioctl noioctl 986970Ssam #endif 9910022Ssam int upstrategy(), upopen(), upioctl(); 10010022Ssam int rkstrategy(), rkopen(), rkioctl(); 10111111Ssam int rastrategy(), raopen(), raioctl(); 10213812Ssam #if defined(VAX730) 10330547Skarels #define RB "rb" 10410022Ssam int idcstrategy(), idcopen(), idcioctl(); 10530547Skarels #else 106*33408Skarels #define RB 0 10730547Skarels #define idcstrategy nodev 10830547Skarels #define idcopen nodev 10930547Skarels #define idcioctl noioctl 11013812Ssam #endif 11111111Ssam int rlstrategy(), rlopen(), rlioctl(); 11230547Skarels 1137277Swnj #ifndef BOOT 11430547Skarels #define TM "tm" 1151812Sbill int tmstrategy(), tmopen(), tmclose(); 11630547Skarels #define TS "ts" 1173261Swnj int tsstrategy(), tsopen(), tsclose(); 11824152Sbloom #if defined(VAX780) || defined(VAX750) || defined(VAX8600) 11930547Skarels #define HT "ht" 1207277Swnj int htstrategy(), htopen(), htclose(); 12130547Skarels #define MT "mt" 1224868Sroot int mtstrategy(), mtopen(), mtclose(); 12330547Skarels 12430547Skarels #else massbus vax 125*33408Skarels #define HT 0 12630547Skarels #define htstrategy nodev 12730547Skarels #define htopen nodev 12830547Skarels #define htclose nodev 129*33408Skarels #define MT 0 13030547Skarels #define mtstrategy nodev 13130547Skarels #define mtopen nodev 13230547Skarels #define mtclose nodev 13330547Skarels #endif massbus vax 13430547Skarels 13531990Skarels #define UT "ut" 1365156Ssam int utstrategy(), utopen(), utclose(); 137*33408Skarels #define TMSCP "tms" 138*33408Skarels int tmscpstrategy(), tmscpopen(), tmscpclose(); 13930547Skarels #else BOOT 140*33408Skarels #define TM 0 14130547Skarels #define tmstrategy nodev 14230547Skarels #define tmopen nodev 14330547Skarels #define tmclose nodev 144*33408Skarels #define TS 0 14530547Skarels #define tsstrategy nodev 14630547Skarels #define tsopen nodev 14730547Skarels #define tsclose nodev 148*33408Skarels #define HT 0 14930547Skarels #define htstrategy nodev 15030547Skarels #define htopen nodev 15130547Skarels #define htclose nodev 152*33408Skarels #define MT 0 15330547Skarels #define mtstrategy nodev 15430547Skarels #define mtopen nodev 15530547Skarels #define mtclose nodev 156*33408Skarels #define UT 0 15730547Skarels #define utstrategy nodev 15830547Skarels #define utopen nodev 15930547Skarels #define utclose nodev 160*33408Skarels #define TMSCP 0 161*33408Skarels #define tmscpstrategy nodev 162*33408Skarels #define tmscpopen nodev 163*33408Skarels #define tmscpclose nodev 164*33408Skarels #endif BOOT 165*33408Skarels 166*33408Skarels #ifdef VAX8200 167*33408Skarels #define KRA "kra" 168*33408Skarels int krastrategy(), kraopen(), kraioctl(); 169*33408Skarels #else 170*33408Skarels #define KRA 0 171*33408Skarels #define krastrategy nodev 172*33408Skarels #define kraopen nodev 173*33408Skarels #define kraioctl noioctl 1747277Swnj #endif 175318Sbill 176318Sbill struct devsw devsw[] = { 177*33408Skarels { HP, hpstrategy, hpopen, nullsys, hpioctl }, /* 0 = hp */ 178*33408Skarels { HT, htstrategy, htopen, htclose, noioctl }, /* 1 = ht */ 179*33408Skarels { "up", upstrategy, upopen, nullsys, upioctl }, /* 2 = up */ 180*33408Skarels { "hk", rkstrategy, rkopen, nullsys, rkioctl }, /* 3 = hk */ 181*33408Skarels { 0, nodev, nodev, nullsys, noioctl }, /* 4 = sw */ 182*33408Skarels { TM, tmstrategy, tmopen, tmclose, noioctl }, /* 5 = tm */ 183*33408Skarels { TS, tsstrategy, tsopen, tsclose, noioctl }, /* 6 = ts */ 184*33408Skarels { MT, mtstrategy, mtopen, mtclose, noioctl }, /* 7 = mt */ 185*33408Skarels { 0, nodev, nodev, nullsys, noioctl }, /* 8 = tu */ 186*33408Skarels { "ra", rastrategy, raopen, nullsys, raioctl }, /* 9 = ra */ 187*33408Skarels { UT, utstrategy, utopen, utclose, noioctl }, /* 10 = ut */ 188*33408Skarels { RB, idcstrategy, idcopen,nullsys, idcioctl },/* 11 = rb */ 189*33408Skarels { 0, nodev, nodev, nullsys, noioctl }, /* 12 = uu */ 190*33408Skarels { 0, nodev, nodev, nullsys, noioctl }, /* 13 = rx */ 191*33408Skarels { "rl", rlstrategy, rlopen, nullsys, rlioctl }, /* 14 = rl */ 192*33408Skarels { TMSCP,tmscpstrategy,tmscpopen,tmscpclose,noioctl},/* 15 = tmscp */ 193*33408Skarels { KRA, krastrategy, kraopen,nullsys, kraioctl}, /* 16 = kra */ 194318Sbill }; 19530547Skarels 196*33408Skarels int ndevs = (sizeof(devsw) / sizeof(devsw[0])); 197