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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pt.c

?? 是關(guān)于linux2.5.1的完全源碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
		WR(0,6,DRIVE);		s = RR(0,7);		e = RR(0,1);		pi_disconnect(PI);		if (s & (STAT_ERR|STAT_SEEK)) break;	}	if ((k >= tmo) || (s & STAT_ERR)) {	   if (k >= tmo) printk("%s: %s DSC timeout\n",PT.name,msg);	     else printk("%s: %s stat=0x%x err=0x%x\n",PT.name,msg,s,e);	   pt_req_sense(unit,0);	   return 0;	}	return 1;}static void pt_media_access_cmd( int unit, int tmo, char *cmd, char *fun){	if (pt_command(unit,cmd,0,fun)) {		pt_req_sense(unit,0);		return;	}	pi_disconnect(PI);	pt_poll_dsc(unit,HZ,tmo,fun);}static void pt_rewind( int unit ){	char	rw_cmd[12] = {ATAPI_REWIND,0,0,0,0,0,0,0,0,0,0,0};	pt_media_access_cmd(unit,PT_REWIND_TMO,rw_cmd,"rewind");}static void pt_write_fm( int unit ){	char	wm_cmd[12] = {ATAPI_WFM,0,0,0,1,0,0,0,0,0,0,0};        pt_media_access_cmd(unit,PT_TMO,wm_cmd,"write filemark");}#define DBMSG(msg)      ((verbose>1)?(msg):NULL)static int pt_reset( int unit ){	int	i, k, flg;	int	expect[5] = {1,1,1,0x14,0xeb};	pi_connect(PI);	WR(0,6,DRIVE);	WR(0,7,8);	pt_sleep(20*HZ/1000);        k = 0;        while ((k++ < PT_RESET_TMO) && (RR(1,6)&STAT_BUSY))                pt_sleep(HZ/10);	flg = 1;	for(i=0;i<5;i++) flg &= (RR(0,i+1) == expect[i]);	if (verbose) {		printk("%s: Reset (%d) signature = ",PT.name,k);		for (i=0;i<5;i++) printk("%3x",RR(0,i+1));		if (!flg) printk(" (incorrect)");		printk("\n");	}		pi_disconnect(PI);	return flg-1;	}static int pt_ready_wait( int unit, int tmo ){	char	tr_cmd[12] = {ATAPI_TEST_READY,0,0,0,0,0,0,0,0,0,0,0};	int	k, p;	k = 0;	while (k < tmo) {	  PT.last_sense = 0;	  pt_atapi(unit,tr_cmd,0,NULL,DBMSG("test unit ready"));	  p = PT.last_sense;	  if (!p) return 0;	  if (!(((p & 0xffff) == 0x0402)||((p & 0xff) == 6))) return p;	  k++;          pt_sleep(HZ);	}	return 0x000020;	/* timeout */}static void xs( char *buf, char *targ, int offs, int len ){	int	j,k,l;	j=0; l=0;	for (k=0;k<len;k++) 	   if((buf[k+offs]!=0x20)||(buf[k+offs]!=l))		l=targ[j++]=buf[k+offs];	if (l==0x20) j--;	targ[j]=0;}static int xn( char *buf, int offs, int size ){	int	v,k;	v=0; 	for(k=0;k<size;k++) v=v*256+(buf[k+offs]&0xff);	return v;}static int pt_identify( int unit ){	int 	dt, s;	char	*ms[2] = {"master","slave"};	char	mf[10], id[18];	char    id_cmd[12] = { ATAPI_IDENTIFY,0,0,0,36,0,0,0,0,0,0,0};        char    ms_cmd[12] = { ATAPI_MODE_SENSE,0,0x2a,0,36,0,0,0,0,0,0,0};	char    ls_cmd[12] = { ATAPI_LOG_SENSE,0,0x71,0,0,0,0,0,36,0,0,0};	char	buf[36];        s = pt_atapi(unit,id_cmd,36,buf,"identify");	if (s) return -1;	dt = buf[0] & 0x1f;	if (dt != 1) {	  	if (verbose) 		   printk("%s: Drive %d, unsupported type %d\n",				PT.name,PT.drive,dt);	  	return -1;       	}	xs(buf,mf,8,8);	xs(buf,id,16,16);	PT.flags = 0;	PT.capacity = 0;	PT.bs = 0;	if (!pt_ready_wait(unit,PT_READY_TMO)) PT.flags |= PT_MEDIA;        if (!pt_atapi(unit,ms_cmd,36,buf,"mode sense")) {          if (!(buf[2] & 0x80)) PT.flags |= PT_WRITE_OK;	  PT.bs = xn(buf,10,2);	}        if (!pt_atapi(unit,ls_cmd,36,buf,"log sense")) 		PT.capacity = xn(buf,24,4);        printk("%s: %s %s, %s",		PT.name,mf,id,ms[PT.drive]);        if (!(PT.flags & PT_MEDIA))                 printk(", no media\n");        else {  if (!(PT.flags & PT_WRITE_OK)) printk(", RO");                printk(", blocksize %d, %d MB\n",		       PT.bs,PT.capacity/1024);        }	return 0;}static int pt_probe( int unit )/*	returns  0, with id set if drive is detected	        -1, if drive detection failed*/{	if (PT.drive == -1) {	   for (PT.drive=0;PT.drive<=1;PT.drive++)		if (!pt_reset(unit)) return pt_identify(unit);	} else {	   if (!pt_reset(unit)) return pt_identify(unit);	}        return -1; }static int pt_detect( void ){	int	k, unit;	printk("%s: %s version %s, major %d\n",		name,name,PT_VERSION,major);	k = 0;	if (pt_drive_count == 0) {	    unit = 0;	    if (pi_init(PI,1,-1,-1,-1,-1,-1,pt_scratch,                        PI_PT,verbose,PT.name)) {	        if (!pt_probe(unit)) {			PT.present = 1;			k++;	        } else pi_release(PI);	    }	} else for (unit=0;unit<PT_UNITS;unit++) if (DU[D_PRT])	    if (pi_init(PI,0,DU[D_PRT],DU[D_MOD],DU[D_UNI],			DU[D_PRO],DU[D_DLY],pt_scratch,PI_PT,verbose,			PT.name)) {                 if (!pt_probe(unit)) {                        PT.present = 1;                        k++;                } else pi_release(PI);            }	if (k) return 0;	printk("%s: No ATAPI tape drive detected\n",name);	return -1;}#define DEVICE_NR(dev)	(minor(dev) & 0x7F)static int pt_open (struct inode *inode, struct file *file){       int	unit = DEVICE_NR(inode->i_rdev);        if ((unit >= PT_UNITS) || (!PT.present)) return -ENODEV;	if ( !atomic_dec_and_test(&PT.available) ) {		atomic_inc( &PT.available );		return -EBUSY;	}	pt_identify(unit);	if (!PT.flags & PT_MEDIA) {		atomic_inc( &PT.available );		return -ENODEV;		}	if ((!PT.flags & PT_WRITE_OK) && (file ->f_mode & 2)) {		atomic_inc( &PT.available );		return -EROFS;		}	if (!(minor(inode->i_rdev) & 128))		PT.flags |= PT_REWIND;	PT.bufptr = kmalloc(PT_BUFSIZE,GFP_KERNEL);	if (PT.bufptr == NULL) {		atomic_inc( &PT.available );		printk("%s: buffer allocation failed\n",PT.name);		return -ENOMEM;	}        return 0;}static int pt_ioctl(struct inode *inode,struct file *file,                    unsigned int cmd, unsigned long arg){	int unit;	struct mtop mtop;        if (!inode || kdev_none(inode->i_rdev))		return -EINVAL;        unit = DEVICE_NR(inode->i_rdev);        if (unit >= PT_UNITS)		return -EINVAL;        if (!PT.present)		return -ENODEV;        switch (cmd) {	    case MTIOCTOP:			if (copy_from_user((char *)&mtop, (char *)arg, 			           sizeof(struct mtop))) return -EFAULT;		switch (mtop.mt_op) {		    case MTREW: 			pt_rewind(unit);			return 0;		    case MTWEOF:			pt_write_fm(unit);			return 0;		    default:				printk("%s: Unimplemented mt_op %d\n",PT.name,					mtop.mt_op);			return -EINVAL;		}            default:		printk("%s: Unimplemented ioctl 0x%x\n",PT.name,cmd);                return -EINVAL;        }}static int pt_release (struct inode *inode, struct file *file){        int	unit = DEVICE_NR(inode->i_rdev);        if ((unit >= PT_UNITS) || (atomic_read(&PT.available) > 1))                 return -EINVAL;	if (PT.flags & PT_WRITING) pt_write_fm(unit);	if (PT.flags & PT_REWIND) pt_rewind(unit);		kfree(PT.bufptr);	PT.bufptr = NULL;	atomic_inc( &PT.available );		return 0;}static ssize_t pt_read(struct file * filp, char * buf,                        size_t count, loff_t *ppos){  	struct 	inode *ino = filp->f_dentry->d_inode;	int	unit = DEVICE_NR(ino->i_rdev);	char	rd_cmd[12] = {ATAPI_READ_6,1,0,0,0,0,0,0,0,0,0,0};	int	k, n, r, p, s, t, b;	if (!(PT.flags & (PT_READING|PT_WRITING))) {	    PT.flags |= PT_READING;	    if (pt_atapi(unit,rd_cmd,0,NULL,"start read-ahead"))			return -EIO;	} else if (PT.flags & PT_WRITING) return -EIO;	if (PT.flags & PT_EOF) return 0;	t = 0;	while (count > 0) {	    if (!pt_poll_dsc(unit,HZ/100,PT_TMO,"read")) return -EIO;	    n = count;	    if (n > 32768) n = 32768;   /* max per command */	    b = (n-1+PT.bs)/PT.bs;	    n = b*PT.bs;		/* rounded up to even block */	    rd_cmd[4] = b;	    r = pt_command(unit,rd_cmd,n,"read");	    mdelay(1);	    if (r) {	        pt_req_sense(unit,0);	        return -EIO;	    }	    while (1) {	        r = pt_wait(unit,STAT_BUSY,STAT_DRQ|STAT_ERR|STAT_READY,                                           DBMSG("read DRQ"),"");	        if (r & STAT_SENSE) {	            pi_disconnect(PI);		    pt_req_sense(unit,0);		    return -EIO;	        }	        if (r) PT.flags |= PT_EOF; 	        s = RR(0,7);	        if (!(s & STAT_DRQ)) break;	    	n = (RR(0,4)+256*RR(0,5));	    	p = (RR(0,2)&3);	    	if (p != 2) {		    pi_disconnect(PI);		    printk("%s: Phase error on read: %d\n",PT.name,p);		    return -EIO;	    	}	        while (n > 0) {		    k = n;		    if (k > PT_BUFSIZE) k = PT_BUFSIZE; 		    pi_read_block(PI,PT.bufptr,k);		    n -= k;		    b = k;		    if (b > count) b = count;		    copy_to_user(buf+t,PT.bufptr,b);		    t += b;		    count -= b;	        }	    }	    pi_disconnect(PI);	    if (PT.flags & PT_EOF) break;	}	return t;}static ssize_t pt_write(struct file * filp, const char * buf,                         size_t count, loff_t *ppos){        struct inode *ino = filp->f_dentry->d_inode;        int unit = DEVICE_NR(ino->i_rdev);        char    wr_cmd[12] = {ATAPI_WRITE_6,1,0,0,0,0,0,0,0,0,0,0};        int     k, n, r, p, s, t, b;	if (!(PT.flags & PT_WRITE_OK)) return -EROFS;        if (!(PT.flags & (PT_READING|PT_WRITING))) {            PT.flags |= PT_WRITING;            if (pt_atapi(unit,wr_cmd,0,NULL,"start buffer-available mode"))                        return -EIO;        } else if (PT.flags&PT_READING) return -EIO;	if (PT.flags & PT_EOF) return -ENOSPC;	t = 0;	while (count > 0) {	    if (!pt_poll_dsc(unit,HZ/100,PT_TMO,"write")) return -EIO;            n = count;            if (n > 32768) n = 32768;	/* max per command */            b = (n-1+PT.bs)/PT.bs;            n = b*PT.bs;                /* rounded up to even block */            wr_cmd[4] = b;            r = pt_command(unit,wr_cmd,n,"write");            mdelay(1);            if (r) {			/* error delivering command only */                pt_req_sense(unit,0);                return -EIO;            }	    while (1) {                r = pt_wait(unit,STAT_BUSY,STAT_DRQ|STAT_ERR|STAT_READY,			                        DBMSG("write DRQ"),NULL);                if (r & STAT_SENSE) {                    pi_disconnect(PI);                    pt_req_sense(unit,0);                    return -EIO;                }                if (r) PT.flags |= PT_EOF;	        s = RR(0,7);	        if (!(s & STAT_DRQ)) break;                n = (RR(0,4)+256*RR(0,5));                p = (RR(0,2)&3);                if (p != 0) {                    pi_disconnect(PI);                    printk("%s: Phase error on write: %d \n",PT.name,p);                    return -EIO;                }                while (n > 0) {		    k = n;		    if (k > PT_BUFSIZE) k = PT_BUFSIZE;		    b = k;		    if (b > count) b = count;		    copy_from_user(PT.bufptr,buf+t,b);                    pi_write_block(PI,PT.bufptr,k);		    t += b;		    count -= b;		    n -= k;                }	    }	    pi_disconnect(PI);	    if (PT.flags & PT_EOF) break;	}	return t;}/* end of pt.c */MODULE_LICENSE("GPL");

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区精品在线观看| 日韩一区二区三区高清免费看看| 精品一二三四区| 亚洲一区二区三区不卡国产欧美| 中文字幕精品一区二区三区精品| 日韩美女主播在线视频一区二区三区| 在线观看国产一区二区| 99re成人精品视频| 成人av电影在线观看| 成人丝袜18视频在线观看| 久久99精品久久久久久久久久久久| 日韩电影一二三区| 视频一区二区中文字幕| 国产喂奶挤奶一区二区三区 | 欧美电影免费观看完整版| 欧美在线观看视频一区二区三区| 97se亚洲国产综合自在线不卡| 粉嫩av一区二区三区粉嫩 | 蜜桃精品视频在线观看| 亚洲乱码中文字幕| 一区二区三区av电影| 亚洲亚洲人成综合网络| 亚洲图片你懂的| 亚洲色图制服丝袜| 一区二区三区国产| 亚洲成人综合网站| 日本vs亚洲vs韩国一区三区| 久久精品国产亚洲5555| 激情亚洲综合在线| 蜜桃久久精品一区二区| 美女视频第一区二区三区免费观看网站| 蜜桃一区二区三区在线观看| 午夜精品福利在线| 奇米888四色在线精品| 久久se这里有精品| 国产成人一区在线| 99精品欧美一区| 欧美日韩午夜影院| 日韩欧美国产一区二区三区| 精品成a人在线观看| 国产精品久久久久久久裸模| 亚洲另类春色国产| 日一区二区三区| 精品一区二区av| 99久久精品一区| 色婷婷综合五月| 欧美日韩精品免费观看视频| 欧美精品丝袜久久久中文字幕| 日韩精品一区二区三区在线| 国产人久久人人人人爽| 亚洲女子a中天字幕| 日韩成人dvd| 国产成人在线电影| 91久久精品日日躁夜夜躁欧美| 91精品国产综合久久福利软件| 2020日本不卡一区二区视频| 中文字幕一区二区三区蜜月 | 久久精品无码一区二区三区| 国产精品色哟哟网站| 亚洲一区二区三区四区在线免费观看| 日本午夜一本久久久综合| 国产高清亚洲一区| 在线观看欧美日本| 欧美日韩国产首页| 26uuuu精品一区二区| 自拍偷拍亚洲激情| 另类人妖一区二区av| av电影天堂一区二区在线| 欧美自拍丝袜亚洲| 久久久久久久久久久久电影| 一区二区三区国产| 国产精品羞羞答答xxdd| 欧洲亚洲国产日韩| 国产亚洲一区二区三区四区| 亚洲一区二区欧美日韩| 精品一区二区三区在线观看| 91国在线观看| 国产性色一区二区| 国产免费观看久久| 日本特黄久久久高潮| 91免费看`日韩一区二区| 日韩一区二区三区三四区视频在线观看| 成人欧美一区二区三区白人| 国产综合成人久久大片91| 欧美视频自拍偷拍| 亚洲欧洲成人av每日更新| 玖玖九九国产精品| 在线视频国内自拍亚洲视频| 亚洲国产精品成人综合| 久久精品国产一区二区三区免费看| 日本韩国精品在线| 中文字幕欧美激情| 三级影片在线观看欧美日韩一区二区| 972aa.com艺术欧美| 久久精品亚洲一区二区三区浴池| 日韩国产一区二| 91丨porny丨国产| 国产网站一区二区| 韩国精品在线观看| 91精品国产aⅴ一区二区| 亚洲综合av网| 成人av在线资源| 欧美激情一区在线| 国产乱子伦一区二区三区国色天香| 51久久夜色精品国产麻豆| 亚洲精品视频免费观看| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 欧美日韩视频在线观看一区二区三区 | 色综合久久六月婷婷中文字幕| 国产精品九色蝌蚪自拍| 91一区在线观看| 亚洲资源中文字幕| 欧美日韩高清影院| 麻豆久久一区二区| 国产日韩在线不卡| av网站一区二区三区| 亚洲人成小说网站色在线| 日本韩国欧美一区二区三区| 亚洲国产成人高清精品| 欧美一卡二卡三卡| 国产在线一区二区| 亚洲欧美一区二区视频| 欧美色男人天堂| 久久精品久久99精品久久| 国产视频一区二区在线| 成人18视频日本| 亚洲一区二区三区不卡国产欧美| 欧美妇女性影城| 国产原创一区二区| 成人欧美一区二区三区在线播放| 欧美特级限制片免费在线观看| 美女一区二区三区| 中文字幕 久热精品 视频在线| 91麻豆精品一区二区三区| 日产精品久久久久久久性色| 久久综合狠狠综合久久激情| 91在线一区二区三区| 视频在线观看国产精品| 久久综合色婷婷| 91福利视频网站| 麻豆国产欧美一区二区三区| 国产精品久久久久精k8 | 中文字幕不卡在线| 欧美午夜寂寞影院| 国产主播一区二区三区| 亚洲精品国产第一综合99久久 | 国产情人综合久久777777| 欧美色网一区二区| 国产精品一区二区男女羞羞无遮挡| 亚洲精品免费一二三区| 日韩欧美国产三级| 日本韩国一区二区三区视频| 国产在线精品国自产拍免费| 一区二区在线看| 久久综合久久99| 欧美日韩在线三区| 成人动漫精品一区二区| 老司机精品视频线观看86| 一区二区三区在线视频观看58| 久久女同精品一区二区| 欧美三级蜜桃2在线观看| 狠狠久久亚洲欧美| 亚洲国产精品自拍| 中文字幕中文字幕一区| 欧美哺乳videos| 欧美日韩一区二区在线观看| 国产精品99久久久| 美腿丝袜亚洲色图| 亚洲成人激情自拍| 亚洲三级电影网站| 国产日韩精品一区二区三区| 911精品国产一区二区在线| 99久久99久久免费精品蜜臀| 极品美女销魂一区二区三区免费 | 一本色道**综合亚洲精品蜜桃冫| 久久99蜜桃精品| 视频一区二区中文字幕| 夜夜精品浪潮av一区二区三区| 国产视频一区二区三区在线观看| 日韩一卡二卡三卡| 欧美三级三级三级| 色av一区二区| av在线不卡观看免费观看| 国产另类ts人妖一区二区| 青青草97国产精品免费观看无弹窗版| 一区二区三区中文字幕| 亚洲自拍与偷拍| 国产精品国产三级国产| 日本一区二区三区四区在线视频| 精品成人a区在线观看| 日韩欧美在线综合网| 欧美精品久久99久久在免费线 | 日韩一级片在线播放| 欧美日韩国产系列| 欧洲亚洲国产日韩| 色狠狠综合天天综合综合| 一本大道久久a久久综合| k8久久久一区二区三区| 国产一区二区主播在线| 精品在线观看视频|