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

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

?? pk0.c

?? unix v7是最后一個廣泛發布的研究型UNIX版本
?? C
字號:
#define	KERNEL	1#include "../h/pk.p"/* * packet driver */char next[8]	={ 1,2,3,4,5,6,7,0};	/* packet sequence numbers */char mask[8]	={ 1,2,4,010,020,040,0100,0200 };struct pack *pklines[NPLINES];/* * receive control messages */pkcntl(cntl, pk)register cntl;register struct pack *pk;{register val;register m;	val = cntl & MOD8;	if ( NOTCNTL(cntl) ) {		pkbadframe(pk);		return;	}	cntl >>= 3;	pk->p_state &= ~BADFRAME;	m = pk->p_msg;	switch(cntl) {	case INITB:		val++;		pk->p_xsize = pksizes[val];		pk->p_lpsize = val;		pk->p_bits = DTOM(pk->p_xsize);		if (pk->p_state & LIVE) {			pk->p_msg |= M_INITC;			break;		}		pk->p_state |= INITb;		if ((pk->p_state & INITa)==0) {			break;		}		pk->p_rmsg &= ~M_INITA;		pk->p_msg |= M_INITC;		break;	case INITC:		if ((pk->p_state&INITab)==INITab) {			pk->p_state = LIVE;			WAKEUP(&pk->p_state);			pk->p_rmsg &= ~(M_INITA|M_INITB);		} else			if ((pk->p_state&LIVE)==0)				pk->p_msg |= M_INITB;		if (val)			pk->p_swindow = val;		break;	case INITA:		if (val==0 && pk->p_state&LIVE) {			printf("alloc change\n");			break;		}		if (val) {			pk->p_state |= INITa;			pk->p_msg |= M_INITB;			pk->p_rmsg |= M_INITB;			pk->p_swindow = val;		}		break;	case RJ:		pk->p_state |= RXMIT;		pk->p_msg |= M_RR;	case RR:		pk->p_rpr = val;		if (pksack(pk)==0) {			WAKEUP(&pk->p_ps);		}		break;	case CLOSE:		pk->p_state = DOWN+RCLOSE;		pk->p_rmsg = 0;		WAKEUP(&pk->p_pr);		WAKEUP(&pk->p_ps);		WAKEUP(&pk->p_state);		return;	}	if (pk->p_msg==0)		pk->p_msg |= pk->p_rmsg;	if (m==0 && pk->p_msg)		pkoutput(pk);}/* * Send RJ message on first framing error. * Cleared by receiving a good frame  * (pkcntl or pkdata). */pkbadframe(pk)register struct pack *pk;{	WAKEUP(&pk->p_pr);	if (pk->p_state & BADFRAME)		return;	pk->p_state |= BADFRAME;	pk->p_timer = 2;}/* * Look at sequence numbers (mostly). */pkaccept(pk)register struct pack *pk;{register x, seq;char m, cntl, *p, imask, **bp;int bad, accept, skip, s, t, cc;unsigned short sum;	bad = accept = skip = 0;	/*	 * wait for input	 */	LOCK;	x = next[pk->p_pr];	if((imask=pk->p_imap)==0 && pk->p_rcount==0) {		UNLOCK;		goto out;	}	pk->p_imap = 0;	UNLOCK;	/*	 * determine input window in m.	 */	t = (~(-1<<pk->p_rwindow)) <<x;	m = t;	m |= t>>8;	/*	 * mark newly accepted input buffers	 */	for(x=0; x<8; x++) {		if ((imask & mask[x]) == 0)			continue;		if (((cntl=pk->p_is[x])&0200)==0) {			bad++;free:			bp = (char **)pk->p_ib[x];			LOCK;			*bp = (char *)pk->p_ipool;			pk->p_ipool = bp;			pk->p_is[x] = 0;			UNLOCK;			continue;		}		pk->p_is[x] = ~(B_COPY+B_MARK);		sum = (unsigned)chksum(pk->p_ib[x], pk->p_rsize) ^ (unsigned)cntl;		sum += pk->p_isum[x];		if (sum == CHECK) {			seq = (cntl>>3) & MOD8;			if (m & mask[seq]) {				if (pk->p_is[seq] & (B_COPY | B_MARK)) {				dup:					skip++;					goto free;				}				if (x != seq) {					LOCK;					p = pk->p_ib[x];					pk->p_ib[x] = pk->p_ib[seq];					pk->p_is[x] = pk->p_is[seq];					pk->p_ib[seq] = p;					UNLOCK;				}				pk->p_is[seq] = B_MARK;				accept++;				cc = 0;				if (cntl&B_SHORT) {					pk->p_is[seq] = B_MARK+B_SHORT;					p = pk->p_ib[seq];					cc = (unsigned)*p++;					if (cc & 0200) {						cc &= 0177;						cc |= *p << 7;					}				}				pk->p_isum[seq] = pk->p_rsize - cc;			} else {				goto dup;			}		} else {			bad++;			goto free;		}	}	/*	 * scan window again turning marked buffers into	 * COPY buffers and looking for missing sequence	 * numbers.	 */	accept = 0;	for(x=next[pk->p_pr],t= -1; m & mask[x]; x = next[x]) {		if (pk->p_is[x] & B_MARK)			pk->p_is[x] |= B_COPY;		if (pk->p_is[x] & B_COPY) {			if (t >= 0) {				bp = (char **)pk->p_ib[x];				LOCK;				*bp = (char *)pk->p_ipool;				pk->p_ipool = bp;				pk->p_is[x] = 0;				UNLOCK;				skip++;			} else 				accept++;		} else {			if (t<0)				t = x;		}	}	if (bad) {		pk->p_msg |= M_RJ;	} else 	if (skip) {		pk->p_msg |= M_RR;	}	pk->p_rcount = accept;out:	if (pk->p_msg)		pkoutput(pk);	return(accept);}pkread(S)SDEF;{register struct pack *pk;register x,s;int is,cc,xfr,count;char *cp, **bp;	pk = PADDR;	xfr = 0;	count = -1;	while (pkaccept(pk) == 0) {		PKGETPKT(pk);		if (pk->p_state&DOWN) {			SETERROR;			goto out;		}		if (SLEEPNO) {			count++;			goto out;		}		SLEEP(&pk->p_pr, PKIPRI);	}	count = 0;	while (UCOUNT) {		x = next[pk->p_pr];		is = pk->p_is[x];		if (is & B_COPY) {			cc = MIN(pk->p_isum[x], UCOUNT);			if (cc==0 && xfr) {				break;			}			if (is & B_RESID)				cp = pk->p_rptr;			else {				cp = pk->p_ib[x];				if (is & B_SHORT) {					if (*cp++ & 0200)						*cp++;				}			}			IOMOVE(cp,cc,B_READ);			count += cc;			xfr++;			pk->p_isum[x] -= cc;			if (pk->p_isum[x] == 0) {				LOCK;				pk->p_pr = x;				bp = (char **)pk->p_ib[x];				*bp = (char *)pk->p_ipool;				pk->p_ipool = bp;				pk->p_is[x] = 0;				pk->p_rcount--;				UNLOCK;				pk->p_msg |= M_RR;			} else {				pk->p_rptr = cp+cc;				pk->p_is[x] |= B_RESID;			}			if (cc==0)				break;		} else			break;	}	pkoutput(pk);	if (SLEEPNO)		count = pk->p_rcount;out:	return(count);}pkwrite(S)SDEF;{register struct pack *pk;register x;int partial;caddr_t cp;int cc, s, fc, count;int pktimeout();	pk = PADDR;	if ((pk->p_state&LIVE)==0) {	down:		SIGNAL;		SETERROR;		return(-1);	}	count = UCOUNT;	do {		LOCK;		while (pk->p_xcount>=pk->p_swindow)  {			pkoutput(pk);			PKGETPKT(pk);			SLEEP(&pk->p_ps,PKOPRI);			if (pk->p_state&DOWN)				goto down;		}		x = next[pk->p_pscopy];		while (pk->p_os[x]!=B_NULL)  {			goto down;		}		pk->p_os[x] = B_MARK;		pk->p_pscopy = x;		pk->p_xcount++;		UNLOCK;		cp = pk->p_ob[x] = (char *)GETEPACK;		partial = 0;		if ((int)UCOUNT < pk->p_xsize) {			cc = UCOUNT;			fc = pk->p_xsize - cc;			*cp = fc&0177;			if (fc > 127) {				*cp++ |= 0200;				*cp++ = fc>>7;			} else				cp++;			partial = B_SHORT;		} else			cc = pk->p_xsize;		IOMOVE(cp,cc,B_WRITE);		pk->p_osum[x] = chksum(pk->p_ob[x], pk->p_xsize);		pk->p_os[x] = B_READY+partial;		pkoutput(pk);	} while (UCOUNT);	return(count-UCOUNT);}pksack(pk)register struct pack *pk;{register x, i;int s;	i = 0;	LOCK;	for(x=pk->p_ps; x!=pk->p_rpr; ) {		x = next[x];		if (pk->p_os[x]&B_SENT) {			i++;			FREEPACK(pk->p_ob[x], pk->p_bits);			pk->p_os[x] = B_NULL;			pk->p_state &= ~WAITO;			pk->p_xcount--;			pk->p_ps = x;			WAKEUP(&pk->p_ps);		}	}	UNLOCK;	return(i);}pkoutput(pk)register struct pack *pk;{register x;int s;char bstate;int i;SDEF;extern pkzot;	ISYSTEM;	LOCK;	if (OBUSY) {		UNLOCK;		return;	}	/*	 * find seq number and buffer state	 * of next output packet	 */	if (pk->p_state&RXMIT)  {		pk->p_nxtps = next[pk->p_rpr];		pk->p_state &= ~RXMIT;	}	x = pk->p_nxtps;	bstate = pk->p_os[x];	/*	 * Send control packet if indicated	 */	if (pk->p_msg) {		if (pk->p_msg & ~M_RR || !(bstate&B_READY) ) {			x = pk->p_msg;			for(i=0; i<8; i++) 				if (x&1)					break; else				x >>= 1;			x = i;			x <<= 3;			switch(i) {			case CLOSE:				break;			case RJ:			case RR:				x += pk->p_pr;				break;			case SRJ:				break;			case INITB:				x += pksize(pk->p_rsize);				break;			case INITC:				x += pk->p_rwindow;				break;			case INITA:				x += pk->p_rwindow;				break;			}			pk->p_msg &= ~mask[i];			pkxstart(pk, x, -1);			goto out;		}	}	/*	 * Don't send data packets if line is marked dead.	 */	if (pk->p_state&DOWN || (pk->p_state&LIVE)==0) {		WAKEUP(&pk->p_ps);		goto out;	}	/*	 * Start transmission (or retransmission) of data packets.	 */	if (bstate & (B_READY|B_SENT)) {		char seq;		bstate |= B_SENT;		seq = x;		pk->p_nxtps = next[x];		x = 0200+pk->p_pr+(seq<<3);		if (bstate & B_SHORT)			x |= 0100;		pkxstart(pk, x, seq);		if (pk->p_os[seq])			pk->p_os[seq] = bstate;		pk->p_nout++;		goto out;	}	/*	 * enable timeout if there's nothing to send	 * and transmission buffers are languishing	 */	if (pk->p_xcount) {		pk->p_timer = 10+pkzot;		pk->p_state |= WAITO;	} else		pk->p_state &= ~WAITO;	WAKEUP(&pk->p_ps);out:	pk->p_obusy = 0;	UNLOCK;}/* * shut down line by *	ignoring new input *	letting output drain *	releasing space and turning off line discipline */pkclose(S)SDEF;{register struct pack *pk;register i,s,rbits;char **bp;#define	NTRIES	1	pk = PADDR;	pk->p_state |= DRAINO;	/*	 * try to flush output	 */	i = 0;	LOCK;	if (pklive(pk)==0) {		pk->p_state = DOWN;		UNLOCK;		goto final;	}	pk->p_timer = 2;	while (pk->p_xcount && pk->p_state&LIVE) {		if (pk->p_state&(RCLOSE+DOWN) || ++i > NTRIES)			break;		pkoutput(pk);		SLEEP(&pk->p_ps,PKOPRI);	}	pk->p_timer = 0;	pk->p_state |= DOWN;	UNLOCK;	/*	 * try to exchange CLOSE messages	 */	i = 0;	while ((pk->p_state&RCLOSE)==0 && i<NTRIES) {		pk->p_msg = M_CLOSE;		pk->p_timer = 2;		pkoutput(pk);		SLEEP(&pk->p_ps, PKOPRI);		i++;	}final:	TURNOFF;	/*	 * free space	 */	rbits = DTOM(pk->p_rsize);	for (i=0;i<8;i++) {		if (pk->p_os[i]!=B_NULL) {			FREEPACK(pk->p_ob[i],pk->p_bits);			pk->p_xcount--;		}		if (pk->p_is[i]!=B_NULL)  {			FREEPACK(pk->p_ib[i],rbits);		}	}	LOCK;	while (pk->p_ipool != NULL) {		bp = pk->p_ipool;		pk->p_ipool = (char **)*bp;		FREEPACK((caddr_t)bp, rbits);	}	UNLOCK;	for(i=0;i<NPLINES;i++)		if (pklines[i]==pk)  {			pklines[i] = NULL;		}	FREEPACK((caddr_t)pk, npbits);}pkreset(pk)register struct pack *pk;{	pk->p_ps = pk->p_pr =  pk->p_rpr = 0;	pk->p_nxtps = 1;}chksum(s,n)register char *s;register n;{	register short sum;	register unsigned t;	register x;	sum = -1;	x = 0;	do {		if (sum<0) {			sum <<= 1;			sum++;		} else			sum <<= 1;		t = sum;		sum += (unsigned)*s++;		x += sum^n;		if ((unsigned)sum <= t) {			sum ^= x;		}	} while (--n > 0);	return(sum);}pkline(pk)register struct pack *pk;{register i;	for(i=0;i<NPLINES;i++) {		if (pklines[i]==pk)			return(i);	}	return(-i);}pkzero(s,n)register char *s;register n;{	while (n--)		*s++ = 0;}pksize(n)register n;{register k;	n >>= 5;	for(k=0; n >>= 1; k++);	return(k);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色女孩综合影院| 亚洲视频一区二区在线| 久久久影院官网| 综合中文字幕亚洲| 久久精品国产久精国产爱| 欧美日韩国产片| 亚洲国产精品高清| 久久国产夜色精品鲁鲁99| 日本丶国产丶欧美色综合| 久久亚洲精华国产精华液| 天天综合网天天综合色| 91丨porny丨蝌蚪视频| 久久久亚洲欧洲日产国码αv| 亚洲国产美女搞黄色| av在线综合网| 亚洲午夜精品在线| 91啪亚洲精品| 亚洲国产精品99久久久久久久久| 蜜桃视频一区二区| 5566中文字幕一区二区电影| 有码一区二区三区| 色天使久久综合网天天| 亚洲情趣在线观看| a级高清视频欧美日韩| 中文字幕乱码日本亚洲一区二区| 在线亚洲精品福利网址导航| 亚洲欧美日韩在线| 91在线观看高清| 国产精品久久久久久久久久久免费看 | 国产在线精品一区二区不卡了| 欧美日本一道本| 亚洲va韩国va欧美va| 国产亚洲1区2区3区| 国内不卡的二区三区中文字幕| 日韩亚洲欧美高清| 麻豆国产精品一区二区三区 | 91成人看片片| 亚洲一区二区三区三| 在线观看一区不卡| 国产一区二区三区四区五区美女| 久久综合久色欧美综合狠狠| 国产精品18久久久久久久网站| 久久亚洲综合av| 成人午夜免费视频| 亚洲图片你懂的| 欧美日韩成人综合天天影院| 美女www一区二区| 国产亚洲精品超碰| 91免费在线看| av中文一区二区三区| 樱花草国产18久久久久| 欧美日韩一区中文字幕| 麻豆精品视频在线| 国产精品热久久久久夜色精品三区 | 中文字幕亚洲一区二区va在线| av一二三不卡影片| 亚洲高清久久久| 亚洲伦理在线精品| 欧美日韩不卡在线| 国产在线不卡视频| 亚洲最大的成人av| 精品日韩在线观看| 97久久超碰国产精品| 亚洲va欧美va人人爽| 久久久久久免费网| 91九色02白丝porn| 国产综合久久久久久鬼色| 亚洲天堂av一区| 亚洲精品久久久蜜桃| 91精品在线免费观看| 国产91色综合久久免费分享| 亚洲制服丝袜在线| 久久久99精品免费观看| 欧美日韩成人激情| 99视频超级精品| 九一久久久久久| 一区二区三区成人| 国产精品网友自拍| 日韩视频在线你懂得| 久久久久久99久久久精品网站| 在线看国产一区| 国产成人精品影视| 日韩高清不卡一区| 亚洲免费观看高清完整| 26uuu国产电影一区二区| 欧美日本一区二区在线观看| 成人免费毛片片v| 久草精品在线观看| 日日夜夜免费精品| 一区二区三区在线播放| 久久免费看少妇高潮| 91麻豆精品国产91久久久资源速度 | 成人黄页毛片网站| 午夜影院久久久| 1区2区3区精品视频| 国产午夜精品美女毛片视频| 日韩午夜电影av| 91精品国产品国语在线不卡| 久久久久国产精品厨房| 69成人精品免费视频| 91官网在线免费观看| zzijzzij亚洲日本少妇熟睡| 国产一区二区三区蝌蚪| 精东粉嫩av免费一区二区三区| 亚洲不卡一区二区三区| 亚洲在线免费播放| 一区二区三区不卡视频在线观看 | 一区二区三区精品在线| 欧美激情中文不卡| 日本一区二区三区dvd视频在线| 日韩精品一区二区在线观看| 欧美一区二区性放荡片| 欧美日韩国产另类一区| 欧美三级电影网站| 欧美日韩在线电影| 欧美三级视频在线播放| 欧美日韩一级视频| 欧美女孩性生活视频| 69精品人人人人| 一区二区国产盗摄色噜噜| 国产精品区一区二区三区| 中文字幕乱码日本亚洲一区二区| 国产精品美女视频| 18欧美乱大交hd1984| 亚洲综合网站在线观看| 亚洲福利视频一区二区| 午夜影院久久久| 精品一区二区三区免费观看| 精久久久久久久久久久| 成人在线一区二区三区| 99精品视频在线播放观看| 色综合久久久久久久久| 国产视频一区在线观看 | 亚洲综合在线五月| 亚洲自拍另类综合| 日韩av不卡一区二区| 国产麻豆精品在线| 99久久精品免费看| 欧美日韩一卡二卡三卡| 久久综合99re88久久爱| ...xxx性欧美| 日韩电影在线免费看| 欧美日韩免费观看一区二区三区| 制服丝袜亚洲精品中文字幕| 久久久www免费人成精品| 亚洲人成在线观看一区二区| 午夜av区久久| 国产精品99久久久久久久女警| 99国产精品久久久久| 宅男噜噜噜66一区二区66| 国产亚洲综合av| 亚洲午夜久久久久久久久久久| 经典三级视频一区| 在线看一区二区| 久久久精品黄色| 成人免费视频一区| 欧美一区二区视频免费观看| 欧美国产日韩精品免费观看| 日韩电影在线免费观看| av成人动漫在线观看| 欧美一级夜夜爽| 亚洲男女一区二区三区| 国产又黄又大久久| 欧美性猛交xxxx黑人交| 国产三级三级三级精品8ⅰ区| 亚洲bt欧美bt精品| 成人18视频日本| 26uuu成人网一区二区三区| 国产99精品在线观看| 日韩欧美激情四射| 亚洲国产精品久久人人爱| 高清国产午夜精品久久久久久| 欧美一区二区在线免费观看| 亚洲乱码国产乱码精品精可以看| 国产福利91精品| 欧美mv日韩mv| 蜜臀av国产精品久久久久 | 亚洲成人一区二区在线观看| 成人久久久精品乱码一区二区三区| 91麻豆精品国产无毒不卡在线观看 | 精品国产一区二区三区不卡| 午夜视黄欧洲亚洲| 91久久精品一区二区三| 精品国产91亚洲一区二区三区婷婷| 一区二区成人在线| 91在线丨porny丨国产| 中文字幕精品—区二区四季| 精品一区二区三区视频在线观看| 欧美精品aⅴ在线视频| 日本在线不卡视频| 欧美日本在线视频| 一级女性全黄久久生活片免费| 99国产精品一区| 亚洲品质自拍视频| 91同城在线观看| 亚洲色图视频网站| 91丨porny丨最新| 1024成人网| 欧美亚洲日本国产| 天天色综合成人网|