141475Smckusick /* 241475Smckusick * Copyright (c) 1982, 1990 Regents of the University of California. 341475Smckusick * All rights reserved. 441475Smckusick * 541475Smckusick * %sccs.include.redist.c% 641475Smckusick * 7*45788Sbostic * @(#)conf.c 7.3 (Berkeley) 12/16/90 841475Smckusick */ 941475Smckusick 10*45788Sbostic #include "sys/param.h" 11*45788Sbostic #include "sys/systm.h" 12*45788Sbostic #include "sys/buf.h" 13*45788Sbostic #include "sys/ioctl.h" 14*45788Sbostic #include "sys/tty.h" 15*45788Sbostic #include "sys/conf.h" 1641475Smckusick 1741475Smckusick int nulldev(), nodev(), rawread(), rawwrite(), swstrategy(); 1841475Smckusick 1941475Smckusick #include "ct.h" 2041475Smckusick #if NCT > 0 2141475Smckusick int ctopen(),ctclose(),ctstrategy(),ctread(),ctwrite(),ctdump(),ctioctl(); 2241475Smckusick #else 2341475Smckusick #define ctopen nodev 2441475Smckusick #define ctclose nodev 2541475Smckusick #define ctstrategy nodev 2641475Smckusick #define ctread nodev 2741475Smckusick #define ctwrite nodev 2841475Smckusick #define ctdump nodev 2941475Smckusick #define ctioctl nodev 3041475Smckusick #endif 3141475Smckusick 3241475Smckusick #include "rd.h" 3341475Smckusick #if NRD > 0 3441475Smckusick int rdopen(),rdstrategy(),rdread(),rdwrite(),rddump(),rdioctl(),rdsize(); 3541475Smckusick #else 3641475Smckusick #define rdopen nodev 3741475Smckusick #define rdstrategy nodev 3841475Smckusick #define rdread nodev 3941475Smckusick #define rdwrite nodev 4041475Smckusick #define rddump nodev 4141475Smckusick #define rdioctl nodev 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 4941475Smckusick #define sdopen nodev 5041475Smckusick #define sdstrategy nodev 5141475Smckusick #define sdread nodev 5241475Smckusick #define sdwrite nodev 5341475Smckusick #define sddump nodev 5441475Smckusick #define sdioctl nodev 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 6241475Smckusick #define cdopen nodev 6341475Smckusick #define cdstrategy nodev 6441475Smckusick #define cdread nodev 6541475Smckusick #define cdwrite nodev 6641475Smckusick #define cddump nodev 6741475Smckusick #define cdioctl nodev 6841475Smckusick #define cdsize 0 6941475Smckusick #endif 7041475Smckusick 7141475Smckusick #include "fd.h" 7241475Smckusick #if NFD > 0 7341475Smckusick int fdopen(),fdstrategy(),fdread(),fdwrite(),fddump(),fdioctl(),fdsize(); 7441475Smckusick #else 7541475Smckusick #define fdopen nodev 7641475Smckusick #define fdstrategy nodev 7741475Smckusick #define fdread nodev 7841475Smckusick #define fdwrite nodev 7941475Smckusick #define fddump nodev 8041475Smckusick #define fdioctl nodev 8141475Smckusick #define fdsize 0 8241475Smckusick #endif 8341475Smckusick 8441475Smckusick struct bdevsw bdevsw[] = 8541475Smckusick { 8641475Smckusick { ctopen, ctclose, ctstrategy, ctioctl, /*0*/ 8741475Smckusick ctdump, 0, B_TAPE }, 8841475Smckusick { nodev, nodev, nodev, nodev, /*1*/ 8941475Smckusick nodev, 0, 0 }, 9041475Smckusick { rdopen, nulldev, rdstrategy, rdioctl, /*2*/ 9141475Smckusick rddump, rdsize, 0 }, 9241475Smckusick { nodev, nodev, swstrategy, nodev, /*3*/ 9341475Smckusick nodev, 0, 0 }, 9441475Smckusick { sdopen, nulldev, sdstrategy, sdioctl, /*4*/ 9541475Smckusick sddump, sdsize, 0 }, 9641475Smckusick { cdopen, nulldev, cdstrategy, cdioctl, /*5*/ 9741475Smckusick cddump, cdsize, 0 }, 9841475Smckusick { fdopen, nulldev, fdstrategy, fdioctl, /*6*/ 9941475Smckusick fddump, fdsize, 0 }, 10041475Smckusick }; 10141475Smckusick int nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]); 10241475Smckusick 10341475Smckusick int cnopen(),cnclose(),cnread(),cnwrite(),cnioctl(),cnselect(); 10441475Smckusick 10541475Smckusick int syopen(),syread(),sywrite(),syioctl(),syselect(); 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 11741475Smckusick #define ptsopen nodev 11841475Smckusick #define ptsclose nodev 11941475Smckusick #define ptsread nodev 12041475Smckusick #define ptswrite nodev 12141475Smckusick #define ptcopen nodev 12241475Smckusick #define ptcclose nodev 12341475Smckusick #define ptcread nodev 12441475Smckusick #define ptcwrite nodev 12541475Smckusick #define ptyioctl nodev 12641475Smckusick #define pt_tty 0 12741475Smckusick #define ptcselect nodev 12841475Smckusick #define ptsstop nulldev 12941475Smckusick #endif 13041475Smckusick 13141475Smckusick #include "ppi.h" 13241475Smckusick #if NPPI > 0 13345751Smckusick int ppiopen(),ppiclose(),ppiread(),ppiwrite(),ppiioctl(); 13441475Smckusick #else 13541475Smckusick #define ppiopen nodev 13641475Smckusick #define ppiclose nodev 13741475Smckusick #define ppiread nodev 13841475Smckusick #define ppiwrite nodev 13945751Smckusick #define ppiioctl nodev 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 14741475Smckusick #define iteopen nodev 14841475Smckusick #define iteclose nodev 14941475Smckusick #define iteread nodev 15041475Smckusick #define itewrite nodev 15141475Smckusick #define itestop nulldev 15241475Smckusick #define iteioctl nodev 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 16141475Smckusick #define dcaopen nodev 16241475Smckusick #define dcaclose nodev 16341475Smckusick #define dcaread nodev 16441475Smckusick #define dcawrite nodev 16541475Smckusick #define dcastop nulldev 16641475Smckusick #define dcaioctl nodev 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 17541475Smckusick #define dcmopen nodev 17641475Smckusick #define dcmclose nodev 17741475Smckusick #define dcmread nodev 17841475Smckusick #define dcmwrite nodev 17941475Smckusick #define dcmstop nulldev 18041475Smckusick #define dcmioctl nodev 18141475Smckusick #define dcm_tty 0 18241475Smckusick #endif 18341475Smckusick 18441475Smckusick #include "clock.h" 18541475Smckusick #if NCLOCK > 0 18641475Smckusick int clockopen(),clockclose(),clockioctl(),clockmap(); 18741475Smckusick #else 18841475Smckusick #define clockopen nodev 18941475Smckusick #define clockclose nodev 19041475Smckusick #define clockioctl nodev 19141475Smckusick #define clockmap nodev 19241475Smckusick #endif 19341475Smckusick 19441475Smckusick int logopen(),logclose(),logread(),logioctl(),logselect(); 19541475Smckusick 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 { 20441475Smckusick cnopen, cnclose, cnread, cnwrite, /*0*/ 20541475Smckusick cnioctl, nulldev, nulldev, NULL, 20641475Smckusick cnselect, nodev, NULL, 20741475Smckusick syopen, nulldev, syread, sywrite, /*1*/ 20841475Smckusick syioctl, nulldev, nulldev, NULL, 20941475Smckusick syselect, nodev, NULL, 21041475Smckusick nulldev, nulldev, mmrw, mmrw, /*2*/ 21141475Smckusick nodev, nulldev, nulldev, NULL, 21241475Smckusick mmselect, nodev, NULL, 21341475Smckusick nulldev, nulldev, rawread, rawwrite, /*3*/ 21441475Smckusick nodev, nodev, nulldev, NULL, 21541475Smckusick nodev, nodev, swstrategy, 21641475Smckusick ptsopen, ptsclose, ptsread, ptswrite, /*4*/ 21741475Smckusick ptyioctl, ptsstop, nulldev, pt_tty, 21841475Smckusick ttselect, nodev, NULL, 21941475Smckusick ptcopen, ptcclose, ptcread, ptcwrite, /*5*/ 22041475Smckusick ptyioctl, nulldev, nulldev, pt_tty, 22141475Smckusick ptcselect, nodev, NULL, 22241475Smckusick logopen, logclose, logread, nodev, /*6*/ 22341475Smckusick logioctl, nodev, nulldev, NULL, 22441475Smckusick logselect, nodev, NULL, 22541475Smckusick ctopen, ctclose, ctread, ctwrite, /*7*/ 22641475Smckusick ctioctl, nodev, nulldev, NULL, 22741475Smckusick seltrue, nodev, ctstrategy, 22841475Smckusick sdopen, nulldev, sdread, sdwrite, /*8*/ 22941475Smckusick sdioctl, nodev, nulldev, NULL, 23041475Smckusick seltrue, nodev, sdstrategy, 23141475Smckusick rdopen, nulldev, rdread, rdwrite, /*9*/ 23241475Smckusick rdioctl, nodev, nulldev, NULL, 23341475Smckusick seltrue, nodev, rdstrategy, 23441475Smckusick grfopen, grfclose, nulldev, nulldev, /*10*/ 23541475Smckusick grfioctl, nodev, nulldev, NULL, 23641475Smckusick grfselect, grfmap, NULL, 23741475Smckusick ppiopen, ppiclose, ppiread, ppiwrite, /*11*/ 23845751Smckusick ppiioctl, nodev, nulldev, NULL, 23941475Smckusick nodev, nodev, NULL, 24041475Smckusick dcaopen, dcaclose, dcaread, dcawrite, /*12*/ 24141475Smckusick dcaioctl, dcastop, nulldev, dca_tty, 24241475Smckusick ttselect, nodev, NULL, 24341475Smckusick iteopen, iteclose, iteread, itewrite, /*13*/ 24441475Smckusick iteioctl, nodev, nulldev, ite_tty, 24541475Smckusick ttselect, nodev, NULL, 24641475Smckusick hilopen, hilclose, hilread, nulldev, /*14*/ 24741475Smckusick hilioctl, nodev, nulldev, NULL, 24841475Smckusick hilselect, hilmap, NULL, 24941475Smckusick dcmopen, dcmclose, dcmread, dcmwrite, /*15*/ 25041475Smckusick dcmioctl, dcmstop, nulldev, dcm_tty, 25141475Smckusick ttselect, nodev, NULL, 25241475Smckusick nodev, nodev, nodev, nodev, /*16*/ 25341475Smckusick nodev, nodev, nulldev, NULL, 25441475Smckusick seltrue, nodev, NULL, 25541475Smckusick cdopen, nulldev, cdread, cdwrite, /*17*/ 25641475Smckusick cdioctl, nodev, nulldev, NULL, 25741475Smckusick seltrue, nodev, cdstrategy, 25841475Smckusick clockopen, clockclose, nulldev, nulldev, /*18*/ 25941475Smckusick clockioctl, nodev, nulldev, NULL, 26041475Smckusick nulldev, clockmap, NULL, 26141475Smckusick fdopen, nulldev, fdread, fdwrite, /*19*/ 26241475Smckusick fdioctl, nodev, nulldev, NULL, 26341475Smckusick seltrue, nodev, 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