conf.c
来自「基于组件方式开发操作系统的OSKIT源代码」· C语言 代码 · 共 1,574 行 · 第 1/3 页
C
1,574 行
/* * Copyright (c) UNIX System Laboratories, Inc. All or some portions * of this file are derived from material licensed to the * University of California by American Telephone and Telegraph Co. * or UNIX System Laboratories, Inc. and are reproduced herein with * the permission of UNIX System Laboratories, Inc. *//* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * This code is derived from software contributed to Berkeley by * William Jolitz. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * from: @(#)conf.c 5.8 (Berkeley) 5/12/91 * $\Id: conf.c,v 1.85.4.9 1996/06/25 20:19:22 markm Exp $ */#include <sys/param.h>#include <sys/systm.h>#include <sys/buf.h>#include <sys/ioctl.h>#include <sys/proc.h>#include <sys/vnode.h>#include <sys/tty.h>#include <sys/conf.h>d_rdwr_t rawread, rawwrite;d_strategy_t swstrategy;/* Lots of bogus defines for shorthand purposes */#define noopen (d_open_t *)enodev#define noclose (d_close_t *)enodev#define noread (d_rdwr_t *)enodev#define nowrite noread#define noioc (d_ioctl_t *)enodev#define nostop (d_stop_t *)enodev#define noreset (d_reset_t *)enodev#define noselect (d_select_t *)enodev#define nommap (d_mmap_t *)enodev#define nostrat (d_strategy_t *)enodev#define nodump (d_dump_t *)enodev#define nodevtotty (d_ttycv_t *)nullop#define nxopen (d_open_t *)enxio#define nxclose (d_close_t *)enxio#define nxread (d_rdwr_t *)enxio#define nxwrite nxread#define nxstrategy (d_strategy_t *)enxio#define nxioctl (d_ioctl_t *)enxio#define nxdump (d_dump_t *)enxio#define nxstop (d_stop_t *)enxio#define nxreset (d_reset_t *)enxio#define nxselect (d_select_t *)enxio#define nxmmap nommap /* must return -1, not ENXIO */#define nxdevtotty (d_ttycv_t *)nullop#define nullopen (d_open_t *)nullop#define nullclose (d_close_t *)nullop#define nullstop (d_stop_t *)nullop#define nullreset (d_reset_t *)nullop#define zerosize (d_psize_t *)0int lkmenodev();#define lkmopen (d_open_t *)lkmenodev#define lkmclose (d_close_t *)lkmenodev#define lkmread (d_rdwr_t *)lkmenodev#define lkmwrite (d_rdwr_t *)lkmenodev#define lkmstrategy (d_strategy_t *)lkmenodev#define lkmioctl (d_ioctl_t *)lkmenodev#define lkmdump (d_dump_t *)lkmenodev#define lkmsize zerosize#define lkmstop (d_stop_t *)lkmenodev#define lkmreset (d_reset_t *)lkmenodev#define lkmmmap (d_mmap_t *)lkmenodev#define lkmselect (d_select_t *)lkmenodev#include "wd.h"#if (NWD > 0)d_open_t wdopen;d_close_t wdclose;d_strategy_t wdstrategy;d_ioctl_t wdioctl;d_dump_t wddump;d_psize_t wdsize;#else#define wdopen nxopen#define wdclose nxclose#define wdstrategy nxstrategy#define wdioctl nxioctl#define wddump nxdump#define wdsize zerosize#endif#include "worm.h"#if NWORM > 0d_open_t wormopen;d_close_t wormclose;d_strategy_t wormstrategy;d_ioctl_t wormioctl;d_dump_t wormdump;d_psize_t wormsize;#else#define wormopen nxopen#define wormclose nxclose#define wormstrategy nxstrategy#define wormioctl nxioctl#define wormdump nxdump#define wormsize zerosize#endif#include "sctarg.h"#if NSCTARG > 0d_open_t sctargopen;d_close_t sctargclose;d_strategy_t sctargstrategy;d_ioctl_t sctargioctl;d_dump_t sctargdump;d_psize_t sctargsize;#else#define sctargopen nxopen#define sctargclose nxclose#define sctargstrategy nxstrategy#define sctargioctl nxioctl#define sctargdump nxdump#define sctargsize zerosize#endif#include "pt.h"#if NPT > 0d_open_t ptopen;d_close_t ptclose;d_strategy_t ptstrategy;d_ioctl_t ptioctl;d_dump_t ptdump;d_psize_t ptsize;#else#define ptopen nxopen#define ptclose nxclose#define ptstrategy nxstrategy#define ptioctl nxioctl#define ptdump nxdump#define ptsize zerosize#endif#include "sd.h"#if NSD > 0d_open_t sdopen;d_close_t sdclose;d_strategy_t sdstrategy;d_ioctl_t sdioctl;d_dump_t sddump;d_psize_t sdsize;#else#define sdopen nxopen#define sdclose nxclose#define sdstrategy nxstrategy#define sdioctl nxioctl#define sddump nxdump#define sdsize zerosize#endif#include "st.h"#if NST > 0d_open_t stopen;d_close_t stclose;d_strategy_t ststrategy;d_ioctl_t stioctl;/*int stdump(),stsize();*/#define stdump nxdump#define stsize zerosize#else#define stopen nxopen#define stclose nxclose#define ststrategy nxstrategy#define stioctl nxioctl#define stdump nxdump#define stsize zerosize#endif#include "od.h"#if NOD > 0d_open_t odopen;d_close_t odclose;d_strategy_t odstrategy;d_ioctl_t odioctl;#define oddump nxdump#else#define odopen nxopen#define odclose nxclose#define odstrategy nxstrategy#define odioctl nxioctl#define oddump nxdump#endif#include "ccd.h"#if NCCD > 0d_open_t ccdopen;d_close_t ccdclose;d_strategy_t ccdstrategy;d_ioctl_t ccdioctl;d_psize_t ccdsize;d_read_t ccdread;d_write_t ccdwrite;#define ccddump nxdump#else#define ccdopen nxopen#define ccdclose nxclose#define ccdstrategy nxstrategy#define ccdioctl nxioctl#define ccddump nxdump#define ccdsize zerosize#define ccdread nxread#define ccdwrite nxwrite#endif#include "cd.h"#if NCD > 0d_open_t cdopen;d_close_t cdclose;d_strategy_t cdstrategy;d_ioctl_t cdioctl;d_psize_t cdsize;#define cddump nxdump#else#define cdopen nxopen#define cdclose nxclose#define cdstrategy nxstrategy#define cdioctl nxioctl#define cddump nxdump#define cdsize zerosize#endif#include "mcd.h"#if NMCD > 0d_open_t mcdopen;d_close_t mcdclose;d_strategy_t mcdstrategy;d_ioctl_t mcdioctl;d_psize_t mcdsize;#define mcddump nxdump#else#define mcdopen nxopen#define mcdclose nxclose#define mcdstrategy nxstrategy#define mcdioctl nxioctl#define mcddump nxdump#define mcdsize zerosize#endif#include "scd.h"#if NSCD > 0d_open_t scdopen;d_close_t scdclose;d_strategy_t scdstrategy;d_ioctl_t scdioctl;d_psize_t scdsize;#define scddump nxdump#else#define scdopen nxopen#define scdclose nxclose#define scdstrategy nxstrategy#define scdioctl nxioctl#define scddump nxdump#define scdsize zerosize#endif#include "matcd.h"#if NMATCD > 0d_open_t matcdopen;d_close_t matcdclose;d_strategy_t matcdstrategy;d_ioctl_t matcdioctl;d_dump_t matcddump;d_psize_t matcdsize;#define matcddump nxdump#else#define matcdopen nxopen#define matcdclose nxclose#define matcdstrategy nxstrategy#define matcdioctl nxioctl#define matcddump nxdump#define matcdsize (d_psize_t *)0#endif#include "ata.h"#if (NATA > 0)d_open_t ataopen;d_close_t ataclose;d_strategy_t atastrategy;d_ioctl_t ataioctl;d_psize_t atasize;#define atadump nxdump#else#define ataopen nxopen#define ataclose nxclose#define atastrategy nxstrategy#define ataioctl nxioctl#define atasize zerosize#define atadump nxdump#endif#include "wcd.h"#if NWCD > 0d_open_t wcdopen;d_close_t wcdclose;d_strategy_t wcdstrategy;d_ioctl_t wcdioctl;#else#define wcdopen nxopen#define wcdclose nxclose#define wcdstrategy nxstrategy#define wcdioctl nxioctl#endif#include "ch.h"#if NCH > 0d_open_t chopen;d_close_t chclose;d_ioctl_t chioctl;#else#define chopen nxopen#define chclose nxclose#define chioctl nxioctl#endif#include "wt.h"#if NWT > 0d_open_t wtopen;d_close_t wtclose;d_strategy_t wtstrategy;d_ioctl_t wtioctl;d_dump_t wtdump;d_psize_t wtsize;#else#define wtopen nxopen#define wtclose nxclose#define wtstrategy nxstrategy#define wtioctl nxioctl#define wtdump nxdump#define wtsize zerosize#endif#include "fd.h"#if NFD > 0d_open_t Fdopen;d_close_t fdclose;d_strategy_t fdstrategy;d_ioctl_t fdioctl;#define fddump nxdump#define fdsize zerosize#else#define Fdopen nxopen#define fdclose nxclose#define fdstrategy nxstrategy#define fdioctl nxioctl#define fddump nxdump#define fdsize zerosize#endif#include "vn.h"#if NVN > 0d_open_t vnopen;d_close_t vnclose;d_strategy_t vnstrategy;d_ioctl_t vnioctl;d_dump_t vndump;d_psize_t vnsize;#else#define vnopen nxopen#define vnclose nxclose#define vnstrategy nxstrategy#define vnioctl nxioctl#define vndump nxdump#define vnsize zerosize#endif/* Matrox Meteor capture card */#include "meteor.h"#if NMETEOR > 0d_open_t meteor_open; d_close_t meteor_close;d_read_t meteor_read;d_write_t meteor_write;d_ioctl_t meteor_ioctl;d_mmap_t meteor_mmap;#else #define meteor_open nxopen#define meteor_close nxclose #define meteor_read nxread#define meteor_write nxwrite#define meteor_ioctl nxioctl#define meteor_mmap nxmmap#endif/* Connectix QuickCam camera */#include "qcam.h"#if NQCAM > 0d_open_t qcam_open; d_close_t qcam_close;d_read_t qcam_read;d_ioctl_t qcam_ioctl;#else #define qcam_open nxopen#define qcam_close nxclose #define qcam_read nxread#define qcam_ioctl nxioctl#endif#define swopen noopen#define swclose noclose#define swioctl noioc#define swdump nodump#define swsize (d_psize_t *)enodevd_rdwr_t swread, swwrite;struct bdevsw bdevsw[] ={ { wdopen, wdclose, wdstrategy, wdioctl, /*0*/ wddump, wdsize, 0 }, { swopen, swclose, swstrategy, swioctl, /*1*/ swdump, swsize, 0 }, { Fdopen, fdclose, fdstrategy, fdioctl, /*2*/ fddump, fdsize, 0 }, { wtopen, wtclose, wtstrategy, wtioctl, /*3*/ wtdump, wtsize, B_TAPE }, { sdopen, sdclose, sdstrategy, sdioctl, /*4*/ sddump, sdsize, 0 }, { stopen, stclose, ststrategy, stioctl, /*5*/ stdump, stsize, 0 }, { cdopen, cdclose, cdstrategy, cdioctl, /*6*/ cddump, cdsize, 0 }, { mcdopen, mcdclose, mcdstrategy, mcdioctl, /*7*/ mcddump, mcdsize, 0 }, { lkmopen, lkmclose, lkmstrategy, lkmioctl, /*8*/ lkmdump, lkmsize, NULL }, { lkmopen, lkmclose, lkmstrategy, lkmioctl, /*9*/ lkmdump, lkmsize, NULL }, { lkmopen, lkmclose, lkmstrategy, lkmioctl, /*10*/ lkmdump, lkmsize, NULL }, { lkmopen, lkmclose, lkmstrategy, lkmioctl, /*11*/ lkmdump, lkmsize, NULL }, { lkmopen, lkmclose, lkmstrategy, lkmioctl, /*12*/ lkmdump, lkmsize, NULL }, { lkmopen, lkmclose, lkmstrategy, lkmioctl, /*13*/ lkmdump, lkmsize, NULL }, /* block device 14 is reserved for local use */ { nxopen, nxclose, nxstrategy, nxioctl, /*14*/ nxdump, zerosize, NULL }, { vnopen, vnclose, vnstrategy, vnioctl, /*15*/ vndump, vnsize, 0 }, { scdopen, scdclose, scdstrategy, scdioctl, /*16*/ scddump, scdsize, 0 }, { matcdopen, matcdclose, matcdstrategy, matcdioctl, /*17*/ matcddump, matcdsize, 0 }, { ataopen, ataclose, atastrategy, ataioctl, /*18*/ atadump, atasize, 0 }, { wcdopen, wcdclose, wcdstrategy, wcdioctl, /*19*/ nxdump, zerosize, 0 }, { odopen, odclose, odstrategy, odioctl, /*20*/ oddump, zerosize, 0 }, { ccdopen, ccdclose, ccdstrategy, ccdioctl, /*21*/ ccddump, ccdsize, 0 },/* * If you need a bdev major number for a driver that you intend to donate * back to the group or release publically, please contact the FreeBSD team * by sending mail to "FreeBSD-hackers@freefall.cdrom.com". * If you assign one yourself it may conflict with someone else. * Otherwise, simply use the one reserved for local use. */};int nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]);/* console */#include "machine/cons.h"/* more console */#include "sc.h"#include "vt.h"#if NSC > 0# if NVT > 0 && !defined(LINT)# error "sc0 and vt0 are mutually exclusive"# endifd_open_t scopen;d_close_t scclose;d_rdwr_t scread, scwrite;d_ioctl_t scioctl;d_mmap_t scmmap;d_ttycv_t scdevtotty;#elif NVT > 0d_open_t pcopen;d_close_t pcclose;d_rdwr_t pcread, pcwrite;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?