1*41475Smckusick /* 2*41475Smckusick * Copyright (c) 1982, 1990 Regents of the University of California. 3*41475Smckusick * All rights reserved. 4*41475Smckusick * 5*41475Smckusick * %sccs.include.redist.c% 6*41475Smckusick * 7*41475Smckusick * @(#)conf.c 7.1 (Berkeley) 05/08/90 8*41475Smckusick */ 9*41475Smckusick 10*41475Smckusick #include "param.h" 11*41475Smckusick #include "systm.h" 12*41475Smckusick #include "buf.h" 13*41475Smckusick #include "ioctl.h" 14*41475Smckusick #include "tty.h" 15*41475Smckusick #include "conf.h" 16*41475Smckusick 17*41475Smckusick int nulldev(), nodev(), rawread(), rawwrite(), swstrategy(); 18*41475Smckusick 19*41475Smckusick #include "ct.h" 20*41475Smckusick #if NCT > 0 21*41475Smckusick int ctopen(),ctclose(),ctstrategy(),ctread(),ctwrite(),ctdump(),ctioctl(); 22*41475Smckusick #else 23*41475Smckusick #define ctopen nodev 24*41475Smckusick #define ctclose nodev 25*41475Smckusick #define ctstrategy nodev 26*41475Smckusick #define ctread nodev 27*41475Smckusick #define ctwrite nodev 28*41475Smckusick #define ctdump nodev 29*41475Smckusick #define ctioctl nodev 30*41475Smckusick #endif 31*41475Smckusick 32*41475Smckusick #include "rd.h" 33*41475Smckusick #if NRD > 0 34*41475Smckusick int rdopen(),rdstrategy(),rdread(),rdwrite(),rddump(),rdioctl(),rdsize(); 35*41475Smckusick #else 36*41475Smckusick #define rdopen nodev 37*41475Smckusick #define rdstrategy nodev 38*41475Smckusick #define rdread nodev 39*41475Smckusick #define rdwrite nodev 40*41475Smckusick #define rddump nodev 41*41475Smckusick #define rdioctl nodev 42*41475Smckusick #define rdsize 0 43*41475Smckusick #endif 44*41475Smckusick 45*41475Smckusick #include "sd.h" 46*41475Smckusick #if NSD > 0 47*41475Smckusick int sdopen(),sdstrategy(),sdread(),sdwrite(),sddump(),sdioctl(),sdsize(); 48*41475Smckusick #else 49*41475Smckusick #define sdopen nodev 50*41475Smckusick #define sdstrategy nodev 51*41475Smckusick #define sdread nodev 52*41475Smckusick #define sdwrite nodev 53*41475Smckusick #define sddump nodev 54*41475Smckusick #define sdioctl nodev 55*41475Smckusick #define sdsize 0 56*41475Smckusick #endif 57*41475Smckusick 58*41475Smckusick #include "cd.h" 59*41475Smckusick #if NCD > 0 60*41475Smckusick int cdopen(),cdstrategy(),cdread(),cdwrite(),cddump(),cdioctl(),cdsize(); 61*41475Smckusick #else 62*41475Smckusick #define cdopen nodev 63*41475Smckusick #define cdstrategy nodev 64*41475Smckusick #define cdread nodev 65*41475Smckusick #define cdwrite nodev 66*41475Smckusick #define cddump nodev 67*41475Smckusick #define cdioctl nodev 68*41475Smckusick #define cdsize 0 69*41475Smckusick #endif 70*41475Smckusick 71*41475Smckusick #include "fd.h" 72*41475Smckusick #if NFD > 0 73*41475Smckusick int fdopen(),fdstrategy(),fdread(),fdwrite(),fddump(),fdioctl(),fdsize(); 74*41475Smckusick #else 75*41475Smckusick #define fdopen nodev 76*41475Smckusick #define fdstrategy nodev 77*41475Smckusick #define fdread nodev 78*41475Smckusick #define fdwrite nodev 79*41475Smckusick #define fddump nodev 80*41475Smckusick #define fdioctl nodev 81*41475Smckusick #define fdsize 0 82*41475Smckusick #endif 83*41475Smckusick 84*41475Smckusick struct bdevsw bdevsw[] = 85*41475Smckusick { 86*41475Smckusick { ctopen, ctclose, ctstrategy, ctioctl, /*0*/ 87*41475Smckusick ctdump, 0, B_TAPE }, 88*41475Smckusick { nodev, nodev, nodev, nodev, /*1*/ 89*41475Smckusick nodev, 0, 0 }, 90*41475Smckusick { rdopen, nulldev, rdstrategy, rdioctl, /*2*/ 91*41475Smckusick rddump, rdsize, 0 }, 92*41475Smckusick { nodev, nodev, swstrategy, nodev, /*3*/ 93*41475Smckusick nodev, 0, 0 }, 94*41475Smckusick { sdopen, nulldev, sdstrategy, sdioctl, /*4*/ 95*41475Smckusick sddump, sdsize, 0 }, 96*41475Smckusick { cdopen, nulldev, cdstrategy, cdioctl, /*5*/ 97*41475Smckusick cddump, cdsize, 0 }, 98*41475Smckusick { fdopen, nulldev, fdstrategy, fdioctl, /*6*/ 99*41475Smckusick fddump, fdsize, 0 }, 100*41475Smckusick }; 101*41475Smckusick int nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]); 102*41475Smckusick 103*41475Smckusick int cnopen(),cnclose(),cnread(),cnwrite(),cnioctl(),cnselect(); 104*41475Smckusick 105*41475Smckusick int syopen(),syread(),sywrite(),syioctl(),syselect(); 106*41475Smckusick 107*41475Smckusick int mmrw(); 108*41475Smckusick #define mmselect seltrue 109*41475Smckusick 110*41475Smckusick #include "pty.h" 111*41475Smckusick #if NPTY > 0 112*41475Smckusick int ptsopen(),ptsclose(),ptsread(),ptswrite(),ptsstop(); 113*41475Smckusick int ptcopen(),ptcclose(),ptcread(),ptcwrite(),ptcselect(); 114*41475Smckusick int ptyioctl(); 115*41475Smckusick struct tty pt_tty[]; 116*41475Smckusick #else 117*41475Smckusick #define ptsopen nodev 118*41475Smckusick #define ptsclose nodev 119*41475Smckusick #define ptsread nodev 120*41475Smckusick #define ptswrite nodev 121*41475Smckusick #define ptcopen nodev 122*41475Smckusick #define ptcclose nodev 123*41475Smckusick #define ptcread nodev 124*41475Smckusick #define ptcwrite nodev 125*41475Smckusick #define ptyioctl nodev 126*41475Smckusick #define pt_tty 0 127*41475Smckusick #define ptcselect nodev 128*41475Smckusick #define ptsstop nulldev 129*41475Smckusick #endif 130*41475Smckusick 131*41475Smckusick #include "ppi.h" 132*41475Smckusick #if NPPI > 0 133*41475Smckusick int ppiopen(),ppiclose(),ppiread(),ppiwrite(); 134*41475Smckusick #else 135*41475Smckusick #define ppiopen nodev 136*41475Smckusick #define ppiclose nodev 137*41475Smckusick #define ppiread nodev 138*41475Smckusick #define ppiwrite nodev 139*41475Smckusick #endif 140*41475Smckusick 141*41475Smckusick #include "ite.h" 142*41475Smckusick #if NITE > 0 143*41475Smckusick int iteopen(),iteclose(),iteread(),itewrite(),iteioctl(); 144*41475Smckusick struct tty ite_tty[]; 145*41475Smckusick #else 146*41475Smckusick #define iteopen nodev 147*41475Smckusick #define iteclose nodev 148*41475Smckusick #define iteread nodev 149*41475Smckusick #define itewrite nodev 150*41475Smckusick #define itestop nulldev 151*41475Smckusick #define iteioctl nodev 152*41475Smckusick #define ite_tty 0 153*41475Smckusick #endif 154*41475Smckusick 155*41475Smckusick #include "dca.h" 156*41475Smckusick #if NDCA > 0 157*41475Smckusick int dcaopen(),dcaclose(),dcaread(),dcawrite(),dcastop(),dcaioctl(); 158*41475Smckusick struct tty dca_tty[]; 159*41475Smckusick #else 160*41475Smckusick #define dcaopen nodev 161*41475Smckusick #define dcaclose nodev 162*41475Smckusick #define dcaread nodev 163*41475Smckusick #define dcawrite nodev 164*41475Smckusick #define dcastop nulldev 165*41475Smckusick #define dcaioctl nodev 166*41475Smckusick #define dca_tty 0 167*41475Smckusick #endif 168*41475Smckusick 169*41475Smckusick #include "dcm.h" 170*41475Smckusick #if NDCM > 0 171*41475Smckusick int dcmopen(),dcmclose(),dcmread(),dcmwrite(),dcmstop(),dcmioctl(); 172*41475Smckusick struct tty dcm_tty[]; 173*41475Smckusick #else 174*41475Smckusick #define dcmopen nodev 175*41475Smckusick #define dcmclose nodev 176*41475Smckusick #define dcmread nodev 177*41475Smckusick #define dcmwrite nodev 178*41475Smckusick #define dcmstop nulldev 179*41475Smckusick #define dcmioctl nodev 180*41475Smckusick #define dcm_tty 0 181*41475Smckusick #endif 182*41475Smckusick 183*41475Smckusick #include "clock.h" 184*41475Smckusick #if NCLOCK > 0 185*41475Smckusick int clockopen(),clockclose(),clockioctl(),clockmap(); 186*41475Smckusick #else 187*41475Smckusick #define clockopen nodev 188*41475Smckusick #define clockclose nodev 189*41475Smckusick #define clockioctl nodev 190*41475Smckusick #define clockmap nodev 191*41475Smckusick #endif 192*41475Smckusick 193*41475Smckusick int logopen(),logclose(),logread(),logioctl(),logselect(); 194*41475Smckusick 195*41475Smckusick int ttselect(), seltrue(); 196*41475Smckusick 197*41475Smckusick int grfopen(),grfclose(),grfioctl(),grfselect(),grfmap(); 198*41475Smckusick 199*41475Smckusick int hilopen(),hilclose(),hilioctl(),hilmap(),hilselect(),hilread(); 200*41475Smckusick 201*41475Smckusick struct cdevsw cdevsw[] = 202*41475Smckusick { 203*41475Smckusick cnopen, cnclose, cnread, cnwrite, /*0*/ 204*41475Smckusick cnioctl, nulldev, nulldev, NULL, 205*41475Smckusick cnselect, nodev, NULL, 206*41475Smckusick syopen, nulldev, syread, sywrite, /*1*/ 207*41475Smckusick syioctl, nulldev, nulldev, NULL, 208*41475Smckusick syselect, nodev, NULL, 209*41475Smckusick nulldev, nulldev, mmrw, mmrw, /*2*/ 210*41475Smckusick nodev, nulldev, nulldev, NULL, 211*41475Smckusick mmselect, nodev, NULL, 212*41475Smckusick nulldev, nulldev, rawread, rawwrite, /*3*/ 213*41475Smckusick nodev, nodev, nulldev, NULL, 214*41475Smckusick nodev, nodev, swstrategy, 215*41475Smckusick ptsopen, ptsclose, ptsread, ptswrite, /*4*/ 216*41475Smckusick ptyioctl, ptsstop, nulldev, pt_tty, 217*41475Smckusick ttselect, nodev, NULL, 218*41475Smckusick ptcopen, ptcclose, ptcread, ptcwrite, /*5*/ 219*41475Smckusick ptyioctl, nulldev, nulldev, pt_tty, 220*41475Smckusick ptcselect, nodev, NULL, 221*41475Smckusick logopen, logclose, logread, nodev, /*6*/ 222*41475Smckusick logioctl, nodev, nulldev, NULL, 223*41475Smckusick logselect, nodev, NULL, 224*41475Smckusick ctopen, ctclose, ctread, ctwrite, /*7*/ 225*41475Smckusick ctioctl, nodev, nulldev, NULL, 226*41475Smckusick seltrue, nodev, ctstrategy, 227*41475Smckusick sdopen, nulldev, sdread, sdwrite, /*8*/ 228*41475Smckusick sdioctl, nodev, nulldev, NULL, 229*41475Smckusick seltrue, nodev, sdstrategy, 230*41475Smckusick rdopen, nulldev, rdread, rdwrite, /*9*/ 231*41475Smckusick rdioctl, nodev, nulldev, NULL, 232*41475Smckusick seltrue, nodev, rdstrategy, 233*41475Smckusick grfopen, grfclose, nulldev, nulldev, /*10*/ 234*41475Smckusick grfioctl, nodev, nulldev, NULL, 235*41475Smckusick grfselect, grfmap, NULL, 236*41475Smckusick ppiopen, ppiclose, ppiread, ppiwrite, /*11*/ 237*41475Smckusick nodev, nodev, nulldev, NULL, 238*41475Smckusick nodev, nodev, NULL, 239*41475Smckusick dcaopen, dcaclose, dcaread, dcawrite, /*12*/ 240*41475Smckusick dcaioctl, dcastop, nulldev, dca_tty, 241*41475Smckusick ttselect, nodev, NULL, 242*41475Smckusick iteopen, iteclose, iteread, itewrite, /*13*/ 243*41475Smckusick iteioctl, nodev, nulldev, ite_tty, 244*41475Smckusick ttselect, nodev, NULL, 245*41475Smckusick hilopen, hilclose, hilread, nulldev, /*14*/ 246*41475Smckusick hilioctl, nodev, nulldev, NULL, 247*41475Smckusick hilselect, hilmap, NULL, 248*41475Smckusick dcmopen, dcmclose, dcmread, dcmwrite, /*15*/ 249*41475Smckusick dcmioctl, dcmstop, nulldev, dcm_tty, 250*41475Smckusick ttselect, nodev, NULL, 251*41475Smckusick nodev, nodev, nodev, nodev, /*16*/ 252*41475Smckusick nodev, nodev, nulldev, NULL, 253*41475Smckusick seltrue, nodev, NULL, 254*41475Smckusick cdopen, nulldev, cdread, cdwrite, /*17*/ 255*41475Smckusick cdioctl, nodev, nulldev, NULL, 256*41475Smckusick seltrue, nodev, cdstrategy, 257*41475Smckusick clockopen, clockclose, nulldev, nulldev, /*18*/ 258*41475Smckusick clockioctl, nodev, nulldev, NULL, 259*41475Smckusick nulldev, clockmap, NULL, 260*41475Smckusick fdopen, nulldev, fdread, fdwrite, /*19*/ 261*41475Smckusick fdioctl, nodev, nulldev, NULL, 262*41475Smckusick seltrue, nodev, NULL, 263*41475Smckusick }; 264*41475Smckusick int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]); 265*41475Smckusick 266*41475Smckusick int mem_no = 2; /* major device number of memory special file */ 267*41475Smckusick 268*41475Smckusick /* 269*41475Smckusick * Swapdev is a fake device implemented 270*41475Smckusick * in sw.c used only internally to get to swstrategy. 271*41475Smckusick * It cannot be provided to the users, because the 272*41475Smckusick * swstrategy routine munches the b_dev and b_blkno entries 273*41475Smckusick * before calling the appropriate driver. This would horribly 274*41475Smckusick * confuse, e.g. the hashing routines. Instead, /dev/drum is 275*41475Smckusick * provided as a character (raw) device. 276*41475Smckusick */ 277*41475Smckusick dev_t swapdev = makedev(3, 0); 278