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*31990Skarels * @(#)conf.c 7.3 (Berkeley) 08/03/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 4730547Skarels 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*/ 7530547Skarels nodev(io) 7610022Ssam struct iob *io; 7730547Skarels { 7830547Skarels 7930547Skarels errno = EBADF; 8030547Skarels } 8130547Skarels 8230547Skarels /*ARGSUSED*/ 8330547Skarels noioctl(io, cmd, arg) 8430547Skarels 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) 9330547Skarels #define HP "hp" 9410022Ssam int hpstrategy(), hpopen(), hpioctl(); 9530547Skarels #else 9630547Skarels #define HP "" 9730547Skarels #define hpstrategy nodev 9830547Skarels #define hpopen nodev 9930547Skarels #define hpioctl noioctl 1006970Ssam #endif 10110022Ssam int upstrategy(), upopen(), upioctl(); 10210022Ssam int rkstrategy(), rkopen(), rkioctl(); 10311111Ssam int rastrategy(), raopen(), raioctl(); 10413812Ssam #if defined(VAX730) 10530547Skarels #define RB "rb" 10610022Ssam int idcstrategy(), idcopen(), idcioctl(); 10730547Skarels #else 10830547Skarels #define RB "" 10930547Skarels #define idcstrategy nodev 11030547Skarels #define idcopen nodev 11130547Skarels #define idcioctl noioctl 11213812Ssam #endif 11311111Ssam int rlstrategy(), rlopen(), rlioctl(); 11430547Skarels 1157277Swnj #ifndef BOOT 11630547Skarels #define TM "tm" 1171812Sbill int tmstrategy(), tmopen(), tmclose(); 11830547Skarels #define TS "ts" 1193261Swnj int tsstrategy(), tsopen(), tsclose(); 12024152Sbloom #if defined(VAX780) || defined(VAX750) || defined(VAX8600) 12130547Skarels #define HT "ht" 1227277Swnj int htstrategy(), htopen(), htclose(); 12330547Skarels #define MT "mt" 1244868Sroot int mtstrategy(), mtopen(), mtclose(); 12530547Skarels 12630547Skarels #else massbus vax 12730547Skarels #define HT "" 12830547Skarels #define htstrategy nodev 12930547Skarels #define htopen nodev 13030547Skarels #define htclose nodev 13130547Skarels #define MT "" 13230547Skarels #define mtstrategy nodev 13330547Skarels #define mtopen nodev 13430547Skarels #define mtclose nodev 13530547Skarels #endif massbus vax 13630547Skarels 137*31990Skarels #define UT "ut" 1385156Ssam int utstrategy(), utopen(), utclose(); 13930547Skarels #else BOOT 14030547Skarels #define TM "" 14130547Skarels #define tmstrategy nodev 14230547Skarels #define tmopen nodev 14330547Skarels #define tmclose nodev 14430547Skarels #define TS "" 14530547Skarels #define tsstrategy nodev 14630547Skarels #define tsopen nodev 14730547Skarels #define tsclose nodev 14830547Skarels #define HT "" 14930547Skarels #define htstrategy nodev 15030547Skarels #define htopen nodev 15130547Skarels #define htclose nodev 15230547Skarels #define MT "" 15330547Skarels #define mtstrategy nodev 15430547Skarels #define mtopen nodev 15530547Skarels #define mtclose nodev 15630547Skarels #define UT "" 15730547Skarels #define utstrategy nodev 15830547Skarels #define utopen nodev 15930547Skarels #define utclose nodev 1607277Swnj #endif 161318Sbill 162318Sbill struct devsw devsw[] = { 16330547Skarels { HP, hpstrategy, hpopen, nullsys, hpioctl }, /* 0 = hp */ 16430547Skarels { HT, htstrategy, htopen, htclose, noioctl }, /* 1 = ht */ 16530547Skarels { "up", upstrategy, upopen, nullsys, upioctl }, /* 2 = up */ 16630547Skarels { "hk", rkstrategy, rkopen, nullsys, rkioctl }, /* 3 = hk */ 16730547Skarels { "", nodev, nodev, nullsys, noioctl }, /* 4 = sw */ 16830547Skarels { TM, tmstrategy, tmopen, tmclose, noioctl }, /* 5 = tm */ 16930547Skarels { TS, tsstrategy, tsopen, tsclose, noioctl }, /* 6 = ts */ 17030547Skarels { MT, mtstrategy, mtopen, mtclose, noioctl }, /* 7 = mt */ 17130547Skarels { "", nodev, nodev, nullsys, noioctl }, /* 8 = tu */ 17230547Skarels { "ra", rastrategy, raopen, nullsys, raioctl }, /* 9 = ra */ 17330547Skarels { UT, utstrategy, utopen, utclose, noioctl }, /* 10 = ut */ 17430547Skarels { RB, idcstrategy, idcopen,nullsys, idcioctl },/* 11 = rb */ 17530547Skarels { "", nodev, nodev, nullsys, noioctl }, /* 12 = uu */ 17630547Skarels { "", nodev, nodev, nullsys, noioctl }, /* 13 = rx */ 17730547Skarels { "rl", rlstrategy, rlopen, nullsys, rlioctl }, /* 14 = rl */ 17810022Ssam { 0, 0, 0, 0, 0 }, 179318Sbill }; 18030547Skarels 18130547Skarels int ndevs = (sizeof(devsw) / sizeof(devsw[0]) - 1); 182