134407Skarels /* 234407Skarels * Copyright (c) 1988 Regents of the University of California. 334407Skarels * All rights reserved. 434407Skarels * 544526Sbostic * %sccs.include.redist.c% 634407Skarels * 7*49444Skarels * @(#)conf.c 7.9 (Berkeley) 05/08/91 834407Skarels */ 924042Ssam 1045797Sbostic #include "sys/param.h" 1145797Sbostic #include "sys/systm.h" 1245797Sbostic #include "sys/buf.h" 1345797Sbostic #include "sys/ioctl.h" 1445797Sbostic #include "sys/tty.h" 1545797Sbostic #include "sys/conf.h" 1624042Ssam 1746628Smckusick int nullop(), enxio(), enodev(), rawread(), rawwrite(), swstrategy(); 1824042Ssam 1929557Ssam #include "dk.h" 2024042Ssam #if NVD > 0 2134495Skarels int vdopen(),vdclose(),vdstrategy(),vdioctl(); 2230675Skarels int vddump(),vdsize(); 2324042Ssam #else 2446628Smckusick #define vdopen enxio 2546628Smckusick #define vdclose enxio 2646628Smckusick #define vdstrategy enxio 2746628Smckusick #define vdioctl enxio 2846628Smckusick #define vddump enxio 2924042Ssam #define vdsize 0 3024042Ssam #endif 3124042Ssam 3237569Sbostic #include "hd.h" 3337569Sbostic #if NHD > 0 3437569Sbostic int hdopen(),hdclose(),hdstrategy(),hdioctl(); 3537569Sbostic int hddump(),hdsize(); 3637569Sbostic #else 3746628Smckusick #define hdopen enxio 3846628Smckusick #define hdclose enxio 3946628Smckusick #define hdstrategy enxio 4046628Smckusick #define hdioctl enxio 4146628Smckusick #define hddump enxio 4237569Sbostic #define hdsize 0 4337569Sbostic #endif 4437569Sbostic 4525981Ssam #include "yc.h" 4624042Ssam #if NCY > 0 4734495Skarels int cyopen(),cyclose(),cystrategy(),cydump(); 4834291Skarels int cyioctl(),cyreset(); 4924042Ssam #else 5046628Smckusick #define cyopen enxio 5146628Smckusick #define cyclose enxio 5246628Smckusick #define cystrategy enxio 5346628Smckusick #define cydump enxio 5446628Smckusick #define cyioctl enxio 5546628Smckusick #define cyreset nullop 5624042Ssam #endif 5724042Ssam 5824042Ssam struct bdevsw bdevsw[] = 5924042Ssam { 60*49444Skarels { enodev, nullop, enodev, enodev, /*0*/ 6146628Smckusick enodev, 0, 0 }, 6230675Skarels { vdopen, vdclose, vdstrategy, vdioctl, /*1*/ 6330675Skarels vddump, vdsize, 0 }, 6437569Sbostic { hdopen, hdclose, hdstrategy, hdioctl, /*2*/ 6537569Sbostic hddump, hdsize, 0 }, 6630675Skarels { cyopen, cyclose, cystrategy, cyioctl, /*3*/ 6730675Skarels cydump, 0, B_TAPE }, 6846628Smckusick { enodev, enodev, swstrategy, enodev, /*4*/ 6946628Smckusick enodev, 0, 0 }, 7024042Ssam }; 7124042Ssam int nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]); 7224042Ssam 7324042Ssam int cnopen(),cnclose(),cnread(),cnwrite(),cnioctl(); 7425678Ssam extern struct tty cons; 7524042Ssam 7624042Ssam #include "vx.h" 7724042Ssam #if NVX == 0 7846628Smckusick #define vxopen enxio 7946628Smckusick #define vxclose enxio 8046628Smckusick #define vxread enxio 8146628Smckusick #define vxwrite enxio 8246628Smckusick #define vxioctl enxio 8346628Smckusick #define vxstop enxio 8446628Smckusick #define vxreset nullop 8524042Ssam #define vx_tty 0 8624042Ssam #else 8724042Ssam int vxopen(),vxclose(),vxread(),vxwrite(),vxioctl(),vxstop(),vxreset(); 8824042Ssam struct tty vx_tty[]; 8924042Ssam #endif 9024042Ssam 91*49444Skarels int cttyopen(),cttyread(),cttywrite(),cttyioctl(),cttyselect(); 9224042Ssam 9337746Smckusick int mmrw(); 9424042Ssam #define mmselect seltrue 9524042Ssam 9624042Ssam #include "pty.h" 9724042Ssam #if NPTY > 0 9824042Ssam int ptsopen(),ptsclose(),ptsread(),ptswrite(),ptsstop(); 9924042Ssam int ptcopen(),ptcclose(),ptcread(),ptcwrite(),ptcselect(); 10024042Ssam int ptyioctl(); 10124042Ssam struct tty pt_tty[]; 10224042Ssam #else 10346628Smckusick #define ptsopen enxio 10446628Smckusick #define ptsclose enxio 10546628Smckusick #define ptsread enxio 10646628Smckusick #define ptswrite enxio 10746628Smckusick #define ptcopen enxio 10846628Smckusick #define ptcclose enxio 10946628Smckusick #define ptcread enxio 11046628Smckusick #define ptcwrite enxio 11146628Smckusick #define ptyioctl enxio 11224042Ssam #define pt_tty 0 11346628Smckusick #define ptcselect enxio 11446628Smckusick #define ptsstop nullop 11524042Ssam #endif 11624042Ssam 11734495Skarels #include "mp.h" 11832634Ssam #if NMP > 0 11932634Ssam int mpopen(), mpclose(), mpread(), mpwrite(), mpioctl(), mpstop(); 12032634Ssam int mpdlopen(), mpdlclose(), mpdlwrite(), mpdlioctl(); 12132634Ssam extern struct tty mp_tty[]; 12224042Ssam #else 12346628Smckusick #define mpopen enxio 12446628Smckusick #define mpclose enxio 12546628Smckusick #define mpread enxio 12646628Smckusick #define mpwrite enxio 12746628Smckusick #define mpioctl enxio 12846628Smckusick #define mpstop enxio 12946628Smckusick #define mpdlopen enxio 13046628Smckusick #define mpdlclose enxio 13146628Smckusick #define mpdlwrite enxio 13246628Smckusick #define mpdlioctl enxio 13332634Ssam #define mp_tty 0 13424042Ssam #endif 13524042Ssam 13624042Ssam #if NII > 0 13724042Ssam int iiioctl(), iiclose(), iiopen(); 13824042Ssam #else 13946628Smckusick #define iiopen enxio 14046628Smckusick #define iiclose enxio 14146628Smckusick #define iiioctl enxio 14224042Ssam #endif 14324042Ssam 14430173Ssam #include "enp.h" 14530173Ssam #if NENP > 0 14630173Ssam int enpr_open(), enpr_close(), enpr_read(), enpr_write(), enpr_ioctl(); 14730173Ssam #else 14846628Smckusick #define enpr_open enxio 14946628Smckusick #define enpr_close enxio 15046628Smckusick #define enpr_read enxio 15146628Smckusick #define enpr_write enxio 15246628Smckusick #define enpr_ioctl enxio 15330173Ssam #endif 15430173Ssam 15530173Ssam #include "dr.h" 15630173Ssam #if NDR > 0 15730173Ssam int dropen(),drclose(),drread(),drwrite(),drioctl(),drreset(); 15830173Ssam #else 15946628Smckusick #define dropen enxio 16046628Smckusick #define drclose enxio 16146628Smckusick #define drread enxio 16246628Smckusick #define drwrite enxio 16346628Smckusick #define drioctl enxio 16446628Smckusick #define drreset enxio 16530173Ssam #endif 16630173Ssam 16730173Ssam #include "ik.h" 16830173Ssam #if NIK > 0 16930173Ssam int ikopen(),ikclose(),ikread(),ikwrite(),ikioctl(); 17030173Ssam #else 17146628Smckusick #define ikopen enxio 17246628Smckusick #define ikclose enxio 17346628Smckusick #define ikread enxio 17446628Smckusick #define ikwrite enxio 17546628Smckusick #define ikioctl enxio 17630173Ssam #endif 17730173Ssam 17825678Ssam int logopen(),logclose(),logread(),logioctl(),logselect(); 17925678Ssam 18037569Sbostic int fdopen(); 18137569Sbostic 18224042Ssam int ttselect(), seltrue(); 18324042Ssam 18424042Ssam struct cdevsw cdevsw[] = 18524042Ssam { 186*49444Skarels { cnopen, cnclose, cnread, cnwrite, /*0*/ 187*49444Skarels cnioctl, nullop, nullop, &cons, 188*49444Skarels ttselect, enodev, NULL }, 189*49444Skarels { vxopen, vxclose, vxread, vxwrite, /*1*/ 190*49444Skarels vxioctl, vxstop, vxreset, vx_tty, 191*49444Skarels ttselect, enodev, NULL }, 192*49444Skarels { cttyopen, nullop, cttyread, cttywrite, /*2*/ 193*49444Skarels cttyioctl, nullop, nullop, NULL, 194*49444Skarels cttyselect, enodev, NULL }, 195*49444Skarels { nullop, nullop, mmrw, mmrw, /*3*/ 196*49444Skarels enodev, nullop, nullop, NULL, 197*49444Skarels mmselect, enodev, NULL }, 198*49444Skarels { enodev, nullop, enodev, enodev, /*4*/ 199*49444Skarels enodev, enodev, nullop, NULL, 200*49444Skarels seltrue, enodev, NULL }, 201*49444Skarels { vdopen, vdclose, rawread, rawwrite, /*5*/ 202*49444Skarels vdioctl, enodev, nullop, NULL, 203*49444Skarels seltrue, enodev, vdstrategy }, 204*49444Skarels { hdopen, hdclose, rawread, rawwrite, /*6*/ 205*49444Skarels hdioctl, enodev, nullop, NULL, 206*49444Skarels seltrue, enodev, hdstrategy }, 207*49444Skarels { cyopen, cyclose, rawread, rawwrite, /*7*/ 208*49444Skarels cyioctl, enodev, cyreset, NULL, 209*49444Skarels seltrue, enodev, cystrategy }, 210*49444Skarels { nullop, nullop, rawread, rawwrite, /*8*/ 211*49444Skarels enodev, enodev, nullop, NULL, 212*49444Skarels enodev, enodev, swstrategy }, 213*49444Skarels { ptsopen, ptsclose, ptsread, ptswrite, /*9*/ 214*49444Skarels ptyioctl, ptsstop, enodev, pt_tty, 215*49444Skarels ttselect, enodev, NULL }, 216*49444Skarels { ptcopen, ptcclose, ptcread, ptcwrite, /*10*/ 217*49444Skarels ptyioctl, nullop, enodev, pt_tty, 218*49444Skarels ptcselect, enodev, NULL }, 219*49444Skarels { mpdlopen, mpdlclose, enodev, mpdlwrite, /*11*/ 220*49444Skarels mpdlioctl, enodev, nullop, NULL, 221*49444Skarels seltrue, enodev, NULL }, 222*49444Skarels { mpopen, mpclose, mpread, mpwrite, /*12*/ 223*49444Skarels mpioctl, mpstop, nullop, mp_tty, 224*49444Skarels ttselect, enodev, NULL }, 225*49444Skarels { enodev, enodev, enodev, enodev, /*13*/ 226*49444Skarels enodev, enodev, nullop, NULL, 227*49444Skarels enodev, enodev, NULL }, 228*49444Skarels { iiopen, iiclose, nullop, nullop, /*14*/ 229*49444Skarels iiioctl, nullop, nullop, NULL, 230*49444Skarels seltrue, enodev, NULL }, 231*49444Skarels { logopen, logclose, logread, enodev, /*15*/ 232*49444Skarels logioctl, enodev, nullop, NULL, 233*49444Skarels logselect, enodev, NULL }, 234*49444Skarels { enpr_open, enpr_close, enpr_read, enpr_write, /*16*/ 235*49444Skarels enpr_ioctl, enodev, nullop, NULL, 236*49444Skarels enodev, enodev, NULL }, 237*49444Skarels { enodev, enodev, enodev, enodev, /*17*/ 238*49444Skarels enodev, enodev, nullop, NULL, 239*49444Skarels enodev, enodev, NULL }, 240*49444Skarels { dropen, drclose, drread, drwrite, /*18*/ 241*49444Skarels drioctl, enodev, drreset, NULL, 242*49444Skarels enodev, enodev, NULL }, 243*49444Skarels { fdopen, enodev, enodev, enodev, /*19*/ 244*49444Skarels enodev, enodev, enodev, NULL, 245*49444Skarels enodev, enodev, NULL }, 24630173Ssam /* 20-30 are reserved for local use */ 247*49444Skarels { ikopen, ikclose, ikread, ikwrite, /*20*/ 248*49444Skarels ikioctl, enodev, nullop, NULL, 249*49444Skarels enodev, enodev, NULL }, 250*49444Skarels { fdopen, enodev, enodev, enodev, /*21*/ 251*49444Skarels enodev, enodev, enodev, NULL, 252*49444Skarels enodev, enodev, NULL }, 25324042Ssam }; 25424042Ssam int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]); 25524042Ssam 25624042Ssam int mem_no = 3; /* major device number of memory special file */ 25724042Ssam 25824042Ssam /* 25924042Ssam * Swapdev is a fake device implemented 26024042Ssam * in sw.c used only internally to get to swstrategy. 26124042Ssam * It cannot be provided to the users, because the 26224042Ssam * swstrategy routine munches the b_dev and b_blkno entries 26324042Ssam * before calling the appropriate driver. This would horribly 26424042Ssam * confuse, e.g. the hashing routines. Instead, /dev/drum is 26524042Ssam * provided as a character (raw) device. 26624042Ssam */ 26724042Ssam dev_t swapdev = makedev(4, 0); 268