141475Smckusick /* 241475Smckusick * Copyright (c) 1982, 1990 Regents of the University of California. 341475Smckusick * All rights reserved. 441475Smckusick * 541475Smckusick * %sccs.include.redist.c% 641475Smckusick * 7*47583Smccanne * @(#)conf.c 7.5 (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 1747581Skarels 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 2347581Skarels #define ctopen enxio 2447581Skarels #define ctclose enxio 2547581Skarels #define ctstrategy enxio 2647581Skarels #define ctread enxio 2747581Skarels #define ctwrite enxio 2847581Skarels #define ctdump enxio 2947581Skarels #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 3647581Skarels #define rdopen enxio 3747581Skarels #define rdstrategy enxio 3847581Skarels #define rdread enxio 3947581Skarels #define rdwrite enxio 4047581Skarels #define rddump enxio 4147581Skarels #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 4947581Skarels #define sdopen enxio 5047581Skarels #define sdstrategy enxio 5147581Skarels #define sdread enxio 5247581Skarels #define sdwrite enxio 5347581Skarels #define sddump enxio 5447581Skarels #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 6247581Skarels #define cdopen enxio 6347581Skarels #define cdstrategy enxio 6447581Skarels #define cdread enxio 6547581Skarels #define cdwrite enxio 6647581Skarels #define cddump enxio 6747581Skarels #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 }, 7547581Skarels { enxio, enxio, enxio, enxio, /*1*/ 7647581Skarels enxio, 0, 0 }, 7747581Skarels { rdopen, nullop, rdstrategy, rdioctl, /*2*/ 7841475Smckusick rddump, rdsize, 0 }, 7947581Skarels { enodev, enodev, swstrategy, enodev, /*3*/ 8047581Skarels enodev, 0, 0 }, 8147581Skarels { sdopen, nullop, sdstrategy, sdioctl, /*4*/ 8241475Smckusick sddump, sdsize, 0 }, 8347581Skarels { cdopen, nullop, cdstrategy, cdioctl, /*5*/ 8441475Smckusick cddump, cdsize, 0 }, 8547581Skarels /* 6 was "fd" vnode device */ 8641475Smckusick }; 8741475Smckusick int nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]); 8841475Smckusick 8947581Skarels int cnopen(), cnclose(), cnread(), cnwrite(), cnioctl(), cnselect(); 9041475Smckusick 9147581Skarels 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 10347581Skarels #define ptsopen enxio 10447581Skarels #define ptsclose enxio 10547581Skarels #define ptsread enxio 10647581Skarels #define ptswrite enxio 10747581Skarels #define ptcopen enxio 10847581Skarels #define ptcclose enxio 10947581Skarels #define ptcread enxio 11047581Skarels #define ptcwrite enxio 11147581Skarels #define ptyioctl enxio 11241475Smckusick #define pt_tty 0 11347581Skarels #define ptcselect enxio 11447581Skarels #define ptsstop nullop 11541475Smckusick #endif 11641475Smckusick 11741475Smckusick #include "ppi.h" 11841475Smckusick #if NPPI > 0 11945751Smckusick int ppiopen(),ppiclose(),ppiread(),ppiwrite(),ppiioctl(); 12041475Smckusick #else 12147581Skarels #define ppiopen enxio 12247581Skarels #define ppiclose enxio 12347581Skarels #define ppiread enxio 12447581Skarels #define ppiwrite enxio 12547581Skarels #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 13347581Skarels #define iteopen enxio 13447581Skarels #define iteclose enxio 13547581Skarels #define iteread enxio 13647581Skarels #define itewrite enxio 13747581Skarels #define itestop nullop 13847581Skarels #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 14747581Skarels #define dcaopen enxio 14847581Skarels #define dcaclose enxio 14947581Skarels #define dcaread enxio 15047581Skarels #define dcawrite enxio 15147581Skarels #define dcastop nullop 15247581Skarels #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 16147581Skarels #define dcmopen enxio 16247581Skarels #define dcmclose enxio 16347581Skarels #define dcmread enxio 16447581Skarels #define dcmwrite enxio 16547581Skarels #define dcmstop nullop 16647581Skarels #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 17447581Skarels #define clockopen enxio 17547581Skarels #define clockclose enxio 17647581Skarels #define clockioctl enxio 17747581Skarels #define clockmap enxio 17841475Smckusick #endif 17941475Smckusick 180*47583Smccanne #include "bpfilter.h" 181*47583Smccanne #if NBPFILTER > 0 182*47583Smccanne int bpfopen(),bpfclose(),bpfread(),bpfwrite(),bpfioctl(),bpfselect(); 183*47583Smccanne #else 184*47583Smccanne #define bpfopen enxio 185*47583Smccanne #define bpfclose enxio 186*47583Smccanne #define bpfread enxio 187*47583Smccanne #define bpfwrite enxio 188*47583Smccanne #define bpfioctl enxio 189*47583Smccanne #define bpfselect enxio 190*47583Smccanne #endif 191*47583Smccanne 19241475Smckusick int logopen(),logclose(),logread(),logioctl(),logselect(); 19341475Smckusick 19447581Skarels int fdopen(); 19547581Skarels 19641475Smckusick int ttselect(), seltrue(); 19741475Smckusick 19841475Smckusick int grfopen(),grfclose(),grfioctl(),grfselect(),grfmap(); 19941475Smckusick 20041475Smckusick int hilopen(),hilclose(),hilioctl(),hilmap(),hilselect(),hilread(); 20141475Smckusick 20241475Smckusick struct cdevsw cdevsw[] = 20341475Smckusick { 20447581Skarels { cnopen, cnclose, cnread, cnwrite, /*0*/ 20547581Skarels cnioctl, nullop, nullop, NULL, 20647581Skarels cnselect, enodev, NULL }, 20747581Skarels { cttyopen, nullop, cttyread, cttywrite, /*1*/ 20847581Skarels cttyioctl, nullop, nullop, NULL, 20947581Skarels cttyselect, enodev, NULL }, 21047581Skarels { nullop, nullop, mmrw, mmrw, /*2*/ 21147581Skarels enodev, nullop, nullop, NULL, 21247581Skarels mmselect, enodev, NULL }, 21347581Skarels { nullop, nullop, rawread, rawwrite, /*3*/ 21447581Skarels enodev, enodev, nullop, NULL, 21547581Skarels enodev, enodev, swstrategy }, 21647581Skarels { ptsopen, ptsclose, ptsread, ptswrite, /*4*/ 21747581Skarels ptyioctl, ptsstop, nullop, pt_tty, 21847581Skarels ttselect, enodev, NULL }, 21947581Skarels { ptcopen, ptcclose, ptcread, ptcwrite, /*5*/ 22047581Skarels ptyioctl, nullop, nullop, pt_tty, 22147581Skarels ptcselect, enodev, NULL }, 22247581Skarels { logopen, logclose, logread, enodev, /*6*/ 22347581Skarels logioctl, enodev, nullop, NULL, 22447581Skarels logselect, enodev, NULL }, 22547581Skarels { ctopen, ctclose, ctread, ctwrite, /*7*/ 22647581Skarels ctioctl, enodev, nullop, NULL, 22747581Skarels seltrue, enodev, ctstrategy }, 22847581Skarels { sdopen, nullop, sdread, sdwrite, /*8*/ 22947581Skarels sdioctl, enodev, nullop, NULL, 23047581Skarels seltrue, enodev, sdstrategy }, 23147581Skarels { rdopen, nullop, rdread, rdwrite, /*9*/ 23247581Skarels rdioctl, enodev, nullop, NULL, 23347581Skarels seltrue, enodev, rdstrategy }, 23447581Skarels { grfopen, grfclose, nullop, nullop, /*10*/ 23547581Skarels grfioctl, enodev, nullop, NULL, 23647581Skarels grfselect, grfmap, NULL }, 23747581Skarels { ppiopen, ppiclose, ppiread, ppiwrite, /*11*/ 23847581Skarels ppiioctl, enodev, nullop, NULL, 23947581Skarels enodev, enodev, NULL }, 24047581Skarels { dcaopen, dcaclose, dcaread, dcawrite, /*12*/ 24147581Skarels dcaioctl, dcastop, nullop, dca_tty, 24247581Skarels ttselect, enodev, NULL }, 24347581Skarels { iteopen, iteclose, iteread, itewrite, /*13*/ 24447581Skarels iteioctl, enodev, nullop, ite_tty, 24547581Skarels ttselect, enodev, NULL }, 24647581Skarels { hilopen, hilclose, hilread, nullop, /*14*/ 24747581Skarels hilioctl, enodev, nullop, NULL, 24847581Skarels hilselect, hilmap, NULL }, 24947581Skarels { dcmopen, dcmclose, dcmread, dcmwrite, /*15*/ 25047581Skarels dcmioctl, dcmstop, nullop, dcm_tty, 25147581Skarels ttselect, enodev, NULL }, 25247581Skarels { enodev, enodev, enodev, enodev, /*16*/ 25347581Skarels enodev, enodev, nullop, NULL, 25447581Skarels seltrue, enodev, NULL }, 25547581Skarels { cdopen, nullop, cdread, cdwrite, /*17*/ 25647581Skarels cdioctl, enodev, nullop, NULL, 25747581Skarels seltrue, enodev, cdstrategy }, 25847581Skarels { clockopen, clockclose, nullop, nullop, /*18*/ 25947581Skarels clockioctl, enodev, nullop, NULL, 26047581Skarels nullop, clockmap, NULL }, 26147581Skarels #ifdef notdef 26247581Skarels { fdopen, nullop, fdread, fdwrite, /*19*/ 26347581Skarels fdioctl, enodev, nullop, NULL, 26447581Skarels seltrue, enodev, NULL }, 26547581Skarels #else 26647581Skarels { enodev, enodev, enodev, enodev, /*19*/ 26747581Skarels enodev, enodev, nullop, NULL, 26847581Skarels seltrue, enodev, NULL }, 26947581Skarels #endif 27047581Skarels { enodev, enodev, enodev, enodev, /*20*/ 27147581Skarels enodev, enodev, nullop, NULL, 27247581Skarels seltrue, enodev, NULL }, 27347581Skarels { fdopen, enodev, enodev, enodev, /*21*/ 27447581Skarels enodev, enodev, enodev, NULL, 27547581Skarels enodev, enodev, NULL }, 276*47583Smccanne { bpfopen, bpfclose, bpfread, bpfwrite, /*22*/ 277*47583Smccanne bpfioctl, enodev, enodev, NULL, 278*47583Smccanne bpfselect, enodev, NULL }, 27941475Smckusick }; 28041475Smckusick int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]); 28141475Smckusick 28241475Smckusick int mem_no = 2; /* major device number of memory special file */ 28341475Smckusick 28441475Smckusick /* 28541475Smckusick * Swapdev is a fake device implemented 28641475Smckusick * in sw.c used only internally to get to swstrategy. 28741475Smckusick * It cannot be provided to the users, because the 28841475Smckusick * swstrategy routine munches the b_dev and b_blkno entries 28941475Smckusick * before calling the appropriate driver. This would horribly 29041475Smckusick * confuse, e.g. the hashing routines. Instead, /dev/drum is 29141475Smckusick * provided as a character (raw) device. 29241475Smckusick */ 29341475Smckusick dev_t swapdev = makedev(3, 0); 294