亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dh.c

?? unix v7是最后一個廣泛發布的研究型UNIX版本
?? C
字號:
/* *	DH-11 driver *	This driver calls on the DHDM driver. *	If the DH has no DM11-BB, then the latter will *	be fake. To insure loading of the correct DM code, *	lib2 should have dhdm.o, dh.o and dhfdm.o in that order. */#include "../h/param.h"#include "../h/conf.h"#include "../h/dir.h"#include "../h/user.h"#include "../h/tty.h"#define	q3	tp->t_outq#define	DHADDR	((struct device *)0160020)#define	NDH11	16	/* number of lines */struct	tty dh11[NDH11];char	dhcc[NDH11];int	dhchars[(NDH11+15)/16];int	ndh11	= NDH11;int	dhstart();int	ttrstrt();/* * Hardware control bits */#define	BITS6	01#define	BITS7	02#define	BITS8	03#define	TWOSB	04#define	PENABLE	020/* DEC manuals incorrectly say this bit causes generation of even parity. */#define	OPAR	040#define	HDUPLX	040000#define	IENAB	030100#define	PERROR	010000#define	FRERROR	020000#define	OVERRUN	040000#define	XINT	0100000#define	SSPEED	7	/* standard speed: 300 baud */#define	NSILO	16#define	DHTIME	6extern int dhtimer();/* * DM control bits */#define	TURNON	03	/* CD lead + line enable */#define	TURNOFF	01	/* line enable */#define	RQS	04	/* request to send *//* * Software copy of last dhbar */int	dhsar[(NDH11+15)/16];struct device{	union {		int	dhcsr;		char	dhcsrl;	} un;	int	dhnxch;	int	dhlpr;	char	*dhcar;	int	dhbcr;	int	dhbar;	int	dhbreak;	int	dhsilo;};/* * Open a DH11 line. */dhopen(dev, flag){	register struct tty *tp;	register d;	register struct device *addr;	static	timer_on;	int s;	d = minor(dev);	if (d >= NDH11) {		u.u_error = ENXIO;		return;	}	tp = &dh11[d];	addr = DHADDR;	addr += d>>4;	tp->t_addr = (caddr_t)addr;	tp->t_oproc = dhstart;	tp->t_iproc = NULL;	tp->t_state |= WOPEN;	s = spl6();	if (!timer_on) {		timer_on++;		timeout(dhtimer, (caddr_t)0, DHTIME);	}	splx(s);	addr->un.dhcsr |= IENAB;	if ((tp->t_state&ISOPEN) == 0) {		ttychars(tp);		tp->t_ispeed = SSPEED;		tp->t_ospeed = SSPEED;		tp->t_flags = ODDP|EVENP|ECHO;		dhparam(d);	}	if (tp->t_state&XCLUDE && u.u_uid!=0) {		u.u_error = EBUSY;		return;	}	dmopen(d);	(*linesw[tp->t_line].l_open)(dev,tp);}/* * Close a DH11 line. */dhclose(dev, flag)dev_t dev;int  flag;{	register struct tty *tp;	register d;	d = minor(dev);	tp = &dh11[d];	(*linesw[tp->t_line].l_close)(tp);	if (tp->t_state&HUPCLS)		dmctl(d, TURNOFF);	ttyclose(tp);}/* * Read from a DH11 line. */dhread(dev){register struct tty *tp;	tp = &dh11[minor(dev)];	(*linesw[tp->t_line].l_read)(tp);}/* * write on a DH11 line */dhwrite(dev){register struct tty *tp;	tp = &dh11[minor(dev)];	(*linesw[tp->t_line].l_write)(tp);}/* * DH11 receiver interrupt. */dhrint(dev){	register struct tty *tp;	register int c;	register struct device *addr;	addr = DHADDR;	addr += minor(dev);	while ((c = addr->dhnxch) < 0) {	/* char. present */		tp = &dh11[(minor(dev)<<4) + ((c>>8)&017)];		dhchars[minor(dev)]++;		if (tp >= &dh11[NDH11])			continue;		if((tp->t_state&ISOPEN)==0) {			wakeup((caddr_t)tp);			continue;		}		if (c&PERROR)			if ((tp->t_flags&(EVENP|ODDP))==EVENP			 || (tp->t_flags&(EVENP|ODDP))==ODDP )				continue;		if (c&FRERROR)		/* break */			if (tp->t_flags&RAW)				c = 0;	/* null (for getty) */			else				c = 0177;	/* DEL (intr) */		(*linesw[tp->t_line].l_rint)(c,tp);	}}/* * stty/gtty for DH11 */dhioctl(dev, cmd, addr, flag)caddr_t addr;{	register struct tty *tp;	tp = &dh11[minor(dev)];	if (ttioccomm(cmd, tp, addr, dev)) {		if (cmd==TIOCSETP||cmd==TIOCSETN)			dhparam(dev);	} else		u.u_error = ENOTTY;}/* * Set parameters from open or stty into the DH hardware * registers. */dhparam(dev){	register struct tty *tp;	register struct device *addr;	register d;	d = minor(dev);	tp = &dh11[d];	addr = (struct device *)tp->t_addr;	spl5();	addr->un.dhcsrl = (d&017) | IENAB;	/*	 * Hang up line?	 */	if ((tp->t_ispeed)==0) {		tp->t_state |= HUPCLS;		dmctl(d, TURNOFF);		return;	}	d = ((tp->t_ospeed)<<10) | ((tp->t_ispeed)<<6);	if ((tp->t_ispeed) == 4)		/* 134.5 baud */		d |= BITS6|PENABLE|HDUPLX;	else if (tp->t_flags&RAW)		d |= BITS8;	else		d |= BITS7|PENABLE;	if ((tp->t_flags&EVENP) == 0)		d |= OPAR;	if ((tp->t_ospeed) == 3)	/* 110 baud */		d |= TWOSB;	addr->dhlpr = d;	spl0();}/* * DH11 transmitter interrupt. * Restart each line which used to be active but has * terminated transmission since the last interrupt. */dhxint(dev){	register struct tty *tp;	register struct device *addr;	register d;	int ttybit, bar, *sbar;	d = minor(dev);	addr = DHADDR + d;	addr->un.dhcsr &= ~XINT;	sbar = &dhsar[d];	bar = *sbar & ~addr->dhbar;	d <<= 4; ttybit = 1;	for(; bar; d++, ttybit <<= 1) {		if(bar&ttybit) {			*sbar &= ~ttybit;			bar &= ~ttybit;			tp = &dh11[d];			if (tp->t_line) {				(*linesw[tp->t_line].l_start)(tp);			} else {				addr->un.dhcsrl = (d&017)|IENAB;				if (tp->t_state&FLUSH)					tp->t_state &= ~FLUSH;				else {					ndflush(&q3, addr->dhcar-q3.c_cf);				}				tp->t_state &= ~BUSY;				dhstart(tp);			}		}	}}/* * Start (restart) transmission on the given DH11 line. */dhstart(tp)register struct tty *tp;{	register struct device *addr;	register nch;	int s, d;	/*	 * If it's currently active, or delaying,	 * no need to do anything.	 */	s = spl5();	d = tp-dh11;	addr = (struct device *)tp->t_addr;	if (tp->t_state&(TIMEOUT|BUSY|TTSTOP))		goto out;	/*	 * If the writer was sleeping on output overflow,	 * wake him when low tide is reached.	 */	if (tp->t_state&ASLEEP && tp->t_outq.c_cc<=TTLOWAT) {		tp->t_state &= ~ASLEEP;		if (tp->t_chan)			mcstart(tp->t_chan, (caddr_t)&tp->t_outq); else			wakeup((caddr_t)&tp->t_outq);	}	if (tp->t_outq.c_cc == 0)		goto out;	/*	 * Find number of characters to transfer.	 */	if (tp->t_flags & RAW) {		nch = ndqb(&tp->t_outq, 0);	} else {		nch = ndqb(&tp->t_outq, 0200);		if (nch == 0) {			nch = getc(&tp->t_outq);			timeout(ttrstrt, (caddr_t)tp, (nch&0177)+6);			tp->t_state |= TIMEOUT;			goto out;		}	}	/*	 * If any characters were set up, start transmission;	 */	if (nch) {		addr->un.dhcsrl = (d&017)|IENAB;		addr->dhcar = tp->t_outq.c_cf;		addr->dhbcr = -nch;		dhcc[d] = nch;		nch = 1<<(d&017);		addr->dhbar |= nch;		dhsar[d>>4] |= nch;		tp->t_state |= BUSY;	}    out:	splx(s);}/* * Stop output on a line. */dhstop(tp, flag)register struct tty *tp;{	register struct device *addr;	register d, s;	addr = (struct device *)tp->t_addr;	s = spl6();	if (tp->t_state & BUSY) {		d = minor(tp->t_dev);		addr->un.dhcsrl = (d&017) | IENAB;		if ((tp->t_state&TTSTOP)==0) {			tp->t_state |= FLUSH;		}		addr->dhbcr = -1;	}	splx(s);}dhtimer(dev){register d,cc;register struct device *addr;	addr = DHADDR; d = 0;	do {		cc = dhchars[d];		dhchars[d] = 0;		if (cc > 50)			cc = 32; else			if (cc > 16)				cc = 16; else				cc = 0;		addr->dhsilo = cc;		addr += 1;		dhrint(d++);	} while (d < (NDH11+15)/16);	timeout(dhtimer, (caddr_t)0, DHTIME);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区专区| 人妖欧美一区二区| 久久久久久久综合狠狠综合| 欧美日韩一级片在线观看| 色综合色狠狠综合色| 91美女在线观看| 99久久婷婷国产综合精品| 成人免费视频一区| 国产成人精品免费视频网站| 国产一本一道久久香蕉| 国产精品夜夜嗨| www.欧美日韩| 色悠悠久久综合| 欧美精品在线观看一区二区| 日韩一区二区三区四区| 精品日韩欧美在线| 国产精品毛片无遮挡高清| 亚洲欧美日韩国产成人精品影院 | 久久福利资源站| 精品在线你懂的| 丰满少妇在线播放bd日韩电影| 国产99精品视频| 91亚洲资源网| 欧美一区二区视频在线观看2022 | hitomi一区二区三区精品| 99久久777色| 日韩三级视频在线观看| 日本一区二区动态图| 亚洲精品成人天堂一二三| 免费看欧美女人艹b| 波多野结衣中文字幕一区 | 久久精品国产99| 成人av网在线| 欧美一区二区啪啪| 国产精品日韩成人| 男男gaygay亚洲| 91视频免费播放| 日韩无一区二区| 亚洲三级视频在线观看| 青草av.久久免费一区| 99精品国产热久久91蜜凸| 91精品在线免费| 日韩一区中文字幕| 久久99国内精品| 91国偷自产一区二区开放时间| 日韩亚洲欧美中文三级| 综合久久一区二区三区| 九九国产精品视频| 欧美视频一区二区| 中文字幕一区二区三区不卡| 蜜臀国产一区二区三区在线播放| 91视视频在线观看入口直接观看www| 91超碰这里只有精品国产| 自拍视频在线观看一区二区| 国产中文字幕一区| 91精品国产色综合久久不卡蜜臀| 亚洲欧美乱综合| 成人涩涩免费视频| 久久精品免视看| 久久精品久久99精品久久| 欧洲av一区二区嗯嗯嗯啊| 国产女同互慰高潮91漫画| 美国毛片一区二区三区| 欧美电影在哪看比较好| 亚洲一区二区三区影院| 色偷偷一区二区三区| 亚洲日本在线观看| 不卡一区在线观看| 国产精品色在线| 粉嫩aⅴ一区二区三区四区| 久久综合国产精品| 精品午夜久久福利影院 | 精品无人码麻豆乱码1区2区| 欧美一区二区三区白人| 日韩影院精彩在线| 777午夜精品免费视频| 日韩精品五月天| 7777精品伊人久久久大香线蕉 | 亚洲精品福利视频网站| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 精品一区精品二区高清| 日韩欧美在线观看一区二区三区| 丝袜美腿亚洲综合| 欧美一级午夜免费电影| 蜜桃精品视频在线观看| 日韩美女天天操| 国产一区二区视频在线播放| 欧美激情一区二区三区全黄| 成人妖精视频yjsp地址| 亚洲欧洲日韩在线| 欧美影院一区二区三区| 日日摸夜夜添夜夜添国产精品| 欧美一区二区视频在线观看| 捆绑调教一区二区三区| 国产欧美一区二区精品婷婷| av不卡在线观看| 亚洲一区二区三区不卡国产欧美| 69堂国产成人免费视频| 狠狠色狠狠色合久久伊人| 中文字幕乱码久久午夜不卡| 色婷婷精品久久二区二区蜜臂av| 视频精品一区二区| 精品盗摄一区二区三区| 色综合天天综合网天天看片| 亚洲成a人v欧美综合天堂| 精品国产伦一区二区三区观看体验| 国产成人在线免费观看| 一区二区三区久久| 精品国产免费久久| 在线视频国内自拍亚洲视频| 久久99久久99小草精品免视看| 中文字幕日韩精品一区| 欧美日韩国产一级片| 国产一区视频在线看| 亚洲最新视频在线观看| 久久午夜色播影院免费高清 | 日韩av电影一区| 国产精品久久久久永久免费观看 | 一区二区在线观看免费视频播放| 日韩一区二区三区在线| 91原创在线视频| 精东粉嫩av免费一区二区三区| 亚洲精品国久久99热| 久久亚洲综合av| 欧美日韩1234| 972aa.com艺术欧美| 另类小说综合欧美亚洲| 亚洲国产精品一区二区www在线 | 亚洲你懂的在线视频| 久久久久国产精品人| 在线不卡a资源高清| 99久久精品国产观看| 国产盗摄视频一区二区三区| 天堂av在线一区| 亚洲一区在线视频| 国产精品看片你懂得| 欧美激情综合五月色丁香小说| 日韩欧美视频在线| 欧美日韩精品三区| 日本久久电影网| 97精品久久久久中文字幕| 高清视频一区二区| 国产剧情av麻豆香蕉精品| 日韩高清在线观看| 日韩av中文字幕一区二区三区| 亚洲一二三四久久| 一区二区三区在线观看动漫| 亚洲日本电影在线| 亚洲视频免费在线观看| 国产精品理论在线观看| 国产精品成人网| 亚洲婷婷综合色高清在线| 亚洲欧洲日本在线| 国产精品久久久久影院老司| 国产精品网曝门| 亚洲少妇30p| 一区二区三区在线高清| 亚洲国产一区二区在线播放| 亚洲宅男天堂在线观看无病毒| 一区二区三区波多野结衣在线观看| 亚洲免费在线播放| 亚洲第一成人在线| 日本不卡高清视频| 国产在线播放一区二区三区| 国产乱人伦偷精品视频免下载| 国产精品88av| caoporm超碰国产精品| 99精品国产一区二区三区不卡 | 亚洲18色成人| 麻豆免费看一区二区三区| 国产乱子轮精品视频| 大白屁股一区二区视频| 成人高清视频免费观看| 在线看不卡av| 精品三级在线观看| 国产精品另类一区| 亚洲主播在线播放| 久久99热99| 99国产精品久久久久| 欧美精品一卡两卡| 国产午夜三级一区二区三| 亚洲日本免费电影| 久久精品国产精品亚洲红杏| 成人激情免费网站| 欧美亚洲综合在线| 久久婷婷综合激情| 亚洲美腿欧美偷拍| 精品一区二区三区的国产在线播放| 国产成人免费视频精品含羞草妖精| 91亚洲精品久久久蜜桃网站| 69成人精品免费视频| 中文字幕在线一区二区三区| 日韩高清在线电影| aaa国产一区| 久久影院视频免费| 亚洲v精品v日韩v欧美v专区| 成人天堂资源www在线| 在线电影欧美成精品| 亚洲精品国产成人久久av盗摄| 国产在线精品不卡|