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

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

?? libscsi.c

?? 讀取SCSI磁盤陣列信息的源代碼,支持設(shè)備:mega scsi device
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
#include "libscsi.h"/* ioctl */struct megascsi_adapter *mega_scsi_adapter;unsigned char	megascsi_adapt_no;int	megascsi_ioctl_initialized = 0;char dv_xname[] = "PERCSCSI";  unsigned int	USCSICMD = 0x80; voidmegascsi_copyhds(scsi_adapter, sizes, props, stats)	struct megascsi_adapter *scsi_adapter;	const unsigned int *sizes;	const unsigned char *props, *stats;{	int i;	for (i = 0; i < scsi_adapter->adapter_nunits; i++) {		scsi_adapter->adapter_hdr[i].hd_present = 1;		scsi_adapter->adapter_hdr[i].hd_is_logdrv = 1;		scsi_adapter->adapter_hdr[i].hd_size = letoh32(sizes[i]);		scsi_adapter->adapter_hdr[i].hd_prop = props[i];		scsi_adapter->adapter_hdr[i].hd_stat = stats[i];		if (scsi_adapter->adapter_hdr[i].hd_size > 0x200000) {			scsi_adapter->adapter_hdr[i].hd_heads = 255;			scsi_adapter->adapter_hdr[i].hd_secs = 63;		} else {			scsi_adapter->adapter_hdr[i].hd_heads = 64;			scsi_adapter->adapter_hdr[i].hd_secs = 32;		}	}}intmegascsi_ioctl_init(){	int error = 0;	struct utsname uname_buf;	char delimiters[] = ".-";	char *token, cp[128], *tail;    if ( uname(&uname_buf) )return EINVAL;	strncpy(cp, uname_buf.release, 128);	token = strtok(cp, delimiters);	if ( strtol(token, &tail, 0) != 2 ) return EINVAL;	token = strtok(NULL, delimiters);	if ( strtol(token, &tail, 0) == 4 ) 		USCSICMD = 0xe0;	/* kernel 2.4.x */	else if (strtol(token, &tail, 0) == 6 ) 			USCSICMD = 0x80;	/* kernel 2.6.x */		else {			printf("This program not supported on %s\n", uname_buf.release);			return EINVAL;		}					if (!megascsi_ioctl_initialized) {			/* Initialize mega_scsi_adapter structure */		mega_scsi_adapter = malloc(sizeof(struct megascsi_adapter));		if ( mega_scsi_adapter == NULL ) {			printf("MEGA Init Failture: No memory allocation\n");			return EINVAL;		}		memset(mega_scsi_adapter, sizeof(struct megascsi_adapter), 0); 		mega_scsi_adapter->adapter_handle = open("/dev/megadev0",  O_RDONLY); 		if (mega_scsi_adapter->adapter_handle == (uint)-1) {			printf("MEGA Init failture: Can not open device file /dev/megadev0\n");			return EINVAL;		}			megascsi_adapt_no = 0;		mega_scsi_adapter->adapter_adapt_no = megascsi_adapt_no;		megascsi_ioctl_initialized = 1;	}	megascsi_query_adapt(mega_scsi_adapter);	return (error);	}intmegascsi_query_adapt(scsi_adapter)struct megascsi_adapter *scsi_adapter;{	int error = 0, i;	char *p=NULL;	struct megascsi_fc_einquiry *einq;	struct megascsi_fc_prodinfo *pi;	if ( !scsi_adapter ) return EINVAL;		/* try FC inquiry first */			p = malloc(sizeof(struct megascsi_fc_einquiry)+sizeof(struct megascsi_fc_prodinfo));	if (!p) {		printf("%s: No memory for adapter information\n",scsi_adapter->adapter_dev.dv_xname);		return EINVAL;	}	einq = (struct megascsi_fc_einquiry *)p;	pi = (struct megascsi_fc_prodinfo *)(p + sizeof(struct megascsi_fc_einquiry));	memset(einq, 0, sizeof(struct megascsi_fc_einquiry));	memset(pi, 0, sizeof(struct megascsi_fc_prodinfo));	if (megascsi_mgmt(scsi_adapter, MEGASCSI_FCOP, MEGASCSI_FC_EINQ3_SOLICITED_FULL, 0, 0, sizeof 			(struct megascsi_fc_einquiry), einq)==0) {		scsi_adapter->adapter_nunits = einq->ain_nlogdrv;		megascsi_copyhds(scsi_adapter, einq->ain_ldsize, einq->ain_ldprop,				einq->ain_ldstat);		if (megascsi_mgmt(scsi_adapter, MEGASCSI_FCOP, MEGASCSI_FC_PRODINF, 0, 0, sizeof (struct 				megascsi_fc_prodinfo), pi)==0) 			{				scsi_adapter->adapter_maxunits = MEGASCSI_BIG_MAX_LDRIVES;				memcpy(scsi_adapter->adapter_fwver, pi->api_fwver, 16);				scsi_adapter->adapter_fwver[15] = '\0';				memcpy(scsi_adapter->adapter_biosver, pi->api_biosver, 16);                                                                                                                                                                                                                                 				scsi_adapter->adapter_biosver[15] = '\0';				scsi_adapter->adapter_channels = pi->api_channels;				scsi_adapter->adapter_targets = pi->api_fcloops;				scsi_adapter->adapter_memory = letoh16(pi->api_ramsize);				scsi_adapter->adapter_maxcmds = pi->api_maxcmd;//				p = "FC loop";				}		else		{			error = EINVAL;			goto bail2;		}		if (scsi_adapter->adapter_maxunits == 0) {			struct megascsi_inquiry *inq = (struct megascsi_inquiry *)einq;			if (megascsi_mgmt(scsi_adapter, MEGASCSI_EINQUIRY, 0, 0, 0, sizeof(struct megascsi_inquiry) , inq)!=0){				if (megascsi_mgmt(scsi_adapter, MEGASCSI_INQUIRY, 0, 0, 0, sizeof(struct megascsi_inquiry), inq)!=0){					error = EINVAL;					goto bail2;				}				}			scsi_adapter->adapter_maxunits = MEGASCSI_MAX_LDRIVES;			scsi_adapter->adapter_nunits = inq->ain_nlogdrv;			megascsi_copyhds(scsi_adapter, inq->ain_ldsize, inq->ain_ldprop,			    inq->ain_ldstat);			memcpy (scsi_adapter->adapter_fwver, inq->ain_fwver, 4);			scsi_adapter->adapter_fwver[4] = '\0';			memcpy (scsi_adapter->adapter_biosver, inq->ain_biosver, 4);			scsi_adapter->adapter_biosver[4] = '\0';			scsi_adapter->adapter_channels = inq->ain_channels;			scsi_adapter->adapter_targets = inq->ain_targets;			scsi_adapter->adapter_memory = inq->ain_ramsize;			scsi_adapter->adapter_maxcmds = inq->ain_maxcmd;//			p = "target";							}	}	else	{		error = EINVAL;		goto bail2;	}/*	#ifdef MEGASCSI_DEBUG	printf(": FW %s, BIOS v%s, %dMB RAM\n"	    "%s: %d channels, %d %ss, %d logical drives, "	    "openings %d, max commands %d, quirks: %04x\n",	    scsi_adapter->adapter_fwver, scsi_adapter->adapter_biosver, scsi_adapter->adapter_memory,	    scsi_adapter->adapter_dev.dv_xname,	    scsi_adapter->adapter_channels, scsi_adapter->adapter_targets, p, scsi_adapter->adapter_nunits,	    scsi_adapter->adapter_link.openings, scsi_adapter->adapter_maxcmds, scsi_adapter->adapter_flags);#else	printf(": FW %s, BIOS v%s, %dMB RAM\n"	    "%s: %d channels, %d %ss, %d logical drives\n",	    scsi_adapter->adapter_fwver, scsi_adapter->adapter_biosver, scsi_adapter->adapter_memory,	    scsi_adapter->adapter_dev.dv_xname,	    scsi_adapter->adapter_channels, scsi_adapter->adapter_targets, p, scsi_adapter->adapter_nunits);#endif  MEGASCSI_DEBUG */	memcpy(scsi_adapter->adapter_dev.dv_xname, dv_xname, 16); 	scsi_adapter->adapter_flags |= MEGASCSI_QUARTZ;	for(i = 0; i < ((scsi_adapter->adapter_flags & MEGASCSI_QUARTZ) ?	    MEGASCSI_BIG_MAX_PDRIVES : MEGASCSI_MAX_PDRIVES); i++) {		memcpy(scsi_adapter->adapter_hdr[i].dev, scsi_adapter->adapter_dev.dv_xname, 16);	}	for(i = 0; i < MEGASCSI_MAX_CHANNEL; i++) {		memcpy(scsi_adapter->adapter_rawadapters[i].adapter_procdev, scsi_adapter->adapter_dev.dv_xname, 16);	}bail2:	if (p) free(p);	return (error);}intmegascsi_ioctl_end(){	int error = 0;	if (mega_scsi_adapter) {		if (mega_scsi_adapter->adapter_handle)			close(mega_scsi_adapter->adapter_handle);		free(mega_scsi_adapter);		megascsi_ioctl_initialized = 0;	}	else 		error = EINVAL;	return error;}int megascsi_ioctl_sel_adapt(new_adapt_no)	unsigned char new_adapt_no;{	int old_adapt_no = 0;	if (!mega_scsi_adapter) return EINVAL;	old_adapt_no = mega_scsi_adapter->adapter_adapt_no;	if ( old_adapt_no != new_adapt_no) { 		mega_scsi_adapter->adapter_adapt_no = new_adapt_no;		megascsi_query_adapt(mega_scsi_adapter);	}	megascsi_adapt_no = mega_scsi_adapter->adapter_adapt_no;			return old_adapt_no;}intmegascsi_ioctl(cmd, addr)/*	struct megascsi_adapter *scsi_adapter;*/	unsigned int cmd;	char * addr;{//	struct megascsi_adapter *scsi_adapter = (struct megascsi_adapter *)dev;	int error = 0;	switch (cmd) {	case MIOC_INQ:		error = megascsi_ioctl_inq(mega_scsi_adapter, (struct mioc_inq *)addr);		break;	case MIOC_VOL:		error = megascsi_ioctl_vol(mega_scsi_adapter, (struct mioc_vol *)addr);		break;	case MIOC_DISK:		error = megascsi_ioctl_disk(mega_scsi_adapter, (struct mioc_disk *)addr);		break;	default:		error = EINVAL;	}	return (error);}intmegascsi_drv_inq(scsi_adapter, ch, tg, page, inqbuf)	struct megascsi_adapter *scsi_adapter;	unsigned char ch;	unsigned char tg;	unsigned char page;	void *inqbuf;{	mimd_t *mimd;	struct megascsi_iocmd *cmd;	struct megascsi_passthrough *ps;	struct scsi_inquiry_data *pp;	void *idata;	int error = 0;	if (!(idata = malloc(sizeof(mimd_t) + sizeof(struct scsi_inquiry_data)))) {	    	return (ENOMEM);	}	mimd = (mimd_t *) idata;	memset(mimd, 0, sizeof *mimd);	ps = (struct megascsi_passthrough *)&(mimd->pthru);	pp = idata + sizeof *mimd;	memset(pp, 0, sizeof *pp);		mimd->ui.fcs.opcode = 0x80;	mimd->ui.fcs.adapno = 0x6d00 + scsi_adapter->adapter_adapt_no; 	mimd->outlen = sizeof(struct scsi_inquiry_data);			mimd->data = (char *)htole(pp);	cmd = (struct megascsi_iocmd *)&(mimd->mbox);	cmd->acc_cmd = MEGASCSI_PASSTHRU;	cmd->acc_passthru.apt_data = (unsigned int)htole(pp);	ps->apt_channel = ch;	ps->apt_target = tg;	ps->apt_ncdb = sizeof(struct scsi_inquiry);	ps->apt_nsense = sizeof(struct scsi_sense_data);	ps->apt_cdb[0] = INQUIRY;	ps->apt_cdb[1] = 0;	ps->apt_cdb[2] = 0;	ps->apt_cdb[3] = 0;	ps->apt_cdb[4] = sizeof(struct scsi_inquiry_data); /* INQUIRY length */	ps->apt_cdb[5] = 0;	if (page != 0) {		ps->apt_cdb[1] = SI_EVPD;		ps->apt_cdb[2] = page;	}	ps->apt_data = (unsigned int)htole(pp);	ps->apt_datalen = sizeof(struct scsi_inquiry_data);	if (ioctl(scsi_adapter->adapter_handle, USCSICMD, mimd) == 0) {		if (ps->apt_scsistat == 0x00) {			memcpy(inqbuf, pp, sizeof(struct scsi_inquiry_data));			if (pp->device != T_DIRECT)				error = EINVAL;			goto bail;		}		error = EINVAL;	}	else 		error = EINVAL;bail:	free(idata);	return (error);}intmegascsi_mgmt(scsi_adapter, opcode, par1, par2, par3, size, buffer)	struct megascsi_adapter *scsi_adapter;	unsigned char opcode;	unsigned char par1;	unsigned char par2;	unsigned char par3;	size_t size;	void *buffer;{	mimd_t *mimd;	struct megascsi_iocmd *cmd;	void *idata;	void *pa;	int error = 0;	if (!buffer) return (ENOMEM);	if (!(idata = malloc(sizeof(mimd_t)))) {	    	return (ENOMEM);	}		mimd = (mimd_t *)idata;	memset(mimd, 0, sizeof(mimd_t));	pa = buffer;	mimd->ui.fcs.opcode = 0x80;	mimd->ui.fcs.adapno = 0x6d00 + scsi_adapter->adapter_adapt_no; 	mimd->outlen = size;			mimd->data = htole(pa);	cmd = (struct megascsi_iocmd *)&(mimd->mbox);	cmd->acc_cmd = opcode;	/*	 * some commands require data to be written to idata before sending	 * command to fw	 */	switch (opcode) {	case MEGASCSI_SPEAKER:		*((char *)pa) = par1;		break;	default:		cmd->acc_io.aio_channel = par1;		cmd->acc_io.aio_param = par2;		cmd->acc_io.aio_pad[0] = par3;	};	cmd->acc_io.aio_data = (unsigned int)htole(pa);	if (ioctl(scsi_adapter->adapter_handle, USCSICMD, mimd) == 0) {		/* XXX how do commands fail? */		/* buffer = pa */		/*		if (buffer)			memcpy(buffer, pa, size);*/	}	else		error = EINVAL;	if (idata) free(idata);	return (error);}intmegascsi_ioctl_inq(scsi_adapter, bi)	struct megascsi_adapter *scsi_adapter;	struct mioc_inq *bi;{	struct megascsi_big_diskarray *p; /* struct too large for stack */	char *plist;	int i, s, t;	int off;	int error = 0;	struct scsi_inquiry_data inqbuf;	unsigned char ch, tg;	p = malloc(sizeof(struct megascsi_big_diskarray));	if (!p) {		printf("%s: no memory for disk array\n",scsi_adapter->adapter_dev.dv_xname);		return (ENOMEM);	}	memset(p, 0, sizeof(struct megascsi_big_diskarray));	plist = malloc(MEGASCSI_BIG_MAX_PDRIVES);	if (!plist) {		printf("%s: no memory for disk list\n", scsi_adapter->adapter_dev.dv_xname);		error = ENOMEM;		goto bail;	}	if (megascsi_mgmt(scsi_adapter, MEGASCSI_FCOP, MEGASCSI_FC_RDCONF, 0, 0, sizeof *p, p)) {		error = EINVAL;		goto bail2;	}	memset(plist, 0, MEGASCSI_BIG_MAX_PDRIVES);	bi->bi_novol = p->ada_nld;	bi->bi_nodisk = 0;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区蜜桃| 久久精品国产亚洲高清剧情介绍 | 国产欧美一区二区精品性色超碰| 99免费精品视频| 精品制服美女丁香| 日本三级韩国三级欧美三级| 一区二区三区在线视频观看| 国产日韩欧美精品一区| 精品国产伦一区二区三区观看体验| 97久久超碰国产精品电影| 粉嫩aⅴ一区二区三区四区| 日本大胆欧美人术艺术动态| 日韩av午夜在线观看| 天堂影院一区二区| 五月天亚洲婷婷| 日韩av成人高清| 久久精品久久综合| 精品一区二区三区香蕉蜜桃| 韩国v欧美v日本v亚洲v| 欧美a级一区二区| 国产真实乱偷精品视频免| 九色|91porny| 成人高清免费观看| 粉嫩欧美一区二区三区高清影视| 亚洲国产va精品久久久不卡综合| 26uuu国产一区二区三区| 99久久综合国产精品| 美腿丝袜一区二区三区| 九九**精品视频免费播放| 色综合中文综合网| 国产网红主播福利一区二区| 奇米精品一区二区三区在线观看一| 99久久久久久| 综合在线观看色| 99这里只有精品| 中文幕一区二区三区久久蜜桃| 久久99精品久久久久久久久久久久| 欧美日韩国产大片| 日韩精品电影在线| 91麻豆精品国产自产在线观看一区 | 亚洲综合色婷婷| 欧美自拍偷拍一区| 亚洲一区国产视频| 欧美日韩精品一区二区三区四区 | 欧美日韩国产精选| 丝袜美腿一区二区三区| 日韩一区和二区| 国产在线看一区| 日本一区二区高清| 成人97人人超碰人人99| 日韩理论片在线| 欧美日韩中字一区| 蜜臀av一区二区在线观看 | 日本aⅴ精品一区二区三区| 717成人午夜免费福利电影| 久久精品国产亚洲高清剧情介绍| 久久免费看少妇高潮| 国产999精品久久| 一区二区三区四区蜜桃| 51精品国自产在线| 精品一区二区三区久久| 欧美激情在线看| 欧美性感一类影片在线播放| 日本免费在线视频不卡一不卡二| 久久久精品国产免大香伊| 91亚洲精品久久久蜜桃网站 | 精品视频一区三区九区| 久久国产剧场电影| 《视频一区视频二区| 在线91免费看| 成人高清av在线| 日本欧美在线观看| 中文字幕在线观看不卡视频| 欧美日韩一区中文字幕| 久久精品72免费观看| 亚洲精品美国一| 精品国产免费人成在线观看| 成人激情午夜影院| 麻豆视频一区二区| 亚洲欧美激情视频在线观看一区二区三区| 9191久久久久久久久久久| 粉嫩一区二区三区性色av| 日本在线播放一区二区三区| 国产精品三级久久久久三级| 日韩一区二区在线看| 91蜜桃网址入口| 国产精品1024| 日产国产高清一区二区三区| 亚洲欧洲一区二区三区| 精品国产电影一区二区| 欧美色老头old∨ideo| 成人激情视频网站| 免费欧美在线视频| 亚洲成人黄色小说| 亚洲三级在线看| 国产丝袜欧美中文另类| 欧美成人乱码一区二区三区| 欧美日韩一区成人| 色av成人天堂桃色av| 成人免费视频一区二区| 国产一区二区三区日韩| 日韩国产成人精品| 亚洲国产人成综合网站| 尤物av一区二区| 亚洲精品高清视频在线观看| 国产精品国产馆在线真实露脸| 亚洲精品一区二区三区影院 | 色欧美88888久久久久久影院| 成人性生交大片免费看在线播放 | 亚洲成人av福利| 一区二区三区四区中文字幕| 亚洲日本在线天堂| 自拍偷拍欧美精品| 国产精品乱人伦中文| 欧美激情一区二区在线| 国产欧美一区二区三区在线看蜜臀| 欧美精品一区二区三区蜜桃视频| 日韩亚洲欧美在线观看| 4438x亚洲最大成人网| 欧美精品免费视频| 在线不卡免费欧美| 欧美一区二区三区思思人| 91精选在线观看| 日韩一区二区三区在线| 精品三级在线观看| 久久精品视频一区| 国产精品久久久久久久久免费樱桃| 国产欧美一区二区三区网站| 日本一二三不卡| 亚洲欧美在线视频| 一级特黄大欧美久久久| 亚洲成在线观看| 久久国产人妖系列| 国产精品一二三区| 99久久精品久久久久久清纯| 91免费小视频| 欧美日韩国产高清一区二区| 日韩欧美国产麻豆| 欧美激情一二三区| 亚洲激情六月丁香| 日本在线播放一区二区三区| 国产做a爰片久久毛片| eeuss国产一区二区三区| 91久久国产最好的精华液| 欧美精品国产精品| 2023国产精品视频| 成人免费一区二区三区在线观看| 一区二区三区四区不卡在线| 五月天一区二区| 成人在线综合网站| 在线观看91视频| 久久蜜桃av一区二区天堂| 中文字幕一区二区在线观看 | 亚洲伦理在线免费看| 日韩成人精品在线| 国产精品69毛片高清亚洲| 色综合久久综合| 精品卡一卡二卡三卡四在线| 亚洲欧美日韩电影| 看片的网站亚洲| 91看片淫黄大片一级| 欧美一区二区三区喷汁尤物| 国产清纯白嫩初高生在线观看91| 一区二区三区在线播放| 国产又粗又猛又爽又黄91精品| 色呦呦一区二区三区| 精品久久久久久无| 亚洲国产毛片aaaaa无费看| 国产麻豆午夜三级精品| 欧美三电影在线| 亚洲欧洲www| 国产一区二区免费在线| 欧美日韩视频一区二区| 中文字幕中文乱码欧美一区二区 | 精品sm捆绑视频| 亚洲国产视频a| 91网站最新地址| 国产亚洲制服色| 久久丁香综合五月国产三级网站 | 99精品久久只有精品| 精品国产伦一区二区三区观看方式| 一区二区三区产品免费精品久久75| 国产一区二区三区观看| 日韩三级在线免费观看| 亚洲高清在线精品| 色综合久久综合网97色综合| 中文字幕不卡在线观看| 国产一区二区三区观看| 日韩精品一区二区三区老鸭窝| 亚洲国产精品欧美一二99| av不卡免费电影| 国产欧美精品区一区二区三区| 六月丁香综合在线视频| 欧美男女性生活在线直播观看| 一区二区在线看| 91麻豆精品在线观看| 国产精品成人免费精品自在线观看| 国产91精品精华液一区二区三区 | 国产成人av电影在线| 精品久久久久久无|