141475Smckusick /* 241475Smckusick * Copyright (c) 1982, 1990 Regents of the University of California. 341475Smckusick * All rights reserved. 441475Smckusick * 541475Smckusick * %sccs.include.redist.c% 641475Smckusick * 7*47581Skarels * @(#)conf.c 7.4 (Berkeley) 03/19/91 841475Smckusick */ 941475Smckusick 1045788Sbostic #include "sys/param.h" 1145788Sbostic #include "sys/systm.h" 1245788Sbostic #include "sys/buf.h" 1345788Sbostic #include "sys/ioctl.h" 1445788Sbostic #include "sys/tty.h" 1545788Sbostic #include "sys/conf.h" 1641475Smckusick 17*47581Skarels int nullop(), enxio(), enodev(), rawread(), rawwrite(), swstrategy(); 1841475Smckusick 1941475Smckusick #include "ct.h" 2041475Smckusick #if NCT > 0 2141475Smckusick int ctopen(),ctclose(),ctstrategy(),ctread(),ctwrite(),ctdump(),ctioctl(); 2241475Smckusick #else 23*47581Skarels #define ctopen enxio 24*47581Skarels #define ctclose enxio 25*47581Skarels #define ctstrategy enxio 26*47581Skarels #define ctread enxio 27*47581Skarels #define ctwrite enxio 28*47581Skarels #define ctdump enxio 29*47581Skarels #define ctioctl enxio 3041475Smckusick #endif 3141475Smckusick 3241475Smckusick #include "rd.h" 3341475Smckusick #if NRD > 0 3441475Smckusick int rdopen(),rdstrategy(),rdread(),rdwrite(),rddump(),rdioctl(),rdsize(); 3541475Smckusick #else 36*47581Skarels #define rdopen enxio 37*47581Skarels #define rdstrategy enxio 38*47581Skarels #define rdread enxio 39*47581Skarels #define rdwrite enxio 40*47581Skarels #define rddump enxio 41*47581Skarels #define rdioctl enxio 4241475Smckusick #define rdsize 0 4341475Smckusick #endif 4441475Smckusick 4541475Smckusick #include "sd.h" 4641475Smckusick #if NSD > 0 4741475Smckusick int sdopen(),sdstrategy(),sdread(),sdwrite(),sddump(),sdioctl(),sdsize(); 4841475Smckusick #else 49*47581Skarels #define sdopen enxio 50*47581Skarels #define sdstrategy enxio 51*47581Skarels #define sdread enxio 52*47581Skarels #define sdwrite enxio 53*47581Skarels #define sddump enxio 54*47581Skarels #define sdioctl enxio 5541475Smckusick #define sdsize 0 5641475Smckusick #endif 5741475Smckusick 5841475Smckusick #include "cd.h" 5941475Smckusick #if NCD > 0 6041475Smckusick int cdopen(),cdstrategy(),cdread(),cdwrite(),cddump(),cdioctl(),cdsize(); 6141475Smckusick #else 62*47581Skarels #define cdopen enxio 63*47581Skarels #define cdstrategy enxio 64*47581Skarels #define cdread enxio 65*47581Skarels #define cdwrite enxio 66*47581Skarels #define cddump enxio 67*47581Skarels #define cdioctl enxio 6841475Smckusick #define cdsize 0 6941475Smckusick #endif 7041475Smckusick 7141475Smckusick struct bdevsw bdevsw[] = 7241475Smckusick { 7341475Smckusick { ctopen, ctclose, ctstrategy, ctioctl, /*0*/ 7441475Smckusick ctdump, 0, B_TAPE }, 75*47581Skarels { enxio, enxio, enxio, enxio, /*1*/ 76*47581Skarels enxio, 0, 0 }, 77*47581Skarels { rdopen, nullop, rdstrategy, rdioctl, /*2*/ 7841475Smckusick rddump, rdsize, 0 }, 79*47581Skarels { enodev, enodev, swstrategy, enodev, /*3*/ 80*47581Skarels enodev, 0, 0 }, 81*47581Skarels { sdopen, nullop, sdstrategy, sdioctl, /*4*/ 8241475Smckusick sddump, sdsize, 0 }, 83*47581Skarels { cdopen, nullop, cdstrategy, cdioctl, /*5*/ 8441475Smckusick cddump, cdsize, 0 }, 85*47581Skarels /* 6 was "fd" vnode device */ 8641475Smckusick }; 8741475Smckusick int nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]); 8841475Smckusick 89*47581Skarels int cnopen(), cnclose(), cnread(), cnwrite(), cnioctl(), cnselect(); 9041475Smckusick 91*47581Skarels int cttyopen(), cttyread(), cttywrite(), cttyioctl(), cttyselect(); 9241475Smckusick 9341475Smckusick int mmrw(); 9441475Smckusick #define mmselect seltrue 9541475Smckusick 9641475Smckusick #include "pty.h" 9741475Smckusick #if NPTY > 0 9841475Smckusick int ptsopen(),ptsclose(),ptsread(),ptswrite(),ptsstop(); 9941475Smckusick int ptcopen(),ptcclose(),ptcread(),ptcwrite(),ptcselect(); 10041475Smckusick int ptyioctl(); 10141475Smckusick struct tty pt_tty[]; 10241475Smckusick #else 103*47581Skarels #define ptsopen enxio 104*47581Skarels #define ptsclose enxio 105*47581Skarels #define ptsread enxio 106*47581Skarels #define ptswrite enxio 107*47581Skarels #define ptcopen enxio 108*47581Skarels #define ptcclose enxio 109*47581Skarels #define ptcread enxio 110*47581Skarels #define ptcwrite enxio 111*47581Skarels #define ptyioctl enxio 11241475Smckusick #define pt_tty 0 113*47581Skarels #define ptcselect enxio 114*47581Skarels #define ptsstop nullop 11541475Smckusick #endif 11641475Smckusick 11741475Smckusick #include "ppi.h" 11841475Smckusick #if NPPI > 0 11945751Smckusick int ppiopen(),ppiclose(),ppiread(),ppiwrite(),ppiioctl(); 12041475Smckusick #else 121*47581Skarels #define ppiopen enxio 122*47581Skarels #define ppiclose enxio 123*47581Skarels #define ppiread enxio 124*47581Skarels #define ppiwrite enxio 125*47581Skarels #define ppiioctl enxio 12641475Smckusick #endif 12741475Smckusick 12841475Smckusick #include "ite.h" 12941475Smckusick #if NITE > 0 13041475Smckusick int iteopen(),iteclose(),iteread(),itewrite(),iteioctl(); 13141475Smckusick struct tty ite_tty[]; 13241475Smckusick #else 133*47581Skarels #define iteopen enxio 134*47581Skarels #define iteclose enxio 135*47581Skarels #define iteread enxio 136*47581Skarels #define itewrite enxio 137*47581Skarels #define itestop nullop 138*47581Skarels #define iteioctl enxio 13941475Smckusick #define ite_tty 0 14041475Smckusick #endif 14141475Smckusick 14241475Smckusick #include "dca.h" 14341475Smckusick #if NDCA > 0 14441475Smckusick int dcaopen(),dcaclose(),dcaread(),dcawrite(),dcastop(),dcaioctl(); 14541475Smckusick struct tty dca_tty[]; 14641475Smckusick #else 147*47581Skarels #define dcaopen enxio 148*47581Skarels #define dcaclose enxio 149*47581Skarels #define dcaread enxio 150*47581Skarels #define dcawrite enxio 151*47581Skarels #define dcastop nullop 152*47581Skarels #define dcaioctl enxio 15341475Smckusick #define dca_tty 0 15441475Smckusick #endif 15541475Smckusick 15641475Smckusick #include "dcm.h" 15741475Smckusick #if NDCM > 0 15841475Smckusick int dcmopen(),dcmclose(),dcmread(),dcmwrite(),dcmstop(),dcmioctl(); 15941475Smckusick struct tty dcm_tty[]; 16041475Smckusick #else 161*47581Skarels #define dcmopen enxio 162*47581Skarels #define dcmclose enxio 163*47581Skarels #define dcmread enxio 164*47581Skarels #define dcmwrite enxio 165*47581Skarels #define dcmstop nullop 166*47581Skarels #define dcmioctl enxio 16741475Smckusick #define dcm_tty 0 16841475Smckusick #endif 16941475Smckusick 17041475Smckusick #include "clock.h" 17141475Smckusick #if NCLOCK > 0 17241475Smckusick int clockopen(),clockclose(),clockioctl(),clockmap(); 17341475Smckusick #else 174*47581Skarels #define clockopen enxio 175*47581Skarels #define clockclose enxio 176*47581Skarels #define clockioctl enxio 177*47581Skarels #define clockmap enxio 17841475Smckusick #endif 17941475Smckusick 18041475Smckusick int logopen(),logclose(),logread(),logioctl(),logselect(); 18141475Smckusick 182*47581Skarels int fdopen(); 183*47581Skarels 18441475Smckusick int ttselect(), seltrue(); 18541475Smckusick 18641475Smckusick int grfopen(),grfclose(),grfioctl(),grfselect(),grfmap(); 18741475Smckusick 18841475Smckusick int hilopen(),hilclose(),hilioctl(),hilmap(),hilselect(),hilread(); 18941475Smckusick 19041475Smckusick struct cdevsw cdevsw[] = 19141475Smckusick { 192*47581Skarels { cnopen, cnclose, cnread, cnwrite, /*0*/ 193*47581Skarels cnioctl, nullop, nullop, NULL, 194*47581Skarels cnselect, enodev, NULL }, 195*47581Skarels { cttyopen, nullop, cttyread, cttywrite, /*1*/ 196*47581Skarels cttyioctl, nullop, nullop, NULL, 197*47581Skarels cttyselect, enodev, NULL }, 198*47581Skarels { nullop, nullop, mmrw, mmrw, /*2*/ 199*47581Skarels enodev, nullop, nullop, NULL, 200*47581Skarels mmselect, enodev, NULL }, 201*47581Skarels { nullop, nullop, rawread, rawwrite, /*3*/ 202*47581Skarels enodev, enodev, nullop, NULL, 203*47581Skarels enodev, enodev, swstrategy }, 204*47581Skarels { ptsopen, ptsclose, ptsread, ptswrite, /*4*/ 205*47581Skarels ptyioctl, ptsstop, nullop, pt_tty, 206*47581Skarels ttselect, enodev, NULL }, 207*47581Skarels { ptcopen, ptcclose, ptcread, ptcwrite, /*5*/ 208*47581Skarels ptyioctl, nullop, nullop, pt_tty, 209*47581Skarels ptcselect, enodev, NULL }, 210*47581Skarels { logopen, logclose, logread, enodev, /*6*/ 211*47581Skarels logioctl, enodev, nullop, NULL, 212*47581Skarels logselect, enodev, NULL }, 213*47581Skarels { ctopen, ctclose, ctread, ctwrite, /*7*/ 214*47581Skarels ctioctl, enodev, nullop, NULL, 215*47581Skarels seltrue, enodev, ctstrategy }, 216*47581Skarels { sdopen, nullop, sdread, sdwrite, /*8*/ 217*47581Skarels sdioctl, enodev, nullop, NULL, 218*47581Skarels seltrue, enodev, sdstrategy }, 219*47581Skarels { rdopen, nullop, rdread, rdwrite, /*9*/ 220*47581Skarels rdioctl, enodev, nullop, NULL, 221*47581Skarels seltrue, enodev, rdstrategy }, 222*47581Skarels { grfopen, grfclose, nullop, nullop, /*10*/ 223*47581Skarels grfioctl, enodev, nullop, NULL, 224*47581Skarels grfselect, grfmap, NULL }, 225*47581Skarels { ppiopen, ppiclose, ppiread, ppiwrite, /*11*/ 226*47581Skarels ppiioctl, enodev, nullop, NULL, 227*47581Skarels enodev, enodev, NULL }, 228*47581Skarels { dcaopen, dcaclose, dcaread, dcawrite, /*12*/ 229*47581Skarels dcaioctl, dcastop, nullop, dca_tty, 230*47581Skarels ttselect, enodev, NULL }, 231*47581Skarels { iteopen, iteclose, iteread, itewrite, /*13*/ 232*47581Skarels iteioctl, enodev, nullop, ite_tty, 233*47581Skarels ttselect, enodev, NULL }, 234*47581Skarels { hilopen, hilclose, hilread, nullop, /*14*/ 235*47581Skarels hilioctl, enodev, nullop, NULL, 236*47581Skarels hilselect, hilmap, NULL }, 237*47581Skarels { dcmopen, dcmclose, dcmread, dcmwrite, /*15*/ 238*47581Skarels dcmioctl, dcmstop, nullop, dcm_tty, 239*47581Skarels ttselect, enodev, NULL }, 240*47581Skarels { enodev, enodev, enodev, enodev, /*16*/ 241*47581Skarels enodev, enodev, nullop, NULL, 242*47581Skarels seltrue, enodev, NULL }, 243*47581Skarels { cdopen, nullop, cdread, cdwrite, /*17*/ 244*47581Skarels cdioctl, enodev, nullop, NULL, 245*47581Skarels seltrue, enodev, cdstrategy }, 246*47581Skarels { clockopen, clockclose, nullop, nullop, /*18*/ 247*47581Skarels clockioctl, enodev, nullop, NULL, 248*47581Skarels nullop, clockmap, NULL }, 249*47581Skarels #ifdef notdef 250*47581Skarels { fdopen, nullop, fdread, fdwrite, /*19*/ 251*47581Skarels fdioctl, enodev, nullop, NULL, 252*47581Skarels seltrue, enodev, NULL }, 253*47581Skarels #else 254*47581Skarels { enodev, enodev, enodev, enodev, /*19*/ 255*47581Skarels enodev, enodev, nullop, NULL, 256*47581Skarels seltrue, enodev, NULL }, 257*47581Skarels #endif 258*47581Skarels { enodev, enodev, enodev, enodev, /*20*/ 259*47581Skarels enodev, enodev, nullop, NULL, 260*47581Skarels seltrue, enodev, NULL }, 261*47581Skarels { fdopen, enodev, enodev, enodev, /*21*/ 262*47581Skarels enodev, enodev, enodev, NULL, 263*47581Skarels enodev, enodev, NULL }, 26441475Smckusick }; 26541475Smckusick int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]); 26641475Smckusick 26741475Smckusick int mem_no = 2; /* major device number of memory special file */ 26841475Smckusick 26941475Smckusick /* 27041475Smckusick * Swapdev is a fake device implemented 27141475Smckusick * in sw.c used only internally to get to swstrategy. 27241475Smckusick * It cannot be provided to the users, because the 27341475Smckusick * swstrategy routine munches the b_dev and b_blkno entries 27441475Smckusick * before calling the appropriate driver. This would horribly 27541475Smckusick * confuse, e.g. the hashing routines. Instead, /dev/drum is 27641475Smckusick * provided as a character (raw) device. 27741475Smckusick */ 27841475Smckusick dev_t swapdev = makedev(3, 0); 279