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

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

?? isapnp.c

?? 話帶數據中傳真解調程序
?? C
?? 第 1 頁 / 共 4 頁
字號:
			kfree(dma);			return;		}	}	dma->map = tmp[0];	dma->flags = tmp[1];	dma->res = *res;	ptr = (*res)->dma;	while (ptr && ptr->next)		ptr = ptr->next;	if (ptr)		ptr->next = dma;	else		(*res)->dma = dma;}/* *  Add port resource to resources list. */static void __init isapnp_add_port_resource(struct pnp_dev *dev,						struct isapnp_resources **res,						int dependent, int size){	unsigned char tmp[7];	struct isapnp_port *port, *ptr;	isapnp_peek(tmp, size);	port = isapnp_alloc(sizeof(struct isapnp_port));	if (!port)		return;	if (*res == NULL) {		*res = isapnp_build_resources(dev, dependent);		if (*res == NULL) {			kfree(port);			return;		}	}	port->min = (tmp[2] << 8) | tmp[1];	port->max = (tmp[4] << 8) | tmp[3];	port->align = tmp[5];	port->size = tmp[6];	port->flags = tmp[0] ? ISAPNP_PORT_FLAG_16BITADDR : 0;	port->res = *res;	ptr = (*res)->port;	while (ptr && ptr->next)		ptr = ptr->next;	if (ptr)		ptr->next = port;	else		(*res)->port = port;}/* *  Add fixed port resource to resources list. */static void __init isapnp_add_fixed_port_resource(struct pnp_dev *dev,						      struct isapnp_resources **res,						      int dependent, int size){	unsigned char tmp[3];	struct isapnp_port *port, *ptr;	isapnp_peek(tmp, size);	port = isapnp_alloc(sizeof(struct isapnp_port));	if (!port)		return;	if (*res == NULL) {		*res = isapnp_build_resources(dev, dependent);		if (*res == NULL) {			kfree(port);			return;		}	}	port->min = port->max = (tmp[1] << 8) | tmp[0];	port->size = tmp[2];	port->align = 0;	port->flags = ISAPNP_PORT_FLAG_FIXED;	port->res = *res;	ptr = (*res)->port;	while (ptr && ptr->next)		ptr = ptr->next;	if (ptr)		ptr->next = port;	else		(*res)->port = port;}/* *  Add memory resource to resources list. */static void __init isapnp_add_mem_resource(struct pnp_dev *dev,					       struct isapnp_resources **res,					       int dependent, int size){	unsigned char tmp[9];	struct isapnp_mem *mem, *ptr;	isapnp_peek(tmp, size);	mem = isapnp_alloc(sizeof(struct isapnp_mem));	if (!mem)		return;	if (*res == NULL) {		*res = isapnp_build_resources(dev, dependent);		if (*res == NULL) {			kfree(mem);			return;		}	}	mem->min = ((tmp[2] << 8) | tmp[1]) << 8;	mem->max = ((tmp[4] << 8) | tmp[3]) << 8;	mem->align = (tmp[6] << 8) | tmp[5];	mem->size = ((tmp[8] << 8) | tmp[7]) << 8;	mem->flags = tmp[0];	mem->res = *res;	ptr = (*res)->mem;	while (ptr && ptr->next)		ptr = ptr->next;	if (ptr)		ptr->next = mem;	else		(*res)->mem = mem;}/* *  Add 32-bit memory resource to resources list. */static void __init isapnp_add_mem32_resource(struct pnp_dev *dev,						 struct isapnp_resources **res,						 int dependent, int size){	unsigned char tmp[17];	struct isapnp_mem32 *mem32, *ptr;	isapnp_peek(tmp, size);	mem32 = isapnp_alloc(sizeof(struct isapnp_mem32));	if (!mem32)		return;	if (*res == NULL) {		*res = isapnp_build_resources(dev, dependent);		if (*res == NULL) {			kfree(mem32);			return;		}	}	memcpy(mem32->data, tmp, 17);	mem32->res = *res;	ptr = (*res)->mem32;	while (ptr && ptr->next)		ptr = ptr->next;	if (ptr)		ptr->next = mem32;	else		(*res)->mem32 = mem32;}/* *  Add 32-bit fixed memory resource to resources list. */static void __init isapnp_add_fixed_mem32_resource(struct pnp_dev *dev,						       struct isapnp_resources **res,						       int dependent, int size){	unsigned char tmp[17];	struct isapnp_mem32 *mem32, *ptr;	isapnp_peek(tmp, size);	mem32 = isapnp_alloc(sizeof(struct isapnp_mem32));	if (!mem32)		return;	if (*res == NULL) {		*res = isapnp_build_resources(dev, dependent);		if (*res == NULL) {			kfree(mem32);			return;		}	}	memcpy(mem32->data, tmp, 17);	mem32->res = *res;	ptr = (*res)->mem32;	while (ptr && ptr->next)		ptr = ptr->next;	if (ptr)		ptr->next = mem32;	else		(*res)->mem32 = mem32;}/* *  Parse resource map for logical device. */static int __init isapnp_create_device(struct pnp_bus *card,					   unsigned short size){	int number = 0, skip = 0, dependent = 0, compat = 0;	unsigned char type, tmp[17];	struct pnp_dev *dev, *prev_dev;	struct isapnp_resources *res = NULL;		if ((dev = isapnp_parse_device(card, size, number++)) == NULL)		return 1;	card->devices = dev;	if (isapnp_last_device) {		isapnp_last_device->next = dev;		isapnp_last_device = dev;	} else {		isapnp_devices = isapnp_last_device = dev;	}	while (1) {		if (isapnp_read_tag(&type, &size)<0)			return 1;		if (skip && type != _STAG_LOGDEVID && type != _STAG_END)			goto __skip;		switch (type) {		case _STAG_LOGDEVID:			if (size >= 5 && size <= 6) {				prev_dev = dev;				isapnp_config_prepare(dev);				if ((dev = isapnp_parse_device(card, size, number++)) == NULL)					return 1;				prev_dev->sibling = dev;				isapnp_last_device->next = dev;				isapnp_last_device = dev;				size = 0;				skip = 0;			} else {				skip = 1;			}			res = NULL;			dependent = 0;			compat = 0;			break;		case _STAG_COMPATDEVID:			if (size == 4 && compat < DEVICE_COUNT_COMPATIBLE) {				isapnp_peek(tmp, 4);				dev->vendor_compatible[compat] = (tmp[1] << 8) | tmp[0];				dev->device_compatible[compat] = (tmp[3] << 8) | tmp[2];				compat++;				size = 0;			}			break;		case _STAG_IRQ:			if (size < 2 || size > 3)				goto __skip;			isapnp_add_irq_resource(dev, &res, dependent, size);			size = 0;			break;		case _STAG_DMA:			if (size != 2)				goto __skip;			isapnp_add_dma_resource(dev, &res, dependent, size);			size = 0;			break;		case _STAG_STARTDEP:			if (size > 1)				goto __skip;			res = NULL;			dependent = 0x100 | ISAPNP_RES_PRIORITY_ACCEPTABLE;			if (size > 0) {				isapnp_peek(tmp, size);				dependent = 0x100 | tmp[0];				size = 0;			}			break;		case _STAG_ENDDEP:			if (size != 0)				goto __skip;			res = NULL;			dependent = 0;			break;		case _STAG_IOPORT:			if (size != 7)				goto __skip;			isapnp_add_port_resource(dev, &res, dependent, size);			size = 0;			break;		case _STAG_FIXEDIO:			if (size != 3)				goto __skip;			isapnp_add_fixed_port_resource(dev, &res, dependent, size);			size = 0;			break;		case _STAG_VENDOR:			break;		case _LTAG_MEMRANGE:			if (size != 9)				goto __skip;			isapnp_add_mem_resource(dev, &res, dependent, size);			size = 0;			break;		case _LTAG_ANSISTR:			if (dev->name[0] == '\0') {				unsigned short size1 = size > 47 ? 47 : size;				isapnp_peek(dev->name, size1);				dev->name[size1] = '\0';				size -= size1;			}			break;		case _LTAG_UNICODESTR:			/* silently ignore */			/* who use unicode for hardware identification? */			break;		case _LTAG_VENDOR:			break;		case _LTAG_MEM32RANGE:			if (size != 17)				goto __skip;			isapnp_add_mem32_resource(dev, &res, dependent, size);			size = 0;			break;		case _LTAG_FIXEDMEM32RANGE:			if (size != 17)				goto __skip;			isapnp_add_fixed_mem32_resource(dev, &res, dependent, size);			size = 0;			break;		case _STAG_END:			if (size > 0)				isapnp_skip_bytes(size);			return 1;		default:			printk("isapnp: unexpected or unknown tag type 0x%x for logical device %i (device %i), ignored\n", type, dev->devfn, card->number);		}	      __skip:	      	if (size > 0)		      	isapnp_skip_bytes(size);	}	isapnp_config_prepare(dev);	return 0;}/* *  Parse resource map for ISA PnP card. */ static void __init isapnp_parse_resource_map(struct pnp_bus *card){	unsigned char type, tmp[17];	unsigned short size;		while (1) {		if (isapnp_read_tag(&type, &size)<0)			return;		switch (type) {		case _STAG_PNPVERNO:			if (size != 2)				goto __skip;			isapnp_peek(tmp, 2);			card->pnpver = tmp[0];			card->productver = tmp[1];			size = 0;			break;		case _STAG_LOGDEVID:			if (size >= 5 && size <= 6) {				if (isapnp_create_device(card, size)==1)					return;				size = 0;			}			break;		case _STAG_VENDOR:			break;		case _LTAG_ANSISTR:			if (card->name[0] == '\0') {				unsigned short size1 = size > 47 ? 47 : size;				isapnp_peek(card->name, size1);				card->name[size1] = '\0';				size -= size1;			}			break;		case _LTAG_UNICODESTR:			/* silently ignore */			/* who use unicode for hardware identification? */			break;		case _LTAG_VENDOR:			break;		case _STAG_END:			if (size > 0)				isapnp_skip_bytes(size);			return;		default:			printk("isapnp: unexpected or unknown tag type 0x%x for device %i, ignored\n", type, card->number);		}	      __skip:	      	if (size > 0)		      	isapnp_skip_bytes(size);	}}/* *  Compute ISA PnP checksum for first eight bytes. */static unsigned char __init isapnp_checksum(unsigned char *data){	int i, j;	unsigned char checksum = 0x6a, bit, b;		for (i = 0; i < 8; i++) {		b = data[i];		for (j = 0; j < 8; j++) {			bit = 0;			if (b & (1 << j))				bit = 1;			checksum = ((((checksum ^ (checksum >> 1)) & 0x01) ^ bit) << 7) | (checksum >> 1);		}	}	return checksum;}/* *  Build device list for all present ISA PnP devices. */static int __init isapnp_build_device_list(void){	int csn;	unsigned char header[9], checksum;	struct pnp_bus *card, *prev = NULL;	isapnp_wait();	isapnp_key();	for (csn = 1; csn <= 10; csn++) {		isapnp_wake(csn);		isapnp_peek(header, 9);		checksum = isapnp_checksum(header);#if 0		printk("vendor: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n",			header[0], header[1], header[2], header[3],			header[4], header[5], header[6], header[7], header[8]);		printk("checksum = 0x%x\n", checksum);#endif		if (checksum == 0x00 || checksum != header[8])	/* not valid CSN */			continue;		if ((card = isapnp_alloc(sizeof(struct pnp_bus))) == NULL)			continue;		card->number = csn;		card->vendor = (header[1] << 8) | header[0];		card->device = (header[3] << 8) | header[2];		card->serial = (header[7] << 24) | (header[6] << 16) | (header[5] << 8) | header[4];		isapnp_checksum_value = 0x00;		isapnp_parse_resource_map(card);		if (isapnp_checksum_value != 0x00)			printk("isapnp: checksum for device %i is not valid (0x%x)\n", csn, isapnp_checksum_value);		card->checksum = isapnp_checksum_value;		if (!isapnp_cards)			isapnp_cards = card;		else			prev->next = card;		prev = card;	}	return 0;}/* *  Basic configuration routines. */int isapnp_present(void){	if (isapnp_devices)		return 1;	return 0;}int isapnp_cfg_begin(int csn, int logdev){	if (csn < 1 || csn > 10 || logdev > 10)		return -EINVAL;	MOD_INC_USE_COUNT;	down(&isapnp_cfg_mutex);	isapnp_wait();	isapnp_key();	isapnp_wake(csn);#if 1	/* to avoid malfunction when the isapnptools package is used */	isapnp_set_rdp();	udelay(1000);	/* delay 1000us */	write_address(0x01);	udelay(1000);	/* delay 1000us */#endif	if (logdev >= 0)		isapnp_device(logdev);	return 0;}int isapnp_cfg_end(void){	isapnp_wait();	up(&isapnp_cfg_mutex);	MOD_DEC_USE_COUNT;	return 0;}/* *  Resource manager. */static struct isapnp_port *isapnp_find_port(struct pnp_dev *dev, int index){	struct isapnp_resources *res;	struct isapnp_port *port;		if (!dev || index < 0 || index > 7)		return NULL;	for (res = (struct isapnp_resources *)dev->sysdata; res; res = res->next) {		for (port = res->port; port; port = port->next) {			if (!index)				return port;			index--;		}	}	return NULL;}struct isapnp_irq *isapnp_find_irq(struct pnp_dev *dev, int index){	struct isapnp_resources *res, *resa;	struct isapnp_irq *irq;	int index1, index2, index3;		if (!dev || index < 0 || index > 7)		return NULL;	for (res = (struct isapnp_resources *)dev->sysdata; res; res = res->next) {		index3 = 0;		for (resa = res; resa; resa = resa->alt) {			index1 = index;			index2 = 0;			for (irq = resa->irq; irq; irq = irq->next) {				if (!index1)					return irq;				index1--;				index2++;			}			if (index3 < index2)				index3 = index2;		}		index -= index3;	}	return NULL;}struct isapnp_dma *isapnp_find_dma(struct pnp_dev *dev, int index){	struct isapnp_resources *res;	struct isapnp_dma *dma;		if (!dev || index < 0 || index > 7)		return NULL;	for (res = (struct isapnp_resources *)dev->sysdata; res; res = res->next) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区久久| 91精品国产色综合久久不卡蜜臀| 免费一级欧美片在线观看| 中文字幕av一区二区三区免费看| 欧美日韩在线综合| 99国产精品久久久| 成人黄色网址在线观看| 国产麻豆日韩欧美久久| 美女爽到高潮91| 日韩不卡一区二区| 麻豆精品在线视频| 久久精品国产一区二区三| 婷婷综合另类小说色区| 日韩和欧美一区二区| 亚洲精品欧美激情| 亚洲一区二区影院| 午夜视频在线观看一区二区 | 一区二区三区四区高清精品免费观看| 欧美精品一区二区蜜臀亚洲| 久久综合五月天婷婷伊人| 精品国产一区久久| 久久美女高清视频| 国产女人aaa级久久久级| 国产清纯在线一区二区www| 国产精品乱人伦| 中文字幕亚洲欧美在线不卡| 亚洲成人资源在线| 另类小说视频一区二区| 成人午夜视频在线观看| 91麻豆国产精品久久| 欧美日韩精品是欧美日韩精品| 日韩欧美国产综合在线一区二区三区 | 欧美日韩国产电影| 日韩亚洲欧美成人一区| 麻豆国产精品一区二区三区 | 成人av网址在线| 在线观看一区二区精品视频| 日韩欧美在线网站| 国产精品家庭影院| 麻豆久久一区二区| 色国产综合视频| 日本一区二区在线不卡| 亚洲一区二区3| 国产白丝精品91爽爽久久| 欧洲精品中文字幕| 日本一区二区三区视频视频| 亚洲综合图片区| 成人看片黄a免费看在线| 日韩一区二区三免费高清| 樱桃视频在线观看一区| 国产风韵犹存在线视精品| 日韩亚洲国产中文字幕欧美| 一区二区久久久| 一本色道久久综合亚洲91| 国产色爱av资源综合区| 国内精品伊人久久久久av影院| 欧美日韩一区中文字幕| 亚洲精品久久7777| 99精品一区二区| 国产精品国模大尺度视频| 国产精品系列在线播放| 日韩免费视频线观看| 免费一级欧美片在线观看| 欧美一区二区国产| 日本va欧美va精品| 日韩欧美国产系列| 经典三级视频一区| 久久久久久影视| 久久激情五月婷婷| 精品福利视频一区二区三区| 精久久久久久久久久久| 亚洲精品在线观看网站| 成人动漫在线一区| 亚洲综合色视频| 91精品久久久久久蜜臀| 精品一区二区三区在线观看| 久久久国产一区二区三区四区小说| 蜜臀a∨国产成人精品| 久久综合五月天婷婷伊人| 99视频国产精品| 成人短视频下载| 亚洲一二三级电影| 精品区一区二区| 91亚洲国产成人精品一区二区三| 亚洲午夜日本在线观看| 久久嫩草精品久久久久| 日本电影欧美片| 秋霞午夜av一区二区三区 | 欧美videos中文字幕| 成人妖精视频yjsp地址| 日韩激情视频在线观看| 欧美激情中文字幕| 亚洲日本va在线观看| 日韩免费在线观看| 久久人人爽爽爽人久久久| 51精品国自产在线| 99久久精品免费精品国产| 日韩黄色免费网站| 一区二区久久久| 久久久久高清精品| 欧美日韩精品一区二区三区四区 | 国产精品久线观看视频| 制服丝袜日韩国产| 欧美在线不卡一区| 99视频精品免费视频| 高清在线观看日韩| 国产剧情一区二区| 青青草成人在线观看| 偷拍日韩校园综合在线| 亚洲一区二区三区视频在线播放| 亚洲视频精选在线| 欧美激情一区二区三区蜜桃视频| 精品欧美一区二区在线观看| 欧美日韩国产美| 91精品久久久久久久91蜜桃| 欧美喷水一区二区| 欧美一区日韩一区| 日韩小视频在线观看专区| 日韩欧美一级片| 精品国产免费视频| 国产日产欧美一区| 国产精品毛片大码女人| 国产精品国产三级国产普通话99| 国产精品毛片高清在线完整版| 中日韩av电影| 亚洲免费观看高清完整版在线观看| 亚洲麻豆国产自偷在线| 一区二区三区欧美| 丝袜诱惑制服诱惑色一区在线观看| 亚洲成av人片在线| 九一九一国产精品| 国产酒店精品激情| 在线观看91视频| 制服丝袜亚洲色图| 日本一区二区久久| 亚洲综合免费观看高清完整版在线| 亚洲成人手机在线| 国产一区二区毛片| 色噜噜狠狠成人中文综合| 制服丝袜日韩国产| 国产精品欧美综合在线| 日韩黄色片在线观看| 国产九九视频一区二区三区| 色94色欧美sute亚洲13| 2022国产精品视频| 一区二区国产盗摄色噜噜| 美腿丝袜亚洲综合| 在线一区二区三区做爰视频网站| 久久亚洲精华国产精华液| 一区二区欧美视频| av在线播放成人| 久久美女艺术照精彩视频福利播放| 成人欧美一区二区三区| 国产精品99精品久久免费| 欧美色中文字幕| 亚洲狠狠爱一区二区三区| 成人精品高清在线| 久久久不卡网国产精品二区| 日韩 欧美一区二区三区| 色乱码一区二区三区88| 欧美高清在线一区| 国产成人亚洲综合色影视| 欧美r级在线观看| 久久精品国产77777蜜臀| 欧美一级一区二区| 天堂资源在线中文精品| 99久久精品国产导航| 国产精品精品国产色婷婷| 国产精品综合在线视频| 国产日韩欧美在线一区| 国产成人综合在线观看| 精品国产区一区| 国产宾馆实践打屁股91| 精品福利一二区| 国产91在线|亚洲| 日本一区二区久久| 色哟哟精品一区| 亚洲一本大道在线| 欧美男同性恋视频网站| 婷婷六月综合网| 久久亚洲一级片| 色综合天天综合在线视频| 亚洲精品国产无套在线观| 欧美体内she精高潮| 奇米777欧美一区二区| 日韩免费性生活视频播放| www.在线欧美| 午夜欧美电影在线观看| 精品三级在线看| 91麻豆成人久久精品二区三区| 天天综合色天天| 国产精品美女久久久久aⅴ国产馆| 欧美日韩免费不卡视频一区二区三区 | 久久不见久久见免费视频7| 欧美国产精品劲爆| 欧美精品在欧美一区二区少妇| 国产精品一区免费视频| 亚洲午夜国产一区99re久久| 亚洲精品一线二线三线| 欧美日韩国产精品自在自线|