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 + -
显示快捷键?