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

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

?? 3w-xxxx.c

?? Linux Kernel 2.6.9 for OMAP1710
?? C
?? 第 1 頁 / 共 5 頁
字號:
			/* Check for errors and clear them */			status_reg_value = inl(tw_dev->registers.status_reg_addr);			if (TW_STATUS_ERRORS(status_reg_value))				tw_decode_bits(tw_dev, status_reg_value, 0);						/* Poll status register for 60 secs for 'Controller Ready' flag */			if (tw_poll_status(tw_dev, TW_STATUS_MICROCONTROLLER_READY, 60)) {				printk(KERN_WARNING "3w-xxxx: tw_findcards(): Microcontroller not ready for card %d.\n", j);				tw_free_device_extension(tw_dev);				kfree(tw_dev);				continue;			}			/* Disable interrupts on the card */			tw_disable_interrupts(tw_dev);			tries = 0;			while (tries < TW_MAX_RESET_TRIES) {				/* Do soft reset */				tw_soft_reset(tw_dev);			  				error = tw_aen_drain_queue(tw_dev);				if (error) {					printk(KERN_WARNING "3w-xxxx: AEN drain failed for card %d.\n", j);					tries++;					continue;				}				/* Check for controller errors */				if (tw_check_errors(tw_dev)) {					printk(KERN_WARNING "3w-xxxx: Controller errors found, retrying for card %d.\n", j);					tries++;					continue;				}				/* Now the controller is in a good state */				break;			}			if (tries >= TW_MAX_RESET_TRIES) {				printk(KERN_WARNING "3w-xxxx: Controller errors, card not responding, check all cabling for card %d.\n", j);				tw_free_device_extension(tw_dev);				kfree(tw_dev);				continue;			}			/* Reserve the io address space */			if (!request_region((tw_dev->tw_pci_dev->resource[0].start), TW_IO_ADDRESS_RANGE, TW_DEVICE_NAME)) {				printk(KERN_WARNING "3w-xxxx: tw_findcards(): Couldn't get io range 0x%lx-0x%lx for card %d.\n", 				       (tw_dev->tw_pci_dev->resource[0].start), 				       (tw_dev->tw_pci_dev->resource[0].start) + 				       TW_IO_ADDRESS_RANGE, j);				tw_free_device_extension(tw_dev);				kfree(tw_dev);				continue;			}			error = tw_initialize_units(tw_dev);			if (error) {				printk(KERN_WARNING "3w-xxxx: No valid units for for card %d.\n", j);			}			error = tw_initconnection(tw_dev, TW_INIT_MESSAGE_CREDITS);			if (error) {				printk(KERN_WARNING "3w-xxxx: Connection initialization failed for card %d.\n", j);				release_region((tw_dev->tw_pci_dev->resource[0].start), TW_IO_ADDRESS_RANGE);				tw_free_device_extension(tw_dev);				kfree(tw_dev);				continue;			}			/* Set card status as online */			tw_dev->online = 1;			tw_dev->free_head = TW_Q_START;			tw_dev->free_tail = TW_Q_START;			tw_dev->free_wrap = TW_Q_LENGTH - 1;			/* Register the card with the kernel SCSI layer */			host = scsi_register(tw_host, sizeof(TW_Device_Extension));			if (host == NULL) {				printk(KERN_WARNING "3w-xxxx: tw_findcards(): scsi_register() failed for card %d.\n", j);				release_region((tw_dev->tw_pci_dev->resource[0].start), TW_IO_ADDRESS_RANGE);				tw_free_device_extension(tw_dev);				kfree(tw_dev);				continue;			}			/* Set max target id's */			host->max_id = TW_MAX_UNITS;			/* Set max cdb size in bytes */			host->max_cmd_len = 16;			/* Set max sectors per io */#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,7)			host->max_sectors = TW_MAX_SECTORS;#endif#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)			scsi_set_device(host, &tw_pci_dev->dev);#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,4)			scsi_set_pci_device(host, tw_pci_dev);#endif			status_reg_value = inl(tw_dev->registers.status_reg_addr);			printk(KERN_NOTICE "scsi%d : Found a 3ware Storage Controller at 0x%x, IRQ: %d, P-chip: %d.%d\n", host->host_no,				(u32)(tw_pci_dev->resource[0].start), tw_pci_dev->irq, 				(status_reg_value & TW_STATUS_MAJOR_VERSION_MASK) >> 28, 				(status_reg_value & TW_STATUS_MINOR_VERSION_MASK) >> 24);			if (host->hostdata) {				tw_dev2 = (TW_Device_Extension *)host->hostdata;				memcpy(tw_dev2, tw_dev, sizeof(TW_Device_Extension));				/* Need to init the sem/wqueue after the copy */				init_MUTEX(&tw_dev2->ioctl_sem);				init_waitqueue_head(&tw_dev2->ioctl_wqueue);				tw_device_extension_list[tw_device_extension_count] = tw_dev2;				numcards++;				tw_device_extension_count = numcards;				tw_dev2->host = host;			} else { 				printk(KERN_WARNING "3w-xxxx: tw_findcards(): Bad scsi host data for card %d.\n", j);				scsi_unregister(host);				release_region((tw_dev->tw_pci_dev->resource[0].start), TW_IO_ADDRESS_RANGE);				tw_free_device_extension(tw_dev);				kfree(tw_dev);				continue;			}			/* Tell the firmware we support shutdown notification*/			error = tw_setfeature(tw_dev2, 2, 1, &c);			if (error) {				printk(KERN_WARNING "3w-xxxx: Unable to set features for card %d, old firmware or card.\n", j);			}			/* Now setup the interrupt handler */			error = tw_setup_irq(tw_dev2);			if (error) {				printk(KERN_WARNING "3w-xxxx: tw_findcards(): Error requesting irq for card %d.\n", j);				scsi_unregister(host);				release_region((tw_dev->tw_pci_dev->resource[0].start), TW_IO_ADDRESS_RANGE);				tw_free_device_extension(tw_dev);				kfree(tw_dev);				numcards--;				continue;			}			/* Re-enable interrupts on the card */			tw_enable_interrupts(tw_dev2);			/* Free the temporary device extension */			if (tw_dev)				kfree(tw_dev);		}	}	if (numcards == 0) {		printk(KERN_WARNING "3w-xxxx: No cards found.\n");	} else {		register_reboot_notifier(&tw_notifier);		if ((twe_major = register_chrdev (0, "twe", &tw_fops)) < 0) {			printk(KERN_WARNING "3w-xxxx: Unable to register \"twe\" character device, error = %d.\n", twe_major);		}	}	return numcards;} /* End tw_findcards() *//* This function will free up device extension resources */void tw_free_device_extension(TW_Device_Extension *tw_dev){	dprintk(KERN_NOTICE "3w-xxxx: tw_free_device_extension()\n");	/* Free command packet and generic buffer memory */	if (tw_dev->command_packet_virtual_address[0])		pci_free_consistent(tw_dev->tw_pci_dev, sizeof(TW_Command)*TW_Q_LENGTH, tw_dev->command_packet_virtual_address[0], tw_dev->command_packet_physical_address[0]);	if (tw_dev->alignment_virtual_address[0])		pci_free_consistent(tw_dev->tw_pci_dev, sizeof(TW_Sector)*TW_Q_LENGTH, tw_dev->alignment_virtual_address[0], tw_dev->alignment_physical_address[0]);} /* End tw_free_device_extension() *//* Clean shutdown routine */static int tw_halt(struct notifier_block *nb, ulong event, void *buf){	int i;	for (i=0;i<tw_device_extension_count;i++) {		if (tw_device_extension_list[i]->online == 1) {			printk(KERN_NOTICE "3w-xxxx: Shutting down card %d.\n", i);			tw_shutdown_device(tw_device_extension_list[i]);			tw_device_extension_list[i]->online = 0;		}	}	unregister_reboot_notifier(&tw_notifier);	return NOTIFY_OK;} /* End tw_halt() *//* This function will send an initconnection command to controller */int tw_initconnection(TW_Device_Extension *tw_dev, int message_credits) {	unsigned long command_que_value;	u32 command_que_addr;	u32 response_que_addr;	TW_Command  *command_packet;	TW_Response_Queue response_queue;	int request_id = 0;	dprintk(KERN_NOTICE "3w-xxxx: tw_initconnection()\n");	command_que_addr = tw_dev->registers.command_que_addr;	response_que_addr = tw_dev->registers.response_que_addr;	/* Initialize InitConnection command packet */	if (tw_dev->command_packet_virtual_address[request_id] == NULL) {		printk(KERN_WARNING "3w-xxxx: tw_initconnection(): Bad command packet virtual address.\n");		return 1;	}	command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];	memset(command_packet, 0, sizeof(TW_Sector));	command_packet->byte0.opcode = TW_OP_INIT_CONNECTION;	command_packet->byte0.sgl_offset = 0x0;	command_packet->size = TW_INIT_COMMAND_PACKET_SIZE;	command_packet->request_id = request_id;	command_packet->byte3.unit = 0x0;	command_packet->byte3.host_id = 0x0;	command_packet->status = 0x0;	command_packet->flags = 0x0;	command_packet->byte6.message_credits = message_credits; 	command_packet->byte8.init_connection.response_queue_pointer = 0x0;	command_que_value = tw_dev->command_packet_physical_address[request_id];	if (command_que_value == 0) {		printk(KERN_WARNING "3w-xxxx: tw_initconnection(): Bad command packet physical address.\n");		return 1;	}  	/* Send command packet to the board */	outl(command_que_value, command_que_addr);    	/* Poll for completion */	if (tw_poll_status_gone(tw_dev, TW_STATUS_RESPONSE_QUEUE_EMPTY, 30) == 0) {		response_queue.value = inl(response_que_addr);		request_id = (unsigned char)response_queue.u.response_id;		if (request_id != 0) {			/* unexpected request id */			printk(KERN_WARNING "3w-xxxx: tw_initconnection(): Unexpected request id.\n");			return 1;		}		if (command_packet->status != 0) {			/* bad response */			tw_decode_sense(tw_dev, request_id, 0);			return 1;		}	}	return 0;} /* End tw_initconnection() *//* This function will initialize the fields of a device extension */int tw_initialize_device_extension(TW_Device_Extension *tw_dev){	int i, error=0;	dprintk(KERN_NOTICE "3w-xxxx: tw_initialize_device_extension()\n");	/* Initialize command packet buffers */	error = tw_allocate_memory(tw_dev, sizeof(TW_Command), 0);	if (error) {		printk(KERN_WARNING "3w-xxxx: Command packet memory allocation failed.\n");		return 1;	}	/* Initialize generic buffer */	error = tw_allocate_memory(tw_dev, sizeof(TW_Sector), 1);	if (error) {		printk(KERN_WARNING "3w-xxxx: Generic memory allocation failed.\n");		return 1;	}	for (i=0;i<TW_Q_LENGTH;i++) {		tw_dev->free_queue[i] = i;		tw_dev->state[i] = TW_S_INITIAL;	}	tw_dev->pending_head = TW_Q_START;	tw_dev->pending_tail = TW_Q_START;	spin_lock_init(&tw_dev->tw_lock);	tw_dev->chrdev_request_id = TW_IOCTL_CHRDEV_FREE;	return 0;} /* End tw_initialize_device_extension() *//* This function will get unit info from the controller */int tw_initialize_units(TW_Device_Extension *tw_dev) {	int found = 0;	unsigned char request_id = 0;	TW_Command *command_packet;	TW_Param *param;	int i, imax, num_units = 0;	unsigned long command_que_value;	u32 command_que_addr;	u32 response_que_addr;	TW_Response_Queue response_queue;	unsigned long param_value;	unsigned char *is_unit_present;	dprintk(KERN_NOTICE "3w-xxxx: tw_initialize_units()\n");	command_que_addr = tw_dev->registers.command_que_addr;	response_que_addr = tw_dev->registers.response_que_addr;  	/* Setup the command packet */	command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];	if (command_packet == NULL) {		printk(KERN_WARNING "3w-xxxx: tw_initialize_units(): Bad command packet virtual address.\n");		return 1;	}	memset(command_packet, 0, sizeof(TW_Sector));	command_packet->byte0.opcode      = TW_OP_GET_PARAM;	command_packet->byte0.sgl_offset  = 2;	command_packet->size              = 4;	command_packet->request_id        = request_id;	command_packet->byte3.unit        = 0;	command_packet->byte3.host_id     = 0;	command_packet->status            = 0;	command_packet->flags             = 0;	command_packet->byte6.block_count = 1;	/* Now setup the param */	if (tw_dev->alignment_virtual_address[request_id] == NULL) {		printk(KERN_WARNING "3w-xxxx: tw_initialize_units(): Bad alignment virtual address.\n");		return 1;	}	param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];	memset(param, 0, sizeof(TW_Sector));	param->table_id = 3;       /* unit summary table */	param->parameter_id = 3;   /* unitstatus parameter */	param->parameter_size_bytes = TW_MAX_UNITS;	param_value = tw_dev->alignment_physical_address[request_id];	if (param_value == 0) {		printk(KERN_WARNING "3w-xxxx: tw_initialize_units(): Bad alignment physical address.\n");		return 1;	}	command_packet->byte8.param.sgl[0].address = param_value;	command_packet->byte8.param.sgl[0].length = sizeof(TW_Sector);	/* Post the command packet to the board */	command_que_value = tw_dev->command_packet_physical_address[request_id];	if (command_que_value == 0) {		printk(KERN_WARNING "3w-xxxx: tw_initialize_units(): Bad command packet physical address.\n");		return 1;	}	outl(command_que_value, command_que_addr);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲高清免费观看| 91色在线porny| 成人美女在线视频| 欧美日韩国产片| 一区在线观看免费| 久久99精品视频| 欧美私人免费视频| 中文字幕亚洲电影| 国产一区二区三区香蕉| 在线不卡欧美精品一区二区三区| 国产精品久久久久aaaa| 精品一区二区在线视频| 7777精品伊人久久久大香线蕉完整版| 中文字幕一区二区三区不卡在线| 久久国产精品99久久人人澡| 在线成人高清不卡| 亚洲成人三级小说| 在线一区二区三区四区五区| 国产精品久久福利| 高清不卡一区二区| 精品少妇一区二区三区在线播放| 日韩精品每日更新| 欧美人与性动xxxx| 亚洲第一狼人社区| 欧美四级电影在线观看| 亚洲一区二区三区四区中文字幕| 色综合色狠狠天天综合色| 国产精品久久久久久亚洲伦 | 国模冰冰炮一区二区| 欧美色视频一区| 五月婷婷久久丁香| 欧美一区二区三区电影| 午夜精品一区二区三区免费视频| 91九色02白丝porn| 亚洲丶国产丶欧美一区二区三区| 欧美色图天堂网| 五月激情丁香一区二区三区| 欧美一区二区三区色| 日本v片在线高清不卡在线观看| 51久久夜色精品国产麻豆| 免费高清在线一区| 日韩午夜小视频| 国产乱码字幕精品高清av | 日本亚洲免费观看| 欧美一卡2卡3卡4卡| 日产国产高清一区二区三区| 欧美一个色资源| 国产一区二区三区四区五区美女| 国产亚洲精品超碰| av亚洲精华国产精华| 伊人色综合久久天天| 欧美精品乱码久久久久久| 天堂影院一区二区| 久久久久久日产精品| www.欧美色图| 亚洲国产精品久久人人爱| 日韩一级免费一区| 不卡的av网站| 亚洲电影欧美电影有声小说| 亚洲精品在线观看网站| 成人久久视频在线观看| 亚洲亚洲人成综合网络| 欧美一区二区三区四区久久| 成人免费毛片片v| 午夜影视日本亚洲欧洲精品| 精品三级av在线| 91猫先生在线| 日本不卡中文字幕| 国产精品女人毛片| 欧美一区二区啪啪| 99久久精品免费看国产| 美国毛片一区二区三区| 亚洲欧美日韩中文播放| 精品国产伦一区二区三区免费 | 日韩理论在线观看| 日韩三级伦理片妻子的秘密按摩| 大胆欧美人体老妇| 日本视频在线一区| 亚洲人成在线观看一区二区| 精品国偷自产国产一区| 色婷婷av一区二区三区gif| 韩国成人精品a∨在线观看| 一区二区在线观看av| 久久综合久久99| 欧美日韩高清影院| 色综合色狠狠综合色| 国产91在线观看丝袜| 蜜桃视频在线一区| 五月天国产精品| 亚洲天堂精品在线观看| 久久久777精品电影网影网| 91麻豆精品国产综合久久久久久| 91免费国产在线观看| 国产福利一区二区三区视频| 免费国产亚洲视频| 婷婷久久综合九色国产成人| 亚洲精品日日夜夜| 自拍偷拍国产精品| 亚洲国产精品v| 久久亚洲综合色一区二区三区| 欧美人动与zoxxxx乱| 在线免费观看日韩欧美| 一本色道久久综合亚洲91| 懂色一区二区三区免费观看| 韩国一区二区三区| 国产精品一区二区三区乱码| 久久精品99久久久| 精品一区二区三区免费毛片爱| 日本欧美在线看| 日韩精品一二区| 麻豆成人在线观看| 蜜桃av一区二区在线观看| 日韩av中文在线观看| 日本午夜精品视频在线观看 | 欧美亚洲免费在线一区| 色老综合老女人久久久| 色综合久久久久综合99| 色综合一个色综合| 色噜噜狠狠色综合中国| 欧美这里有精品| 欧美日韩国产天堂| 欧美高清视频在线高清观看mv色露露十八| 在线观看91视频| 欧美色中文字幕| 日韩一区二区三区免费看| 日韩亚洲欧美成人一区| 日韩精品一区二区三区蜜臀 | 久久国产精品一区二区| 国内一区二区在线| 国产精品一级在线| 色偷偷成人一区二区三区91| 91黄色在线观看| 正在播放亚洲一区| 国产视频一区二区在线观看| 国产精品久久精品日日| 亚洲一区二区五区| 美女在线观看视频一区二区| 国产剧情av麻豆香蕉精品| 91无套直看片红桃| 欧美日韩日日摸| 久久久久久影视| 国产精品白丝在线| 石原莉奈在线亚洲三区| 国产精品主播直播| 在线欧美一区二区| 日韩精品综合一本久道在线视频| 国产欧美1区2区3区| 一区二区高清视频在线观看| 日韩高清一级片| 波多野结衣中文字幕一区 | 久久嫩草精品久久久精品| 亚洲人妖av一区二区| 午夜精品福利一区二区蜜股av | 亚洲va中文字幕| 麻豆国产精品777777在线| 丰满少妇在线播放bd日韩电影| 欧美在线色视频| 久久久久高清精品| 天堂在线亚洲视频| 99久久亚洲一区二区三区青草| 91精品国产福利| 亚洲精品成人精品456| 精品一区二区在线免费观看| 欧洲一区二区三区免费视频| 久久综合九色综合欧美就去吻| 亚洲乱码国产乱码精品精可以看| 国产在线精品免费| 欧美情侣在线播放| 亚洲美女视频一区| 成人一区二区三区中文字幕| 日韩欧美一级二级三级久久久| 亚洲日本中文字幕区| 国产高清不卡一区| 欧美xxxxx牲另类人与| 性久久久久久久久| 色先锋aa成人| 亚洲色图制服丝袜| 丰满岳乱妇一区二区三区| 精品美女在线播放| 青娱乐精品视频在线| 在线看日韩精品电影| 亚洲乱码中文字幕| av电影在线观看一区| 欧美激情一区二区三区不卡 | 9i在线看片成人免费| 欧美激情在线一区二区三区| 久久国产视频网| 日韩亚洲欧美中文三级| 日日摸夜夜添夜夜添精品视频| 欧美色图天堂网| 亚洲电影在线播放| 欧美在线小视频| 亚洲国产精品一区二区久久 | 成人黄色av网站在线| 久久久久久久综合日本| 久久99国产精品尤物| 欧美不卡视频一区| 精品一区二区三区免费播放| 欧美哺乳videos| 国产成人鲁色资源国产91色综 |