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

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

?? flp.c

?? <B>Digital的Unix操作系統VAX 4.2源碼</B>
?? C
字號:
#ifndef lintstatic	char	*sccsid = "@(#)flp.c	4.1	(ULTRIX)	7/2/90";#endif lint/************************************************************************ *									* *			Copyright (c) 1989 by				* *		Digital Equipment Corporation, Maynard, MA		* *			All rights reserved.				* *									* *   This software is furnished under a license and may be used and	* *   copied  only  in accordance with the terms of such license and	* *   with the  inclusion  of  the  above  copyright  notice.   This	* *   software  or  any	other copies thereof may not be provided or	* *   otherwise made available to any other person.  No title to and	* *   ownership of the software is hereby transferred.			* *									* *   This software is  derived	from  software	received  from	the	* *   University    of	California,   Berkeley,   and	from   Bell	* *   Laboratories.  Use, duplication, or disclosure is	subject  to	* *   restrictions  under  license  agreements  with  University  of	* *   California and with AT&T.						* *									* *   The information in this software is subject to change  without	* *   notice  and should not be construed as a commitment by Digital	* *   Equipment Corporation.						* *									* *   Digital assumes no responsibility for the use  or	reliability	* *   of its software on equipment which is not supplied by Digital.	* *									* ************************************************************************//************************************************************************ * Modification history: /sys/vax/flp.c * * 30-May-89	darrell *	Added include of ../../machine/common/cpuconf.h -- cpu types *	were moved there. * ***********************************************************************/#if VAX780#include "../h/param.h"#include "../h/systm.h"#include "../h/conf.h"#include "../h/dir.h"#include "../h/user.h"#include "../h/buf.h"#include "../h/uio.h"#include "../vax/cons.h"#include "../vax/cpu.h"#include "../../machine/common/cpuconf.h"#include "../vax/flp.h"#include "../vax/mtpr.h"struct {	short	fl_state;		/* open and busy flags */	short	fl_active;		/* driver state flag */	struct	buf *fl_buf;		/* buffer we're using */	unsigned char *fl_xaddr;	/* transfer address */	short	fl_errcnt;} fltab;/*ARGSUSED*/flopen(dev, flag)	dev_t dev;	int flag;{	struct buf *geteblk();#if VAX750	if (cpu != VAX_780)		return (ENXIO);#endif	if (fltab.fl_state != 0)		return (ENXIO);	fltab.fl_state = FL_OPEN;	fltab.fl_buf = geteblk(512);	fltab.fl_active = FL_IDLE;	return (0);}/*ARGSUSED*/flclose(dev, flag)	dev_t dev;	int flag;{	brelse(fltab.fl_buf);	fltab.fl_state = 0;}floperation(rw, uio)	enum uio_rw rw;	struct uio *uio;{	register struct buf *bp;	register int i;	int error;	/*	 * Assume one block read/written for each call - 	 * and enforce this by checking for block size of 128.	 * Use the b_blkno field to address	 * physical, 128-byte blocks (u.u_offset/128).	 * This is checked for validity, and is further interpreted as:	 *	 *	track# * (sectors/track) + sector #	 */	if (uio->uio_resid == 0) 		return (0);	(void) spl4();	while (fltab.fl_state & FL_BUSY)		sleep((caddr_t)&fltab, PRIBIO);	fltab.fl_state |= FL_BUSY;	(void) spl0();	bp = fltab.fl_buf;	error = 0;	while ((i = imin(RXBYSEC, uio->uio_resid)) > 0) {		bp->b_blkno = uio->uio_offset>>7;		if (bp->b_blkno >= MAXSEC || (uio->uio_offset & 0177) != 0)			return (ENXIO);		if (rw == UIO_WRITE) {			error = uiomove(bp->b_un.b_addr, i, UIO_WRITE, uio);			if (error)				break;		}		bp->b_flags = rw == UIO_WRITE ? B_WRITE : B_READ;		(void) spl4(); 		flstart();		while ((bp->b_flags & B_DONE) == 0)			sleep((caddr_t)bp, PRIBIO);			(void) spl0();		if (bp->b_flags & B_ERROR) {			error = EIO;			break;		}		if (rw == UIO_READ) {			error = uiomove(bp->b_un.b_addr, i, UIO_READ, uio);			if (error)				break;		}	}	fltab.fl_state &= ~FL_BUSY;	wakeup((caddr_t)&fltab);	return (error);}/*ARGSUSED*/flread(dev, uio)	dev_t dev;	struct uio *uio;{	return (floperation(UIO_READ, uio));}/*ARGSUSED*/flwrite(dev, uio)	dev_t dev;	struct uio *uio;{	return (floperation(UIO_WRITE, uio));}flstart(){	register struct buf *bp;	bp = fltab.fl_buf;	fltab.fl_active = FL_MAND;	fltab.fl_errcnt = 0;	fltab.fl_xaddr = (unsigned char *) bp->b_un.b_addr;	bp->b_resid = 0;	bp->b_bcount = RXBYSEC; /* always transfer a full sector */	if ((mfpr(TXCS) & TXCS_RDY) == 0)		/* not ready to receive order */		return;	/*	 * Wake up floppy LSI software with command	 */	fltab.fl_active = FL_SEC;	if ((bp->b_flags&B_READ) == B_READ)		mtpr(TXDB, FL_RS);	else		mtpr(TXDB, FL_WS);}/* * See if we want to transmit something * to the floppy - and do it */conxfl(){	register int databyte;	register struct buf *bp;	bp = fltab.fl_buf;	switch (fltab.fl_active) {	case FL_MAND:		/* send command */		if ((bp->b_flags&B_READ) == B_READ)			mtpr(TXDB,FL_RS);		else			mtpr(TXDB,  FL_WS);		fltab.fl_active = FL_SEC;		break;	case FL_SEC:		/* send sector address */		databyte = (int)bp->b_blkno % RXSTRK + 1;		mtpr(TXDB, FL_DATA | databyte);		fltab.fl_active = FL_TRACK;		break;	case FL_TRACK:		/* send track address */		databyte = (int)bp->b_blkno / RXSTRK;		mtpr(TXDB , FL_DATA | databyte);		if ((bp->b_flags&B_READ) == B_READ)			/* prepare to receive complete */			fltab.fl_active = FL_COM;		else			/* prepare to send data */			fltab.fl_active = FL_DAX;		break;	case FL_DAX:		databyte = *(fltab.fl_xaddr++);		mtpr(TXDB, FL_DATA | databyte);		if (--bp->b_bcount == 0)			fltab.fl_active = FL_COM;		break;	case FL_CAN:		/* give cancel order */		mtpr(TXDB, FL_CANCEL);		if (++fltab.fl_errcnt <= FLERRS) {			/* If error count permits, retry order */			fltab.fl_active = FL_MAND;			bp->b_bcount = RXBYSEC;			fltab.fl_xaddr = (unsigned char *) bp->b_un.b_addr;		} else {			/*			 * We're really stupid today - call it an			 * error and give up			 */			bp->b_flags |= B_ERROR | B_DONE;			bp->b_resid = -RXBYSEC;			fltab.fl_active = FL_IDLE;			wakeup((caddr_t)bp);		}	}}cnrfl(c)	int c;{	register int datum;	register struct buf *bp;	datum = c;	bp = fltab.fl_buf;	if (datum == FL_PERR) {		/*		 * Got a protocol error - cancel the		 * current function and try again if error count isn't		 * too great.  First, though, make sure that an actual		 * transaction is in progress (so a spurious error from		 * the LSI won't screw us up too much!		 */		if (fltab.fl_active != FL_IDLE)			fltab.fl_active = FL_CAN;	} else switch(fltab.fl_active ) {	case FL_DAR:		/* expecting a datum */		if ((c&RXDB_ID) != FL_DATA)			goto error;		*(fltab.fl_xaddr++) = (c & RXDB_DATA);		if (--bp->b_bcount==0) {			fltab.fl_active = FL_IDLE;			bp->b_flags |= B_DONE;			wakeup((caddr_t)bp);		}		break;	case FL_COM:		/* expecting a "function complete" */		if ((c&RXDB_ID)!= FL_FFC || (c&FL_ERR) == FL_ERR){error:			bp->b_flags |= B_ERROR | B_DONE;			bp->b_resid = -bp->b_bcount;			fltab.fl_active = FL_IDLE;			wakeup((caddr_t)bp);		} else if ((bp->b_flags&B_READ) == B_READ)			/* got function complete, now get data */			fltab.fl_active = FL_DAR;		else {			/* got function complete on write - finish up */			fltab.fl_active = FL_IDLE;			bp->b_flags |= B_DONE;				wakeup((caddr_t)bp);		}		break;	}}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本不卡一区二区三区 | 亚洲精品乱码久久久久| 亚洲一区在线电影| 国产91精品久久久久久久网曝门| 色网综合在线观看| 久久欧美一区二区| 日韩电影在线免费| 欧美一a一片一级一片| 国产欧美中文在线| 久久成人综合网| 制服视频三区第一页精品| 中文字幕一区二区三区不卡在线| 国内精品伊人久久久久av一坑| 欧美日韩中文另类| 樱桃国产成人精品视频| 9i看片成人免费高清| 久久精品视频在线看| 蜜桃久久精品一区二区| 欧美日韩aaaaaa| 亚洲另类在线一区| 91亚洲精品一区二区乱码| 国产区在线观看成人精品| 久久精品国产一区二区三| 51精品秘密在线观看| 一区二区三区四区中文字幕| 91在线观看一区二区| 国产精品久久久久久亚洲伦| 成人性色生活片| 国产欧美日韩三级| 国产福利一区二区| 久久蜜桃av一区二区天堂| 国内成人精品2018免费看| 欧美xxxxxxxxx| 国产一区二区在线看| 2023国产精品| 国产成人精品www牛牛影视| 国产女主播在线一区二区| 国产成人鲁色资源国产91色综| 精品剧情v国产在线观看在线| 久久国产欧美日韩精品| 2023国产精品自拍| av亚洲产国偷v产偷v自拍| 亚洲日本在线看| 色综合天天综合狠狠| 性做久久久久久免费观看欧美| 欧美日韩三级一区| 美国欧美日韩国产在线播放| 久久久亚洲欧洲日产国码αv| 国产成人久久精品77777最新版本| 中文字幕不卡在线播放| 91丝袜高跟美女视频| 亚洲国产视频一区| 日韩女优视频免费观看| 大胆欧美人体老妇| 亚洲综合免费观看高清在线观看| 在线不卡欧美精品一区二区三区| 免费成人在线播放| 国产欧美一区二区三区在线看蜜臀| 99热这里都是精品| 首页国产欧美日韩丝袜| 久久久久久黄色| 色综合咪咪久久| 免费成人小视频| 最新日韩av在线| 91精品国产色综合久久| 成人免费毛片a| 亚洲国产成人高清精品| 欧美成人高清电影在线| 一本一道综合狠狠老| 日韩电影在线一区| 中文字幕一区二区三区在线观看 | 亚洲日本va午夜在线影院| 欧美日韩一区二区电影| 国产精品一二三区在线| 香蕉影视欧美成人| 国产精品久久久久7777按摩 | 99麻豆久久久国产精品免费 | 亚洲图片有声小说| 久久中文娱乐网| 欧美三级三级三级爽爽爽| 成人免费看视频| 韩国精品主播一区二区在线观看| 一区二区日韩av| 国产欧美日韩视频在线观看| 日韩欧美国产精品| 欧美优质美女网站| 成人的网站免费观看| 黄色精品一二区| 日本中文在线一区| 亚洲一区在线免费观看| 国产清纯白嫩初高生在线观看91| 欧美一区二区三区免费视频| 欧美自拍偷拍午夜视频| 波多野洁衣一区| 丁香一区二区三区| 国产一区二区三区香蕉| 七七婷婷婷婷精品国产| 亚洲成人中文在线| 一区二区三区在线观看视频| 国产欧美日韩另类一区| 精品福利二区三区| 精品国产乱码久久久久久久久| 777xxx欧美| 欧美电影一区二区三区| 欧美日韩精品系列| 欧美日韩视频在线观看一区二区三区 | 成人一道本在线| 精品一区二区三区蜜桃| 视频在线在亚洲| 免费精品视频在线| 蜜桃视频在线观看一区二区| 午夜视频一区在线观看| 亚洲高清不卡在线观看| 亚洲国产精品一区二区久久| 一区二区三区av电影| 亚洲丰满少妇videoshd| 亚洲午夜一二三区视频| 夜夜精品浪潮av一区二区三区 | 国产偷国产偷精品高清尤物 | 欧美一卡二卡在线| 日韩欧美一区中文| 久久综合给合久久狠狠狠97色69| 精品人伦一区二区色婷婷| xnxx国产精品| 国产精品久久久久久久久动漫| 国产精品九色蝌蚪自拍| 中文字幕一区二区在线观看| 一区二区三区四区高清精品免费观看| 亚洲免费观看高清完整版在线 | 日韩av中文字幕一区二区| 亚洲超碰精品一区二区| 奇米影视7777精品一区二区| 精品一区二区日韩| 成人午夜私人影院| 欧亚洲嫩模精品一区三区| 91精品国产欧美一区二区| 久久女同性恋中文字幕| 亚洲欧美一区二区三区国产精品| 亚洲国产中文字幕在线视频综合| 日韩精彩视频在线观看| 国产一区999| 色噜噜狠狠成人网p站| 91精品啪在线观看国产60岁| www国产亚洲精品久久麻豆| 中文字幕中文乱码欧美一区二区| 亚洲一区二区三区视频在线 | 日本高清免费不卡视频| 在线播放/欧美激情| 久久亚洲精品国产精品紫薇| 最近中文字幕一区二区三区| 亚洲五码中文字幕| 高清av一区二区| 欧美日韩一区二区三区四区五区 | 欧美蜜桃一区二区三区| 久久午夜免费电影| 一区二区三区四区不卡视频 | 国产欧美日本一区二区三区| 亚洲国产欧美在线| 国产成人精品综合在线观看| 欧美日本国产视频| 中文字幕制服丝袜一区二区三区 | av成人动漫在线观看| 在线播放亚洲一区| 亚洲视频小说图片| 国产一区二区三区日韩| 欧美日韩不卡一区| 亚洲男人的天堂av| 国产成人在线视频网站| 69精品人人人人| 亚洲精选一二三| 国产成人亚洲综合a∨婷婷| 91精品一区二区三区久久久久久| 中文字幕在线不卡视频| 国产精品一区三区| 日韩欧美国产一区二区三区 | 91精品国产综合久久小美女| 日本一区二区三区dvd视频在线| 午夜电影一区二区三区| 91色婷婷久久久久合中文| www国产精品av| 美女一区二区三区| 欧美高清激情brazzers| 亚洲免费三区一区二区| 成人一区在线看| 久久久精品国产免费观看同学| 日本不卡视频一二三区| 欧美视频精品在线| 一区二区三区日韩欧美| av午夜一区麻豆| 国产精品福利av| 99国产精品久久| 成人欧美一区二区三区小说| 国产激情视频一区二区在线观看| 精品国产一区二区三区不卡| 久久国产人妖系列| 欧美成人性战久久| 韩国理伦片一区二区三区在线播放| 日韩免费在线观看| 精品综合久久久久久8888| 欧美电影免费观看完整版|