1*34407Skarels /* 2*34407Skarels * Copyright (c) 1988 Regents of the University of California. 3*34407Skarels * All rights reserved. 4*34407Skarels * 5*34407Skarels * Redistribution and use in source and binary forms are permitted 6*34407Skarels * provided that this notice is preserved and that due credit is given 7*34407Skarels * to the University of California at Berkeley. The name of the University 8*34407Skarels * may not be used to endorse or promote products derived from this 9*34407Skarels * software without specific prior written permission. This software 10*34407Skarels * is provided ``as is'' without express or implied warranty. 11*34407Skarels * 12*34407Skarels * @(#)conf.c 7.1 (Berkeley) 05/21/88 13*34407Skarels */ 1424042Ssam 1525678Ssam #include "param.h" 1625678Ssam #include "systm.h" 1725678Ssam #include "buf.h" 1825678Ssam #include "ioctl.h" 1925678Ssam #include "tty.h" 2025678Ssam #include "conf.h" 2124042Ssam 2234291Skarels int nulldev(), nodev(), rawread(), rawwrite(), swstrategy(); 2324042Ssam 2429557Ssam #include "dk.h" 2524042Ssam #if NVD > 0 2630675Skarels int vdopen(),vdclose(),vdstrategy(),vdread(),vdwrite(),vdioctl(); 2730675Skarels int vddump(),vdsize(); 2824042Ssam #else 2924042Ssam #define vdopen nodev 3030675Skarels #define vdclose nodev 3124042Ssam #define vdstrategy nodev 3224042Ssam #define vdread nodev 3324042Ssam #define vdwrite nodev 3430529Skarels #define vdioctl nodev 3524042Ssam #define vddump nodev 3624042Ssam #define vdsize 0 3724042Ssam #endif 3824042Ssam 3925981Ssam #include "yc.h" 4024042Ssam #if NCY > 0 4134291Skarels int cyopen(),cyclose(),cystrategy(),cyread(),cywrite(),cydump(); 4234291Skarels int cyioctl(),cyreset(); 4324042Ssam #else 4424042Ssam #define cyopen nodev 4524042Ssam #define cyclose nodev 4624042Ssam #define cystrategy nodev 4724042Ssam #define cyread nodev 4824042Ssam #define cywrite nodev 4924042Ssam #define cydump nodev 5024042Ssam #define cyioctl nodev 5124042Ssam #define cyreset nulldev 5224042Ssam #endif 5324042Ssam 5424042Ssam struct bdevsw bdevsw[] = 5524042Ssam { 5629557Ssam { nodev, nulldev, nodev, nodev, /*0*/ 5730675Skarels nodev, 0, 0 }, 5830675Skarels { vdopen, vdclose, vdstrategy, vdioctl, /*1*/ 5930675Skarels vddump, vdsize, 0 }, 6029557Ssam { nodev, nulldev, nodev, nodev, /*2*/ 6130675Skarels nodev, 0, 0 }, 6230675Skarels { cyopen, cyclose, cystrategy, cyioctl, /*3*/ 6330675Skarels cydump, 0, B_TAPE }, 6424042Ssam { nodev, nodev, swstrategy, nodev, /*4*/ 6530675Skarels nodev, 0, 0 }, 6624042Ssam }; 6724042Ssam int nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]); 6824042Ssam 6924042Ssam int cnopen(),cnclose(),cnread(),cnwrite(),cnioctl(); 7025678Ssam extern struct tty cons; 7124042Ssam 7224042Ssam #include "vx.h" 7324042Ssam #if NVX == 0 7424042Ssam #define vxopen nodev 7524042Ssam #define vxclose nodev 7624042Ssam #define vxread nodev 7724042Ssam #define vxwrite nodev 7824042Ssam #define vxioctl nodev 7924042Ssam #define vxstop nodev 8024042Ssam #define vxreset nulldev 8124042Ssam #define vx_tty 0 8224042Ssam #else 8324042Ssam int vxopen(),vxclose(),vxread(),vxwrite(),vxioctl(),vxstop(),vxreset(); 8424042Ssam struct tty vx_tty[]; 8524042Ssam #endif 8624042Ssam 8724042Ssam int syopen(),syread(),sywrite(),syioctl(),syselect(); 8824042Ssam 8924042Ssam int mmread(),mmwrite(); 9024042Ssam #define mmselect seltrue 9124042Ssam 9224042Ssam #include "pty.h" 9324042Ssam #if NPTY > 0 9424042Ssam int ptsopen(),ptsclose(),ptsread(),ptswrite(),ptsstop(); 9524042Ssam int ptcopen(),ptcclose(),ptcread(),ptcwrite(),ptcselect(); 9624042Ssam int ptyioctl(); 9724042Ssam struct tty pt_tty[]; 9824042Ssam #else 9924042Ssam #define ptsopen nodev 10024042Ssam #define ptsclose nodev 10124042Ssam #define ptsread nodev 10224042Ssam #define ptswrite nodev 10324042Ssam #define ptcopen nodev 10424042Ssam #define ptcclose nodev 10524042Ssam #define ptcread nodev 10624042Ssam #define ptcwrite nodev 10724042Ssam #define ptyioctl nodev 10824042Ssam #define pt_tty 0 10924042Ssam #define ptcselect nodev 11024042Ssam #define ptsstop nulldev 11124042Ssam #endif 11224042Ssam 11332634Ssam #if NMP > 0 11432634Ssam int mpopen(), mpclose(), mpread(), mpwrite(), mpioctl(), mpstop(); 11532634Ssam int mpdlopen(), mpdlclose(), mpdlwrite(), mpdlioctl(); 11632634Ssam extern struct tty mp_tty[]; 11724042Ssam #else 11832634Ssam #define mpopen nodev 11932634Ssam #define mpclose nodev 12032634Ssam #define mpread nodev 12132634Ssam #define mpwrite nodev 12232634Ssam #define mpioctl nodev 12332634Ssam #define mpstop nodev 12432634Ssam #define mpdlopen nodev 12532634Ssam #define mpdlclose nodev 12632634Ssam #define mpdlwrite nodev 12732634Ssam #define mpdlioctl nodev 12832634Ssam #define mp_tty 0 12924042Ssam #endif 13024042Ssam 13124042Ssam #if NII > 0 13224042Ssam int iiioctl(), iiclose(), iiopen(); 13324042Ssam #else 13424042Ssam #define iiopen nodev 13524042Ssam #define iiclose nodev 13624042Ssam #define iiioctl nodev 13724042Ssam #endif 13824042Ssam 13930173Ssam #include "enp.h" 14030173Ssam #if NENP > 0 14130173Ssam int enpr_open(), enpr_close(), enpr_read(), enpr_write(), enpr_ioctl(); 14230173Ssam #else 14330173Ssam #define enpr_open nodev 14430173Ssam #define enpr_close nodev 14530173Ssam #define enpr_read nodev 14630173Ssam #define enpr_write nodev 14730173Ssam #define enpr_ioctl nodev 14830173Ssam #endif 14930173Ssam 15030173Ssam #include "dr.h" 15130173Ssam #if NDR > 0 15230173Ssam int dropen(),drclose(),drread(),drwrite(),drioctl(),drreset(); 15330173Ssam #else 15430173Ssam #define dropen nodev 15530173Ssam #define drclose nodev 15630173Ssam #define drread nodev 15730173Ssam #define drwrite nodev 15830173Ssam #define drioctl nodev 15930173Ssam #define drreset nodev 16030173Ssam #endif 16130173Ssam 16230173Ssam #include "ik.h" 16330173Ssam #if NIK > 0 16430173Ssam int ikopen(),ikclose(),ikread(),ikwrite(),ikioctl(); 16530173Ssam #else 16630173Ssam #define ikopen nodev 16730173Ssam #define ikclose nodev 16830173Ssam #define ikread nodev 16930173Ssam #define ikwrite nodev 17030173Ssam #define ikioctl nodev 17130173Ssam #endif 17230173Ssam 17325678Ssam int logopen(),logclose(),logread(),logioctl(),logselect(); 17425678Ssam 17524042Ssam int ttselect(), seltrue(); 17624042Ssam 17724042Ssam struct cdevsw cdevsw[] = 17824042Ssam { 17924042Ssam cnopen, cnclose, cnread, cnwrite, /*0*/ 18025678Ssam cnioctl, nulldev, nulldev, &cons, 18134291Skarels ttselect, nodev, NULL, 18224042Ssam vxopen, vxclose, vxread, vxwrite, /*1*/ 18324042Ssam vxioctl, vxstop, vxreset, vx_tty, 18434291Skarels ttselect, nodev, NULL, 18524042Ssam syopen, nulldev, syread, sywrite, /*2*/ 18634291Skarels syioctl, nulldev, nulldev, NULL, 18734291Skarels syselect, nodev, NULL, 18824042Ssam nulldev, nulldev, mmread, mmwrite, /*3*/ 18934291Skarels nodev, nulldev, nulldev, NULL, 19034291Skarels mmselect, nodev, NULL, 19129557Ssam nodev, nulldev, nodev, nodev, /*4*/ 19234291Skarels nodev, nodev, nulldev, NULL, 19334291Skarels seltrue, nodev, NULL, 19434291Skarels vdopen, vdclose, rawread, rawwrite, /*5*/ 19534291Skarels vdioctl, nodev, nulldev, NULL, 19634291Skarels seltrue, nodev, vdstrategy, 19729557Ssam nodev, nulldev, nodev, nodev, /*6*/ 19834291Skarels nodev, nodev, nulldev, NULL, 19934291Skarels seltrue, nodev, NULL, 20024042Ssam cyopen, cyclose, cyread, cywrite, /*7*/ 20134291Skarels cyioctl, nodev, cyreset, NULL, 20234291Skarels seltrue, nodev, NULL, 20334291Skarels nulldev, nulldev, rawread, rawwrite, /*8*/ 20434291Skarels nodev, nodev, nulldev, NULL, 20534291Skarels nodev, nodev, swstrategy, 20624042Ssam ptsopen, ptsclose, ptsread, ptswrite, /*9*/ 20724042Ssam ptyioctl, ptsstop, nodev, pt_tty, 20834291Skarels ttselect, nodev, NULL, 20924042Ssam ptcopen, ptcclose, ptcread, ptcwrite, /*10*/ 21024042Ssam ptyioctl, nulldev, nodev, pt_tty, 21134291Skarels ptcselect, nodev, NULL, 21232634Ssam mpdlopen, mpdlclose, nodev, mpdlwrite, /*11*/ 21334291Skarels mpdlioctl, nodev, nulldev, NULL, 21434291Skarels seltrue, nodev, NULL, 21532634Ssam mpopen, mpclose, mpread, mpwrite, /*12*/ 21632634Ssam mpioctl, mpstop, nulldev, mp_tty, 21734291Skarels ttselect, nodev, NULL, 21832634Ssam nodev, nodev, nodev, nodev, /*13*/ 21934291Skarels nodev, nodev, nulldev, NULL, 22034291Skarels nodev, nodev, NULL, 22124042Ssam iiopen, iiclose, nulldev, nulldev, /*14*/ 22234291Skarels iiioctl, nulldev, nulldev, NULL, 22334291Skarels seltrue, nodev, NULL, 22425678Ssam logopen, logclose, logread, nodev, /*15*/ 22534291Skarels logioctl, nodev, nulldev, NULL, 22634291Skarels logselect, nodev, NULL, 22730173Ssam enpr_open, enpr_close, enpr_read, enpr_write, /*16*/ 22834291Skarels enpr_ioctl, nodev, nulldev, NULL, 22934291Skarels nodev, nodev, NULL, 23030173Ssam nodev, nodev, nodev, nodev, /*17*/ 23134291Skarels nodev, nodev, nulldev, NULL, 23234291Skarels nodev, nodev, NULL, 23330173Ssam dropen, drclose, drread, drwrite, /*18*/ 23434291Skarels drioctl, nodev, drreset, NULL, 23534291Skarels nodev, nodev, NULL, 23630173Ssam nodev, nodev, nodev, nodev, /*19*/ 23734291Skarels nodev, nodev, nulldev, NULL, 23834291Skarels nodev, nodev, NULL, 23930173Ssam /* 20-30 are reserved for local use */ 24030173Ssam ikopen, ikclose, ikread, ikwrite, /*20*/ 24134291Skarels ikioctl, nodev, nulldev, NULL, 24234291Skarels nodev, nodev, NULL, 24324042Ssam }; 24424042Ssam int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]); 24524042Ssam 24624042Ssam int mem_no = 3; /* major device number of memory special file */ 24724042Ssam 24824042Ssam /* 24924042Ssam * Swapdev is a fake device implemented 25024042Ssam * in sw.c used only internally to get to swstrategy. 25124042Ssam * It cannot be provided to the users, because the 25224042Ssam * swstrategy routine munches the b_dev and b_blkno entries 25324042Ssam * before calling the appropriate driver. This would horribly 25424042Ssam * confuse, e.g. the hashing routines. Instead, /dev/drum is 25524042Ssam * provided as a character (raw) device. 25624042Ssam */ 25724042Ssam dev_t swapdev = makedev(4, 0); 258