⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 conf.c

📁 早期freebsd实现
💻 C
📖 第 1 页 / 共 2 页
字号:
	seltrue, (dev_type_map((*))) enodev, \	0 }#include "ms.h"#define msmap msmmapcdev_decl(ms);/* open, close, read, write, ioctl, select */#define	cdev_ms_init(c,n) { \	dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \	dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \	(dev_type_reset((*))) nullop, 0, seltrue, (dev_type_map((*))) enodev, \	0 }#include "fb.h"cdev_decl(fb);/* open, close, ioctl, mmap */#define	cdev_fb_init(c,n) { \	dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \	(dev_type_write((*))) enodev, dev_init(c,n,ioctl), \	(dev_type_stop((*))) enodev, \	(dev_type_reset((*))) nullop, 0, seltrue, (dev_type_map((*))) enodev, 0 }/*	(dev_type_reset((*))) nullop, 0, seltrue, dev_init(c,n,map), 0 }*/#include "st.h"cdev_decl(st);#include "lb.h"cdev_decl(lbp);#include "ir.h"cdev_decl(ir);/* open, close, read, ioctl */#define	cdev_ir_init(c,n) { \	dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \	(dev_type_write((*))) enodev, dev_init(c,n,ioctl), \	(dev_type_stop((*))) enodev, (dev_type_reset((*))) nullop, 0, \	seltrue, (dev_type_map((*))) enodev, 0 }cdev_decl(log);/* open, close, read, ioctl, select -- XXX should be a generic device */#define	cdev_log_init(c,n) { \	dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \	(dev_type_write((*))) enodev, dev_init(c,n,ioctl), \	(dev_type_stop((*))) enodev, (dev_type_reset((*))) nullop, 0, \	dev_init(c,n,select), (dev_type_map((*))) enodev, 0 }dev_type_open(fdopen);/* open */#define	cdev_fd_init(c,n) { \	dev_init(c,n,open), (dev_type_close((*))) enodev, \	(dev_type_read((*))) enodev, (dev_type_write((*))) enodev, \	(dev_type_ioctl((*))) enodev, (dev_type_stop((*))) enodev, \	(dev_type_reset((*))) enodev, 0, (dev_type_select((*))) enodev, \	(dev_type_map((*))) enodev, 0 }cdev_decl(vn);/* open, read, write, ioctl -- XXX should be a disk */#define	cdev_vn_init(c,n) { \	dev_init(c,n,open), (dev_type_close((*))) nullop, dev_init(c,n,read), \	dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \	(dev_type_reset((*))) nullop, 0, seltrue, (dev_type_map((*))) enodev, \	0 }#include "bpfilter.h"cdev_decl(bpf);/* open, close, read, write, ioctl, select -- XXX should be generic device */#define	cdev_bpf_init(c,n) { \	dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \	dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \	(dev_type_reset((*))) enodev, 0, dev_init(c,n,select), \	(dev_type_map((*))) enodev, 0 }struct cdevsw	cdevsw[] ={	cdev_vc_init(1,vc),		/* 0: virtual console */	cdev_tty_init(NRS,rs),		/* 1: rs232c */	cdev_ctty_init(1,ctty),		/* 2: controlling terminal */	cdev_mm_init(1,mm),		/* 3: /dev/{null,mem,kmem,...} */	cdev_disk_init(NSD,sd_c_),	/* 4: scsi disk */	cdev_disk_init(NFD,fd_c_),     	/* 5: floppy disk */	cdev_disk_init(NLP,lp),		/* 6: printer */	cdev_swap_init(1,sw),		/* 7: /dev/drum (swap pseudo-device) */	cdev_tty_init(NPTY,pts),	/* 8: pseudo-tty slave */	cdev_ptc_init(NPTY,ptc),	/* 9: pseudo-tty master */	cdev_notdef(),			/* 10: md (sony memory disk) */	cdev_kb_init(NKB,kb),		/* 11: keyboard */	cdev_ms_init(NMS,ms),		/* 12: mouse */	cdev_fd_init(1,fd),		/* 13: file descriptor pseudo-dev */	cdev_fb_init(NFB,fb),		/* 14: frame buffer */	cdev_vn_init(NVN,vn),		/* 15: vnode disk */	cdev_tape_init(NST,st),		/* 16: scsi tape */	cdev_kb_init(NLB,lbp),		/* 17: lbp */	cdev_ir_init(NIR,ir),		/* 18: image reader */	cdev_notdef(),			/* 19: vme */	cdev_notdef(),			/* 20: gpib */	cdev_notdef(),			/* 21: rd */	cdev_tty_init(NBM,cn),		/* 22: console display device */	cdev_notdef(),			/* 23: ether */	cdev_bpf_init(NBPFILTER,bpf),	/* 24: berkeley packet filter */	cdev_notdef(),			/* 25 */	cdev_notdef(),			/* 26 */	cdev_notdef(),			/* 27 */	cdev_notdef(),			/* 28: scsi */	cdev_notdef(),			/* 29: sony shm */	cdev_notdef(),			/* 30: sony semaphoe? */	cdev_notdef(),			/* 31: vvcrs */	cdev_notdef(),			/* 32: fddi */	cdev_log_init(1,log),		/* 33: /dev/klog */	cdev_notdef(),			/* 34: image board */	cdev_notdef(),			/* 35: sb? */	cdev_notdef(),			/* 36: sbe? */	cdev_notdef(),			/* 37: vd (safs) */	cdev_notdef(),			/* 38: xd (safs) */	cdev_notdef(),			/* 39: isdn */	cdev_notdef(),			/* 40: rb */	cdev_notdef(),			/* 41: gs */	cdev_notdef(),			/* 42: rx */};int	nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]);int	mem_no = 2; 	/* major device number of memory special file *//* * Swapdev is a fake device implemented * in sw.c used only internally to get to swstrategy. * It cannot be provided to the users, because the * swstrategy routine munches the b_dev and b_blkno entries * before calling the appropriate driver.  This would horribly * confuse, e.g. the hashing routines. Instead, /dev/drum is * provided as a character (raw) device. */dev_t	swapdev = makedev(1, 0);/* * Routine that identifies /dev/mem and /dev/kmem. * * A minimal stub routine can always return 0. */iskmemdev(dev)	dev_t dev;{	if (major(dev) == 3 && (minor(dev) == 0 || minor(dev) == 1))		return (1);	return (0);}iszerodev(dev)	dev_t dev;{	return (major(dev) == 3 && minor(dev) == 12);}/* * Routine to determine if a device is a disk. * * A minimal stub routine can always return 0. */isdisk(dev, type)	dev_t dev;	int type;{	switch (major(dev)) {	case 0:	case 3:		if (type == VBLK)			return (1);		return (0);	case 4:	case 15:		if (type == VCHR)			return (1);		/* FALLTHROUGH */	default:		return (0);	}	/* NOTREACHED */}#define MAXDEV	43static int chrtoblktbl[MAXDEV] =  {      /* VCHR */      /* VBLK */	/* 0 */		NODEV,	/* 1 */		NODEV,	/* 2 */		NODEV,	/* 3 */		NODEV,	/* 4 */		0,	/* 5 */		NODEV,	/* 6 */		NODEV,	/* 7 */		NODEV,	/* 8 */		NODEV,	/* 9 */		NODEV,	/* 10 */	NODEV,	/* 11 */	NODEV,	/* 12 */	NODEV,	/* 13 */	NODEV,	/* 14 */	NODEV,	/* 15 */	3,	/* 16 */	NODEV,	/* 17 */	NODEV,	/* 18 */	NODEV,	/* 19 */	NODEV,	/* 20 */	NODEV,	/* 21 */	NODEV,	/* 22 */	NODEV,	/* 23 */	NODEV,	/* 24 */	NODEV,	/* 25 */	NODEV,	/* 26 */	NODEV,	/* 27 */	NODEV,	/* 28 */	NODEV,	/* 29 */	NODEV,	/* 30 */	NODEV,	/* 31 */	NODEV,	/* 32 */	NODEV,	/* 33 */	NODEV,	/* 34 */	NODEV,	/* 35 */	NODEV,	/* 36 */	NODEV,	/* 37 */	NODEV,	/* 38 */	NODEV,	/* 39 */	NODEV,	/* 40 */	NODEV,	/* 41 */	NODEV,	/* 42 */	NODEV,};/* * Routine to convert from character to block device number. * * A minimal stub routine can always return NODEV. */chrtoblk(dev)	dev_t dev;{	int blkmaj;	if (major(dev) >= MAXDEV || (blkmaj = chrtoblktbl[major(dev)]) == NODEV)		return (NODEV);	return (makedev(blkmaj, minor(dev)));}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -