141475Smckusick /* 241475Smckusick * Copyright (c) 1982, 1990 Regents of the University of California. 341475Smckusick * All rights reserved. 441475Smckusick * 541475Smckusick * %sccs.include.redist.c% 641475Smckusick * 7*49328Shibler * @(#)conf.c 7.6 (Berkeley) 05/07/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 71*49328Shibler #include "vn.h" 72*49328Shibler #if NVN > 0 73*49328Shibler int vnopen(),vnstrategy(),vnread(),vnwrite(),vndump(),vnioctl(),vnsize(); 74*49328Shibler #else 75*49328Shibler #define vnopen enxio 76*49328Shibler #define vnstrategy enxio 77*49328Shibler #define vnread enxio 78*49328Shibler #define vnwrite enxio 79*49328Shibler #define vndump enxio 80*49328Shibler #define vnioctl enxio 81*49328Shibler #define vnsize 0 82*49328Shibler #endif 83*49328Shibler 8441475Smckusick struct bdevsw bdevsw[] = 8541475Smckusick { 8641475Smckusick { ctopen, ctclose, ctstrategy, ctioctl, /*0*/ 8741475Smckusick ctdump, 0, B_TAPE }, 8847581Skarels { enxio, enxio, enxio, enxio, /*1*/ 8947581Skarels enxio, 0, 0 }, 9047581Skarels { rdopen, nullop, rdstrategy, rdioctl, /*2*/ 9141475Smckusick rddump, rdsize, 0 }, 9247581Skarels { enodev, enodev, swstrategy, enodev, /*3*/ 9347581Skarels enodev, 0, 0 }, 9447581Skarels { sdopen, nullop, sdstrategy, sdioctl, /*4*/ 9541475Smckusick sddump, sdsize, 0 }, 9647581Skarels { cdopen, nullop, cdstrategy, cdioctl, /*5*/ 9741475Smckusick cddump, cdsize, 0 }, 98*49328Shibler { vnopen, nullop, vnstrategy, vnioctl, /*6*/ 99*49328Shibler vndump, vnsize, 0 }, 10041475Smckusick }; 10141475Smckusick int nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]); 10241475Smckusick 10347581Skarels int cnopen(), cnclose(), cnread(), cnwrite(), cnioctl(), cnselect(); 10441475Smckusick 10547581Skarels int cttyopen(), cttyread(), cttywrite(), cttyioctl(), cttyselect(); 10641475Smckusick 10741475Smckusick int mmrw(); 10841475Smckusick #define mmselect seltrue 10941475Smckusick 11041475Smckusick #include "pty.h" 11141475Smckusick #if NPTY > 0 11241475Smckusick int ptsopen(),ptsclose(),ptsread(),ptswrite(),ptsstop(); 11341475Smckusick int ptcopen(),ptcclose(),ptcread(),ptcwrite(),ptcselect(); 11441475Smckusick int ptyioctl(); 11541475Smckusick struct tty pt_tty[]; 11641475Smckusick #else 11747581Skarels #define ptsopen enxio 11847581Skarels #define ptsclose enxio 11947581Skarels #define ptsread enxio 12047581Skarels #define ptswrite enxio 12147581Skarels #define ptcopen enxio 12247581Skarels #define ptcclose enxio 12347581Skarels #define ptcread enxio 12447581Skarels #define ptcwrite enxio 12547581Skarels #define ptyioctl enxio 12641475Smckusick #define pt_tty 0 12747581Skarels #define ptcselect enxio 12847581Skarels #define ptsstop nullop 12941475Smckusick #endif 13041475Smckusick 13141475Smckusick #include "ppi.h" 13241475Smckusick #if NPPI > 0 13345751Smckusick int ppiopen(),ppiclose(),ppiread(),ppiwrite(),ppiioctl(); 13441475Smckusick #else 13547581Skarels #define ppiopen enxio 13647581Skarels #define ppiclose enxio 13747581Skarels #define ppiread enxio 13847581Skarels #define ppiwrite enxio 13947581Skarels #define ppiioctl enxio 14041475Smckusick #endif 14141475Smckusick 14241475Smckusick #include "ite.h" 14341475Smckusick #if NITE > 0 14441475Smckusick int iteopen(),iteclose(),iteread(),itewrite(),iteioctl(); 14541475Smckusick struct tty ite_tty[]; 14641475Smckusick #else 14747581Skarels #define iteopen enxio 14847581Skarels #define iteclose enxio 14947581Skarels #define iteread enxio 15047581Skarels #define itewrite enxio 15147581Skarels #define itestop nullop 15247581Skarels #define iteioctl enxio 15341475Smckusick #define ite_tty 0 15441475Smckusick #endif 15541475Smckusick 15641475Smckusick #include "dca.h" 15741475Smckusick #if NDCA > 0 15841475Smckusick int dcaopen(),dcaclose(),dcaread(),dcawrite(),dcastop(),dcaioctl(); 15941475Smckusick struct tty dca_tty[]; 16041475Smckusick #else 16147581Skarels #define dcaopen enxio 16247581Skarels #define dcaclose enxio 16347581Skarels #define dcaread enxio 16447581Skarels #define dcawrite enxio 16547581Skarels #define dcastop nullop 16647581Skarels #define dcaioctl enxio 16741475Smckusick #define dca_tty 0 16841475Smckusick #endif 16941475Smckusick 17041475Smckusick #include "dcm.h" 17141475Smckusick #if NDCM > 0 17241475Smckusick int dcmopen(),dcmclose(),dcmread(),dcmwrite(),dcmstop(),dcmioctl(); 17341475Smckusick struct tty dcm_tty[]; 17441475Smckusick #else 17547581Skarels #define dcmopen enxio 17647581Skarels #define dcmclose enxio 17747581Skarels #define dcmread enxio 17847581Skarels #define dcmwrite enxio 17947581Skarels #define dcmstop nullop 18047581Skarels #define dcmioctl enxio 18141475Smckusick #define dcm_tty 0 18241475Smckusick #endif 18341475Smckusick 18441475Smckusick #include "clock.h" 18541475Smckusick #if NCLOCK > 0 18641475Smckusick int clockopen(),clockclose(),clockioctl(),clockmap(); 18741475Smckusick #else 18847581Skarels #define clockopen enxio 18947581Skarels #define clockclose enxio 19047581Skarels #define clockioctl enxio 19147581Skarels #define clockmap enxio 19241475Smckusick #endif 19341475Smckusick 19447583Smccanne #include "bpfilter.h" 19547583Smccanne #if NBPFILTER > 0 19647583Smccanne int bpfopen(),bpfclose(),bpfread(),bpfwrite(),bpfioctl(),bpfselect(); 19747583Smccanne #else 19847583Smccanne #define bpfopen enxio 19947583Smccanne #define bpfclose enxio 20047583Smccanne #define bpfread enxio 20147583Smccanne #define bpfwrite enxio 20247583Smccanne #define bpfioctl enxio 20347583Smccanne #define bpfselect enxio 20447583Smccanne #endif 20547583Smccanne 20641475Smckusick int logopen(),logclose(),logread(),logioctl(),logselect(); 20741475Smckusick 20847581Skarels int fdopen(); 20947581Skarels 21041475Smckusick int ttselect(), seltrue(); 21141475Smckusick 21241475Smckusick int grfopen(),grfclose(),grfioctl(),grfselect(),grfmap(); 21341475Smckusick 21441475Smckusick int hilopen(),hilclose(),hilioctl(),hilmap(),hilselect(),hilread(); 21541475Smckusick 21641475Smckusick struct cdevsw cdevsw[] = 21741475Smckusick { 21847581Skarels { cnopen, cnclose, cnread, cnwrite, /*0*/ 21947581Skarels cnioctl, nullop, nullop, NULL, 22047581Skarels cnselect, enodev, NULL }, 22147581Skarels { cttyopen, nullop, cttyread, cttywrite, /*1*/ 22247581Skarels cttyioctl, nullop, nullop, NULL, 22347581Skarels cttyselect, enodev, NULL }, 22447581Skarels { nullop, nullop, mmrw, mmrw, /*2*/ 22547581Skarels enodev, nullop, nullop, NULL, 22647581Skarels mmselect, enodev, NULL }, 22747581Skarels { nullop, nullop, rawread, rawwrite, /*3*/ 22847581Skarels enodev, enodev, nullop, NULL, 22947581Skarels enodev, enodev, swstrategy }, 23047581Skarels { ptsopen, ptsclose, ptsread, ptswrite, /*4*/ 23147581Skarels ptyioctl, ptsstop, nullop, pt_tty, 23247581Skarels ttselect, enodev, NULL }, 23347581Skarels { ptcopen, ptcclose, ptcread, ptcwrite, /*5*/ 23447581Skarels ptyioctl, nullop, nullop, pt_tty, 23547581Skarels ptcselect, enodev, NULL }, 23647581Skarels { logopen, logclose, logread, enodev, /*6*/ 23747581Skarels logioctl, enodev, nullop, NULL, 23847581Skarels logselect, enodev, NULL }, 23947581Skarels { ctopen, ctclose, ctread, ctwrite, /*7*/ 24047581Skarels ctioctl, enodev, nullop, NULL, 24147581Skarels seltrue, enodev, ctstrategy }, 24247581Skarels { sdopen, nullop, sdread, sdwrite, /*8*/ 24347581Skarels sdioctl, enodev, nullop, NULL, 24447581Skarels seltrue, enodev, sdstrategy }, 24547581Skarels { rdopen, nullop, rdread, rdwrite, /*9*/ 24647581Skarels rdioctl, enodev, nullop, NULL, 24747581Skarels seltrue, enodev, rdstrategy }, 24847581Skarels { grfopen, grfclose, nullop, nullop, /*10*/ 24947581Skarels grfioctl, enodev, nullop, NULL, 25047581Skarels grfselect, grfmap, NULL }, 25147581Skarels { ppiopen, ppiclose, ppiread, ppiwrite, /*11*/ 25247581Skarels ppiioctl, enodev, nullop, NULL, 25347581Skarels enodev, enodev, NULL }, 25447581Skarels { dcaopen, dcaclose, dcaread, dcawrite, /*12*/ 25547581Skarels dcaioctl, dcastop, nullop, dca_tty, 25647581Skarels ttselect, enodev, NULL }, 25747581Skarels { iteopen, iteclose, iteread, itewrite, /*13*/ 25847581Skarels iteioctl, enodev, nullop, ite_tty, 25947581Skarels ttselect, enodev, NULL }, 26047581Skarels { hilopen, hilclose, hilread, nullop, /*14*/ 26147581Skarels hilioctl, enodev, nullop, NULL, 26247581Skarels hilselect, hilmap, NULL }, 26347581Skarels { dcmopen, dcmclose, dcmread, dcmwrite, /*15*/ 26447581Skarels dcmioctl, dcmstop, nullop, dcm_tty, 26547581Skarels ttselect, enodev, NULL }, 26647581Skarels { enodev, enodev, enodev, enodev, /*16*/ 26747581Skarels enodev, enodev, nullop, NULL, 26847581Skarels seltrue, enodev, NULL }, 26947581Skarels { cdopen, nullop, cdread, cdwrite, /*17*/ 27047581Skarels cdioctl, enodev, nullop, NULL, 27147581Skarels seltrue, enodev, cdstrategy }, 27247581Skarels { clockopen, clockclose, nullop, nullop, /*18*/ 27347581Skarels clockioctl, enodev, nullop, NULL, 27447581Skarels nullop, clockmap, NULL }, 275*49328Shibler { vnopen, nullop, vnread, vnwrite, /*19*/ 276*49328Shibler vnioctl, enodev, nullop, NULL, 27747581Skarels seltrue, enodev, NULL }, 27847581Skarels { enodev, enodev, enodev, enodev, /*20*/ 27947581Skarels enodev, enodev, nullop, NULL, 28047581Skarels seltrue, enodev, NULL }, 28147581Skarels { fdopen, enodev, enodev, enodev, /*21*/ 28247581Skarels enodev, enodev, enodev, NULL, 28347581Skarels enodev, enodev, NULL }, 28447583Smccanne { bpfopen, bpfclose, bpfread, bpfwrite, /*22*/ 28547583Smccanne bpfioctl, enodev, enodev, NULL, 28647583Smccanne bpfselect, enodev, NULL }, 28741475Smckusick }; 28841475Smckusick int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]); 28941475Smckusick 29041475Smckusick int mem_no = 2; /* major device number of memory special file */ 29141475Smckusick 29241475Smckusick /* 29341475Smckusick * Swapdev is a fake device implemented 29441475Smckusick * in sw.c used only internally to get to swstrategy. 29541475Smckusick * It cannot be provided to the users, because the 29641475Smckusick * swstrategy routine munches the b_dev and b_blkno entries 29741475Smckusick * before calling the appropriate driver. This would horribly 29841475Smckusick * confuse, e.g. the hashing routines. Instead, /dev/drum is 29941475Smckusick * provided as a character (raw) device. 30041475Smckusick */ 30141475Smckusick dev_t swapdev = makedev(3, 0); 302