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

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

?? isapnp.c

?? mgcp協(xié)議源代碼。支持多種編碼:g711
?? C
?? 第 1 頁 / 共 4 頁
字號:
}static int isapnp_valid_dma(struct isapnp_cfgtmp *cfg, int idx){	int err, i;	unsigned long *value1, *value2;	struct isapnp_dma *dma;	if (!cfg || idx < 0 || idx > 1)		return -EINVAL;	if (!(cfg->result.dma_resource[idx].flags & IORESOURCE_AUTO))	/* don't touch */		return 0;      __again:      	dma = cfg->dma[idx];      	if (!dma)      		return -EINVAL;      	value1 = &cfg->result.dma_resource[idx].start;      	value2 = &cfg->result.dma_resource[idx].end;	if (cfg->result.dma_resource[idx].flags & IORESOURCE_AUTO) {		for (i = 0; i < 8 && !(dma->map & (1<<i)); i++);		if (i >= 8)			return -ENOENT;		cfg->result.dma_resource[idx].flags &= ~IORESOURCE_AUTO;		if (!isapnp_check_dma(cfg, *value1 = *value2 = i, idx))			return 0;	}	do {		for (i = *value1 + 1; i < 8 && !(dma->map & (1<<i)); i++);		if (i >= 8) {			if (dma->res && dma->res->alt) {				if ((err = isapnp_alternative_switch(cfg, dma->res, dma->res->alt))<0)					return err;				goto __again;			}			return -ENOENT;		} else {			*value1 = *value2 = i;		}	} while (isapnp_check_dma(cfg, *value1, idx));	return 0;}static int isapnp_check_mem(struct isapnp_cfgtmp *cfg, unsigned int addr, unsigned int size, int idx){	int i, tmp;	unsigned int raddr, rsize;	struct pnp_dev *dev;	struct isapnp_mem *xmem;	for (i = 0; i < 8; i++) {		raddr = (unsigned int)isapnp_reserve_mem[i << 1];		rsize = (unsigned int)isapnp_reserve_mem[(i << 1) + 1];		if (addr >= raddr && addr < raddr + rsize)			return 1;		if (addr + size > raddr && addr + size < (raddr + rsize) - 1)			return 1;//		if (__check_region(&iomem_resource, addr, size))		if (check_region(addr, size))			return 1;	}	for (dev = isapnp_devices; dev; dev = dev->next) {		if (dev->active) {			for (tmp = 0; tmp < 4; tmp++) {				if (dev->resource[tmp].flags) {					raddr = dev->resource[tmp + 8].start;					rsize = (dev->resource[tmp + 8].end - raddr) + 1;					if (addr >= raddr && addr < raddr + rsize)						return 1;					if (addr + size > raddr && addr + size < (raddr + rsize) - 1)						return 1;				}			}		}	}	for (i = 0; i < 4; i++) {		unsigned int flags = cfg->request->resource[i + 8].flags;		if (i == idx)			continue;		if (!flags)			continue;		tmp = cfg->result.resource[i + 8].start;		if (flags & IORESOURCE_AUTO) {		/* auto */			xmem = cfg->mem[i];			if (!xmem)				return 1;			if (cfg->result.resource[i + 8].flags & IORESOURCE_AUTO)				continue;			if (tmp + xmem->size >= addr && tmp <= addr + xmem->size)				return 1;			continue;		}		if (addr == tmp)			return 1;		xmem = isapnp_find_mem(cfg->request, i);		if (!xmem)			return 1;		if (tmp + xmem->size >= addr && tmp <= addr + xmem->size)			return 1;	}	return 0;}static int isapnp_valid_mem(struct isapnp_cfgtmp *cfg, int idx){	int err;	unsigned long *value1, *value2;	struct isapnp_mem *mem;	if (!cfg || idx < 0 || idx > 3)		return -EINVAL;	if (!(cfg->result.resource[idx + 8].flags & IORESOURCE_AUTO)) /* don't touch */		return 0;      __again:      	mem = cfg->mem[idx];      	if (!mem)      		return -EINVAL;      	value1 = &cfg->result.resource[idx].start;      	value2 = &cfg->result.resource[idx].end;	if (cfg->result.resource[idx + 8].flags & IORESOURCE_AUTO) {		cfg->result.resource[idx + 8].flags &= ~IORESOURCE_AUTO;		*value1 = mem->min;		*value2 = mem->min + mem->size - 1;		if (!isapnp_check_mem(cfg, *value1, mem->size, idx))			return 0;	}	do {		*value1 += mem->align;		*value2 = *value1 + mem->size - 1;		if (*value1 >= 8 || !mem->align) {			if (mem->res && mem->res->alt) {				if ((err = isapnp_alternative_switch(cfg, mem->res, mem->res->alt))<0)					return err;				goto __again;			}			return -ENOENT;		}	} while (isapnp_check_mem(cfg, *value1, mem->size, idx));	return 0;}static int isapnp_check_valid(struct isapnp_cfgtmp *cfg){	int tmp;		for (tmp = 0; tmp < 8; tmp++)		if (cfg->result.resource[tmp].flags & IORESOURCE_AUTO)			return -EAGAIN;	for (tmp = 0; tmp < 2; tmp++)		if (cfg->result.irq_resource[tmp].flags & IORESOURCE_AUTO)			return -EAGAIN;	for (tmp = 0; tmp < 2; tmp++)		if (cfg->result.dma_resource[tmp].flags & IORESOURCE_AUTO)			return -EAGAIN;	for (tmp = 0; tmp < 4; tmp++)		if (cfg->result.resource[tmp + 8].flags & IORESOURCE_AUTO)			return -EAGAIN;	return 0;}static int isapnp_config_activate(struct pnp_dev *dev){	struct isapnp_cfgtmp cfg;	int tmp, fauto, err;		if (!dev)		return -EINVAL;	if (dev->active)		return -EBUSY;	memset(&cfg, 0, sizeof(cfg));	cfg.request = dev;	memcpy(&cfg.result, dev, sizeof(struct pnp_dev));	/* check if all values are set, otherwise try auto-configuration */	for (tmp = fauto = 0; !fauto && tmp < 8; tmp++) {		if (dev->resource[tmp].flags & IORESOURCE_AUTO)			fauto++;	}	for (tmp = 0; !fauto && tmp < 2; tmp++) {		if (dev->irq_resource[tmp].flags & IORESOURCE_AUTO)			fauto++;	}	for (tmp = 0; !fauto && tmp < 2; tmp++) {		if (dev->dma_resource[tmp].flags & IORESOURCE_AUTO)			fauto++;	}	for (tmp = 0; !fauto && tmp < 4; tmp++) {		if (dev->resource[tmp + 8].flags & IORESOURCE_AUTO)			fauto++;	}	if (!fauto)		goto __skip_auto;	/* set variables to initial values */	if ((err = isapnp_alternative_switch(&cfg, NULL, NULL))<0)		return err;	/* find first valid configuration */	fauto = 0;	do {		for (tmp = 0; tmp < 8 && cfg.result.resource[tmp].flags; tmp++)			if ((err = isapnp_valid_port(&cfg, tmp))<0)				return err;		for (tmp = 0; tmp < 2 && cfg.result.irq_resource[tmp].flags; tmp++)			if ((err = isapnp_valid_irq(&cfg, tmp))<0)				return err;		for (tmp = 0; tmp < 2 && cfg.result.dma_resource[tmp].flags; tmp++)			if ((err = isapnp_valid_dma(&cfg, tmp))<0)				return err;		for (tmp = 0; tmp < 4 && cfg.result.resource[tmp + 8].flags; tmp++)			if ((err = isapnp_valid_mem(&cfg, tmp))<0)				return err;	} while (isapnp_check_valid(&cfg)<0 && fauto++ < 20);	if (fauto >= 20)		return -EAGAIN;      __skip_auto:      	/* we have valid configuration, try configure hardware */      	isapnp_cfg_begin(dev->bus->number, dev->devfn);	dev->active = 1;	dev->irq_resource[0] = cfg.result.irq_resource[0];	dev->irq_resource[1] = cfg.result.irq_resource[1];	dev->dma_resource[0] = cfg.result.dma_resource[0];	dev->dma_resource[1] = cfg.result.dma_resource[1];	for (tmp = 0; tmp < 12; tmp++) {		dev->resource[tmp] = cfg.result.resource[tmp];	}		for (tmp = 0; tmp < 8 && dev->resource[tmp].flags; tmp++)		isapnp_write_word(ISAPNP_CFG_PORT+(tmp<<1), dev->resource[tmp].start);	for (tmp = 0; tmp < 2 && dev->irq_resource[tmp].flags; tmp++) {		int irq = dev->irq_resource[tmp].start;		if (irq == 2)			irq = 9;		isapnp_write_byte(ISAPNP_CFG_IRQ+(tmp<<1), irq);	}	for (tmp = 0; tmp < 2 && dev->dma_resource[tmp].flags; tmp++)		isapnp_write_byte(ISAPNP_CFG_DMA+tmp, dev->dma_resource[tmp].start);	for (tmp = 0; tmp < 4 && dev->resource[tmp+8].flags; tmp++)		isapnp_write_word(ISAPNP_CFG_MEM+(tmp<<2), (dev->resource[tmp + 8].start >> 8) & 0xffff);	isapnp_activate(dev->devfn);	isapnp_cfg_end();	return 0;}static int isapnp_config_deactivate(struct pnp_dev *dev){	if (!dev || !dev->active)		return -EINVAL;      	isapnp_cfg_begin(dev->bus->number, dev->devfn);	isapnp_deactivate(dev->devfn);	dev->active = 0;	isapnp_cfg_end();	return 0;}void isapnp_resource_change(struct resource *resource,			    unsigned long start,			    unsigned long size){	if (resource == NULL)		return;	resource->flags &= ~IORESOURCE_AUTO;	resource->start = start;	resource->end = start + size - 1;}/* *  Inititialization. */#ifdef MODULEstatic void isapnp_free_port(struct isapnp_port *port){	struct isapnp_port *next;	while (port) {		next = port->next;		kfree(port);		port = next;	}}static void isapnp_free_irq(struct isapnp_irq *irq){	struct isapnp_irq *next;	while (irq) {		next = irq->next;		kfree(irq);		irq = next;	}}static void isapnp_free_dma(struct isapnp_dma *dma){	struct isapnp_dma *next;	while (dma) {		next = dma->next;		kfree(dma);		dma = next;	}}static void isapnp_free_mem(struct isapnp_mem *mem){	struct isapnp_mem *next;	while (mem) {		next = mem->next;		kfree(mem);		mem = next;	}}static void isapnp_free_mem32(struct isapnp_mem32 *mem32){	struct isapnp_mem32 *next;	while (mem32) {		next = mem32->next;		kfree(mem32);		mem32 = next;	}}static void isapnp_free_resources(struct isapnp_resources *resources, int alt){	struct isapnp_resources *next;	while (resources) {		next = alt ? resources->alt : resources->next;		isapnp_free_port(resources->port);		isapnp_free_irq(resources->irq);		isapnp_free_dma(resources->dma);		isapnp_free_mem(resources->mem);		isapnp_free_mem32(resources->mem32);		if (!alt && resources->alt)			isapnp_free_resources(resources->alt, 1);		kfree(resources);		resources = next;	}}static void isapnp_free_device(struct pnp_dev *dev){	struct pnp_dev *next;	while (dev) {		next = dev->sibling;		isapnp_free_resources((struct isapnp_resources *)dev->sysdata, 0);		kfree(dev);		dev = next;	}}#endif /* MODULE */static void isapnp_free_all_resources(void){#ifdef MODULE	struct pnp_bus *card, *cardnext;#endif#ifdef ISAPNP_REGION_OK//	release_resource(pidxr_res);        release_region(_PIDXR, 1);#endif//	release_resource(pnpwrp_res);        release_region(_PNPWRP, 1);	if (isapnp_rdp >= 0x203 && isapnp_rdp <= 0x3ff)//		release_resource(isapnp_rdp_res);		release_region(isapnp_rdp, 1);#ifdef MODULE	for (card = isapnp_cards; card; card = cardnext) {		cardnext = card->next;		isapnp_free_device(card->devices);		kfree(card);	}#ifdef CONFIG_PROC_FS	isapnp_proc_done();#endif#endif}static int __init isapnp_do_reserve_irq(int irq){	int i;		if (irq < 0 || irq > 15)		return -EINVAL;	for (i = 0; i < 16; i++) {		if (isapnp_reserve_irq[i] == irq)			return 0;	}	for (i = 0; i < 16; i++) {		if (isapnp_reserve_irq[i] < 0) {			isapnp_reserve_irq[i] = irq;#ifdef ISAPNP_DEBUG			printk("IRQ %i is reserved now.\n", irq);#endif			return 0;		}	}	return -ENOMEM;}#ifdef CONFIG_PCIstruct pnp_dev *pnp_find_slot(unsigned int bus, unsigned int devfn){        struct pnp_dev *dev;        for(dev=isapnp_devices; dev; dev=dev->next)                if (dev->bus->number == bus && dev->devfn == devfn)                        break;        return dev;}static void __init isapnp_pci_init(void){	int devfn;	struct pnp_dev *dev;		for (devfn = 0; devfn < 255; devfn++) {		dev = pnp_find_slot(0, devfn);		if (dev != NULL)			break;	}	if (dev == NULL)		return;	while (dev) {#ifdef ISAPNP_DEBUG		printk("PCI: reserved IRQ: %i\n", dev->irq);#endif		if (dev->irq > 0)			isapnp_do_reserve_irq(dev->irq);		dev = dev->next;	}}#endif /* CONFIG_PCI */EXPORT_SYMBOL(isapnp_present);EXPORT_SYMBOL(isapnp_cfg_begin);EXPORT_SYMBOL(isapnp_cfg_end);EXPORT_SYMBOL(isapnp_read_byte);EXPORT_SYMBOL(isapnp_read_word);EXPORT_SYMBOL(isapnp_read_dword);EXPORT_SYMBOL(isapnp_write_byte);EXPORT_SYMBOL(isapnp_write_word);EXPORT_SYMBOL(isapnp_write_dword);EXPORT_SYMBOL(isapnp_wake);EXPORT_SYMBOL(isapnp_device);EXPORT_SYMBOL(isapnp_activate);EXPORT_SYMBOL(isapnp_deactivate);EXPORT_SYMBOL(isapnp_find_card);EXPORT_SYMBOL(isapnp_find_dev);EXPORT_SYMBOL(isapnp_resource_change);int __init isapnp_init(void){	int cards;	struct pnp_bus *card;	struct pnp_dev *dev;	if (isapnp_disable) {		isapnp_detected = 0;		printk("isapnp: ISA Plug & Play support disabled\n");		return 0;	}#ifdef ISAPNP_REGION_OK	request_region(_PIDXR, 1, "isapnp index");//	pidxr_res=request_region(_PIDXR, 1, "isapnp index");//	if(!pidxr_res) {//		printk("isapnp: Index Register 0x%x already used\n", _PIDXR);//		return -EBUSY;//	}#endif	request_region(_PNPWRP, 1, "isapnp write");//	pnpwrp_res=request_region(_PNPWRP, 1, "isapnp write");//	if(!pnpwrp_res) {//		printk("isapnp: Write Data Register 0x%x already used\n", _PNPWRP);//		return -EBUSY;//	}		/*	 *	Print a message. The existing ISAPnP code is hanging machines	 *	so let the user know where.	 */	 	printk("isapnp: Scanning for Pnp cards...\n");	if (isapnp_rdp >= 0x203 && isapnp_rdp <= 0x3ff) {		isapnp_rdp |= 3;		request_region(isapnp_rdp, 1, "isapnp read");//		isapnp_rdp_res=request_region(isapnp_rdp, 1, "isapnp read");//		if(!isapnp_rdp_res) {//			printk("isapnp: Read Data Register 0x%x already used\n", isapnp_rdp);//			return -EBUSY;//		}		isapnp_set_rdp();	}	isapnp_detected = 1;	if (isapnp_rdp < 0x203 || isapnp_rdp > 0x3ff) {		cards = isapnp_isolate();		if (cards < 0 || 		    (isapnp_rdp < 0x203 || isapnp_rdp > 0x3ff)) {			isapnp_free_all_resources();			isapnp_detected = 0;			printk("isapnp: No Plug & Play device found\n");			return 0;		}		request_region(isapnp_rdp, 1, "isapnp read");//		isapnp_rdp_res=request_region(isapnp_rdp, 1, "isapnp read");	}	isapnp_build_device_list();	cards = 0;	for (card = isapnp_cards; card; card = card->next)		cards++;	if (isapnp_verbose) {		for (card = isapnp_cards; card; card = card->next) {			printk( "isapnp: Card '%s'\n", card->name[0]?card->name:"Unknown");			if (isapnp_verbose < 2)				continue;			for (dev = card->devices; dev; dev = dev->next)				printk("isapnp:   Device '%s'\n", dev->name[0]?card->name:"Unknown");		}	}	if (cards) {		printk("isapnp: %i Plug & Play card%s detected total\n", cards, cards>1?"s":"");	} else {		printk("isapnp: No Plug & Play card found\n");	}#ifdef CONFIG_PCI	if (!isapnp_skip_pci_scan)		isapnp_pci_init();#endif#ifdef CONFIG_PROC_FS	isapnp_proc_init();#endif	return 0;}#ifdef MODULEint init_module(void){	return isapnp_init();}void cleanup_module(void){	if (isapnp_detected)		isapnp_free_all_resources();}#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
kk眼镜猥琐国模调教系列一区二区 | 亚洲高清在线精品| 97国产一区二区| 亚洲人妖av一区二区| 色综合久久九月婷婷色综合| 亚洲最新视频在线播放| 欧美日韩久久不卡| 卡一卡二国产精品 | 久久久亚洲精品一区二区三区| 精品亚洲成a人在线观看| 久久久久久免费毛片精品| 成人av在线网| 亚洲一区二区三区四区五区黄 | 成人福利视频在线看| 日韩毛片精品高清免费| 欧美日韩大陆一区二区| 韩国在线一区二区| 亚洲视频你懂的| 3d动漫精品啪啪1区2区免费| 国产激情视频一区二区在线观看| 中文字幕一区二区三区在线观看| 欧美在线你懂得| 极品少妇一区二区三区精品视频| 国产精品久久久久久久久图文区| 欧美日韩一区小说| 国产精品羞羞答答xxdd| 亚洲精品菠萝久久久久久久| 日韩视频在线一区二区| 精品久久免费看| 成人午夜电影小说| 蜜臀av一区二区| 日韩一区中文字幕| 日韩你懂的在线观看| 99re视频这里只有精品| 麻豆精品久久久| 一区二区三区在线免费| 2021中文字幕一区亚洲| 欧美性猛片aaaaaaa做受| 国产一区二区三区美女| 婷婷综合五月天| 国产精品嫩草99a| 日韩精品自拍偷拍| 欧美日韩中文字幕精品| av电影在线观看一区| 久久99久久99精品免视看婷婷| 亚洲精品乱码久久久久久日本蜜臀| 欧美电影免费提供在线观看| 91久久久免费一区二区| 国产成人在线影院| 久久不见久久见免费视频7| 韩国毛片一区二区三区| 成人app软件下载大全免费| 亚洲成va人在线观看| 国产在线观看一区二区| 亚洲国产aⅴ天堂久久| 国产精品久久久久久久久免费桃花| 欧美xingq一区二区| 精品视频一区三区九区| 99精品在线免费| 丁香亚洲综合激情啪啪综合| 久久av资源网| 麻豆国产精品官网| 天堂蜜桃91精品| 舔着乳尖日韩一区| 夜夜揉揉日日人人青青一国产精品| 国产精品视频观看| 国产欧美一区二区在线观看| 精品国产精品网麻豆系列| 日韩欧美国产综合| 日韩欧美一级精品久久| 制服视频三区第一页精品| 欧美猛男gaygay网站| 精品婷婷伊人一区三区三| 欧美色老头old∨ideo| 欧美视频精品在线| 欧美日韩免费一区二区三区 | 国产成+人+日韩+欧美+亚洲| 久久福利视频一区二区| 久久电影国产免费久久电影| 久久精品国产精品亚洲红杏| 久久精品99国产精品| 久久精品国产色蜜蜜麻豆| 卡一卡二国产精品| 国内精品在线播放| 国产成都精品91一区二区三| 成人涩涩免费视频| 91丨九色丨黑人外教| 色婷婷综合久久久| 欧美日韩精品综合在线| 日韩欧美美女一区二区三区| 精品久久久久久久久久久久包黑料 | 国产成人在线视频免费播放| 国产精品123区| 不卡av在线网| 欧美性猛片aaaaaaa做受| 在线成人午夜影院| 欧美成人乱码一区二区三区| 久久久亚洲国产美女国产盗摄 | 欧美一级午夜免费电影| 精品国产成人系列| 欧美国产日韩一二三区| 亚洲美女屁股眼交3| 亚洲mv在线观看| 狠狠色丁香九九婷婷综合五月| 国产成人精品一区二区三区四区 | 国产激情精品久久久第一区二区 | 中文字幕字幕中文在线中不卡视频| 亚洲精品五月天| 日本三级亚洲精品| 国产精品一级黄| 色偷偷成人一区二区三区91 | 26uuu国产一区二区三区| 国产伦精一区二区三区| av电影天堂一区二区在线观看| 91国内精品野花午夜精品| 制服丝袜成人动漫| 欧美激情在线看| 亚洲成人激情综合网| 国产精品自拍在线| 欧美日韩一区二区三区在线| 久久久噜噜噜久久中文字幕色伊伊| 一区二区三区在线视频免费观看 | 国产精品一色哟哟哟| 色婷婷综合激情| 精品福利一二区| 亚洲成人自拍网| 国产**成人网毛片九色| 538在线一区二区精品国产| 欧美国产日韩a欧美在线观看| 丝袜国产日韩另类美女| 91在线精品一区二区| 欧美成人三级电影在线| 亚洲伊人色欲综合网| 国产成人亚洲精品青草天美| 91精品婷婷国产综合久久性色| 综合久久一区二区三区| 精品一区二区三区免费毛片爱| 欧美性感一区二区三区| 国产精品久久99| 激情综合五月天| 4438x亚洲最大成人网| 一区二区在线观看免费| 成人动漫中文字幕| 2023国产精品自拍| 美女一区二区久久| 欧美性色欧美a在线播放| 自拍视频在线观看一区二区| 粉嫩aⅴ一区二区三区四区五区| 日韩女同互慰一区二区| 视频一区二区不卡| 欧美日韩免费电影| 一区二区在线电影| 91理论电影在线观看| 亚洲国产精品激情在线观看| 国产精品白丝av| 久久综合九色综合欧美亚洲| 美日韩一区二区| 日韩午夜在线观看视频| 日本亚洲视频在线| 欧美一区二区视频在线观看| 午夜精品福利在线| 欧美日韩另类一区| 亚洲成a人片在线不卡一二三区 | 欧美精选午夜久久久乱码6080| 亚洲精品菠萝久久久久久久| 91伊人久久大香线蕉| 亚洲欧美精品午睡沙发| 91丨porny丨首页| 玉足女爽爽91| 欧美中文字幕亚洲一区二区va在线| 一区二区三区不卡视频在线观看| 色综合久久精品| 亚洲自拍另类综合| 欧美卡1卡2卡| 麻豆一区二区在线| 久久久久久日产精品| 成人午夜免费av| 国产精品成人免费| 在线免费观看不卡av| 日本人妖一区二区| 久久久久久夜精品精品免费| 粉嫩av一区二区三区粉嫩| 中文字幕视频一区二区三区久| 91尤物视频在线观看| 色网站国产精品| 亚洲成人tv网| 日韩欧美国产小视频| 国产成人午夜精品5599| 亚洲同性同志一二三专区| 欧美日韩中字一区| 极品少妇一区二区三区精品视频 | 成人免费视频视频在线观看免费 | 日本韩国欧美三级| 亚洲国产成人91porn| 日韩精品一区二区在线| 成人免费的视频| 亚洲二区视频在线| 久久亚洲综合色| 日本韩国一区二区三区| 青青草精品视频|