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

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

?? linit.c

?? 該文件是rt_linux
?? C
?? 第 1 頁 / 共 2 頁
字號:
 *	aac_driverinfo		-	Returns the host adapter name *	@host_ptr:	Scsi host to report on * *	Returns a static string describing the device in question */const char *aac_driverinfo(struct Scsi_Host *host_ptr){	struct aac_dev *dev = (struct aac_dev *)host_ptr->hostdata;	return aac_drivers[dev->cardtype].name;}/** *	aac_get_driver_ident * 	@devtype: index into lookup table * * 	Returns a pointer to the entry in the driver lookup table. */struct aac_driver_ident* aac_get_driver_ident(int devtype){	return  &aac_drivers[devtype];}/** *	aac_biosparm	-	return BIOS parameters for disk *	@disk: SCSI disk object to process *	@device: kdev_t of the disk in question *	@geom: geometry block to fill in * *	Return the Heads/Sectors/Cylinders BIOS Disk Parameters for Disk.   *	The default disk geometry is 64 heads, 32 sectors, and the appropriate  *	number of cylinders so as not to exceed drive capacity.  In order for  *	disks equal to or larger than 1 GB to be addressable by the BIOS *	without exceeding the BIOS limitation of 1024 cylinders, Extended  *	Translation should be enabled.   With Extended Translation enabled,  *	drives between 1 GB inclusive and 2 GB exclusive are given a disk  *	geometry of 128 heads and 32 sectors, and drives above 2 GB inclusive  *	are given a disk geometry of 255 heads and 63 sectors.  However, if  *	the BIOS detects that the Extended Translation setting does not match  *	the geometry in the partition table, then the translation inferred  *	from the partition table will be used by the BIOS, and a warning may  *	be displayed. */ static int aac_biosparm(Scsi_Disk *disk, kdev_t dev, int *geom){	struct diskparm *param = (struct diskparm *)geom;	struct buffer_head * buf;	dprintk((KERN_DEBUG "aac_biosparm.\n"));	/*	 *	Assuming extended translation is enabled - #REVISIT#	 */	if( disk->capacity >= 2 * 1024 * 1024 ) /* 1 GB in 512 byte sectors */	{		if( disk->capacity >= 4 * 1024 * 1024 ) /* 2 GB in 512 byte sectors */		{			param->heads = 255;			param->sectors = 63;		}		else		{			param->heads = 128;			param->sectors = 32;		}	}	else	{		param->heads = 64;		param->sectors = 32;	}	param->cylinders = disk->capacity/(param->heads * param->sectors);	/*	 *	Read the first 1024 bytes from the disk device	 */	buf = bread(MKDEV(MAJOR(dev), MINOR(dev)&~0xf), 0, block_size(dev));	if(buf == NULL)		return 0;	/* 	 *	If the boot sector partition table is valid, search for a partition 	 *	table entry whose end_head matches one of the standard geometry 	 *	translations ( 64/32, 128/32, 255/63 ).	 */	 	if(*(unsigned short *)(buf->b_data + 0x1fe) == cpu_to_le16(0xaa55))	{		struct partition *first = (struct partition * )(buf->b_data + 0x1be);		struct partition *entry = first;		int saved_cylinders = param->cylinders;		int num;		unsigned char end_head, end_sec;		for(num = 0; num < 4; num++)		{			end_head = entry->end_head;			end_sec = entry->end_sector & 0x3f;			if(end_head == 63)			{				param->heads = 64;				param->sectors = 32;				break;			}			else if(end_head == 127)			{				param->heads = 128;				param->sectors = 32;				break;			}			else if(end_head == 254) 			{				param->heads = 255;				param->sectors = 63;				break;			}			entry++;		}		if(num == 4)		{			end_head = first->end_head;			end_sec = first->end_sector & 0x3f;		}		param->cylinders = disk->capacity / (param->heads * param->sectors);		if(num < 4 && end_sec == param->sectors)		{			if(param->cylinders != saved_cylinders)				dprintk((KERN_DEBUG "Adopting geometry: heads=%d, sectors=%d from partition table %d.\n",					param->heads, param->sectors, num));		}		else if(end_head > 0 || end_sec > 0)		{			dprintk((KERN_DEBUG "Strange geometry: heads=%d, sectors=%d in partition table %d.\n",				end_head + 1, end_sec, num));			dprintk((KERN_DEBUG "Using geometry: heads=%d, sectors=%d.\n",					param->heads, param->sectors));		}	}	brelse(buf);	return 0;}/** *	aac_queuedepth		-	compute queue depths *	@host:	SCSI host in question *	@dev:	SCSI device we are considering * *	Selects queue depths for each target device based on the host adapter's *	total capacity and the queue depth supported by the target device. *	A queue depth of one automatically disables tagged queueing. */static void aac_queuedepth(struct Scsi_Host * host, Scsi_Device * dev ){	Scsi_Device * dptr;	dprintk((KERN_DEBUG "aac_queuedepth.\n"));	dprintk((KERN_DEBUG "Device #   Q Depth   Online\n"));	dprintk((KERN_DEBUG "---------------------------\n"));	for(dptr = dev; dptr != NULL; dptr = dptr->next)	{		if(dptr->host == host)		{			dptr->queue_depth = 10;					dprintk((KERN_DEBUG "  %2d         %d        %d\n", 				dptr->id, dptr->queue_depth, dptr->online));		}	}}/** *	aac_eh_abort	-	Abort command if possible. *	@cmd:	SCSI command block to abort * *	Called when the midlayer wishes to abort a command. We don't support *	this facility, and our firmware looks after life for us. We just *	report this as failing */ static int aac_eh_abort(Scsi_Cmnd *cmd){	return FAILED;}/** *	aac_eh_device_reset	-	Reset command handling *	@cmd:	SCSI command block causing the reset * *	Issue a reset of a SCSI device. We are ourselves not truely a SCSI *	controller and our firmware will do the work for us anyway. Thus this *	is a no-op. We just return FAILED. */static int aac_eh_device_reset(Scsi_Cmnd *cmd){	return FAILED;}/** *	aac_eh_bus_reset	-	Reset command handling *	@scsi_cmd:	SCSI command block causing the reset * *	Issue a reset of a SCSI bus. We are ourselves not truely a SCSI *	controller and our firmware will do the work for us anyway. Thus this *	is a no-op. We just return FAILED. */static int aac_eh_bus_reset(Scsi_Cmnd* cmd){	return FAILED;}/** *	aac_eh_hba_reset	-	Reset command handling *	@scsi_cmd:	SCSI command block causing the reset * *	Issue a reset of a SCSI host. If things get this bad then arguably we should *	go take a look at what the host adapter is doing and see if something really *	broke (as can occur at least on my Dell QC card if a drive keeps failing spinup) */static int aac_eh_reset(Scsi_Cmnd* cmd){	printk(KERN_ERR "aacraid: Host adapter reset request. SCSI hang ?\n");	return FAILED;}/** *	aac_ioctl 	-	Handle SCSI ioctls *	@scsi_dev_ptr: scsi device to operate upon *	@cmd: ioctl command to use issue *	@arg: ioctl data pointer * *	Issue an ioctl on an aacraid device. Returns a standard unix error code or *	zero for success */ static int aac_ioctl(Scsi_Device * scsi_dev_ptr, int cmd, void * arg){	struct aac_dev *dev;	dprintk((KERN_DEBUG "aac_ioctl.\n"));	dev = (struct aac_dev *)scsi_dev_ptr->host->hostdata;	return aac_do_ioctl(dev, cmd, arg);}/** *	aac_cfg_open		-	open a configuration file *	@inode: inode being opened *	@file: file handle attached * *	Called when the configuration device is opened. Does the needed *	set up on the handle and then returns * *	Bugs: This needs extending to check a given adapter is present *	so we can support hot plugging, and to ref count adapters. */static int aac_cfg_open(struct inode * inode, struct file * file ){	unsigned minor_number = MINOR(inode->i_rdev);	if(minor_number >= aac_count)		return -ENODEV;	return 0;}/** *	aac_cfg_release		-	close down an AAC config device *	@inode: inode of configuration file *	@file: file handle of configuration file *	 *	Called when the last close of the configuration file handle *	is performed. */ static int aac_cfg_release(struct inode * inode, struct file * file ){	return 0;}/** *	aac_cfg_ioctl		-	AAC configuration request *	@inode: inode of device *	@file: file handle *	@cmd: ioctl command code *	@arg: argument * *	Handles a configuration ioctl. Currently this involves wrapping it *	up and feeding it into the nasty windowsalike glue layer. * *	Bugs: Needs locking against parallel ioctls lower down *	Bugs: Needs to handle hot plugging */ static int aac_cfg_ioctl(struct inode * inode,  struct file * file, unsigned int cmd, unsigned long arg ){	struct aac_dev *dev = aac_devices[MINOR(inode->i_rdev)];	return aac_do_ioctl(dev, cmd, (void *)arg);}/* *	To use the low level SCSI driver support using the linux kernel loadable  *	module interface we should initialize the global variable driver_interface   *	(datatype Scsi_Host_Template) and then include the file scsi_module.c. */ static Scsi_Host_Template driver_template = {	module:			THIS_MODULE,	name:           	"AAC",	proc_info:      	aac_procinfo,	detect:         	aac_detect,	release:        	aac_release,	info:           	aac_driverinfo,	ioctl:          	aac_ioctl,	queuecommand:   	aac_queuecommand,	bios_param:     	aac_biosparm,		can_queue:      	AAC_NUM_IO_FIB,		this_id:        	16,	sg_tablesize:   	16,	max_sectors:    	128,	cmd_per_lun:    	AAC_NUM_IO_FIB,	eh_abort_handler:       aac_eh_abort,	eh_device_reset_handler:aac_eh_device_reset,	eh_bus_reset_handler:	aac_eh_bus_reset,	eh_host_reset_handler:	aac_eh_reset,	use_new_eh_code:	1, 	use_clustering:		ENABLE_CLUSTERING,};#include "scsi_module.c"/** *	aac_procinfo	-	Implement /proc/scsi/<drivername>/<n> *	@proc_buffer: memory buffer for I/O *	@start_ptr: pointer to first valid data *	@offset: offset into file *	@bytes_available: space left *	@host_no: scsi host ident *	@write: direction of I/O * *	Used to export driver statistics and other infos to the world outside  *	the kernel using the proc file system. Also provides an interface to *	feed the driver with information. * *		For reads *			- if offset > 0 return 0 *			- if offset == 0 write data to proc_buffer and set the start_ptr to *			beginning of proc_buffer, return the number of characters written. *		For writes *			- writes currently not supported, return 0 * *	Bugs:	Only offset zero is handled */static int aac_procinfo(char *proc_buffer, char **start_ptr,off_t offset,			int bytes_available, int host_no, int write){	if(write || offset > 0)		return 0;	*start_ptr = proc_buffer;	return sprintf(proc_buffer, "%s  %d\n", "Raid Controller, scsi hba number", host_no);}EXPORT_NO_SYMBOLS;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天av天天翘天天综合网| 国产高清一区日本| 国产精品国产自产拍高清av王其 | 久久69国产一区二区蜜臀| 国产精品不卡一区二区三区| 日韩精品一区二区三区中文精品| 91视频在线观看| 国产精品1024| 久久国产精品色| 亚洲成av人片一区二区三区| 亚洲欧洲日本在线| 久久久噜噜噜久久中文字幕色伊伊 | 国产精品资源站在线| 日韩激情在线观看| 亚洲一区成人在线| 亚洲欧美日韩系列| 亚洲欧洲av色图| 日本一区二区电影| 国产亚洲短视频| 久久日韩精品一区二区五区| 日韩欧美一区二区免费| 欧美日本视频在线| 欧美日韩国产综合草草| 欧美在线free| 色欧美片视频在线观看在线视频| av在线一区二区三区| 国产成人精品免费视频网站| 国产在线观看免费一区| 久久99精品一区二区三区 | 91黄色免费版| 色欧美片视频在线观看在线视频| 成人app网站| 成人av在线资源| 不卡一区中文字幕| 99久久免费国产| 一本大道综合伊人精品热热| 色综合天天综合在线视频| 97se亚洲国产综合自在线观| 99精品国产99久久久久久白柏| 波多野结衣一区二区三区| 成人app软件下载大全免费| 99免费精品视频| 91在线观看美女| 欧美在线一二三| 欧美日韩国产小视频| 欧美一区二区三区免费观看视频| 91精品国产色综合久久久蜜香臀| 欧美一区二区三区在| 精品国产乱码久久久久久牛牛| 精品国产一区二区三区不卡| 国产婷婷色一区二区三区四区| 国产精品日韩成人| 亚洲女同一区二区| 石原莉奈在线亚洲二区| 久久99精品一区二区三区| 国产福利一区在线| 日本黄色一区二区| 欧美一区二区三区在线视频| 久久久久久亚洲综合影院红桃| 国产精品黄色在线观看| 亚洲成人av免费| 韩国毛片一区二区三区| eeuss鲁片一区二区三区在线观看| 91久久线看在观草草青青| 欧美日韩精品一区二区| 精品电影一区二区| 最新国产精品久久精品| 亚洲电影一级黄| 国内久久婷婷综合| 色婷婷亚洲婷婷| 欧美一区二区播放| 中文字幕亚洲欧美在线不卡| 亚洲成人av电影在线| 国产成人午夜精品5599| 欧美中文字幕一区二区三区| 欧美精品一区二区三区一线天视频| 国产精品久久久久9999吃药| 五月天亚洲精品| 国产白丝精品91爽爽久久 | 欧美精品久久久久久久久老牛影院| 激情欧美一区二区| 亚洲人成7777| 丝袜美腿成人在线| 成人美女视频在线观看| 精品视频一区二区三区免费| 久久综合九色综合97婷婷女人 | 一区二区三区不卡视频| 麻豆成人久久精品二区三区红 | 国产欧美日韩在线| 成人午夜视频免费看| 在线播放日韩导航| 亚洲色图.com| 国产一区二三区好的| 欧美性猛片aaaaaaa做受| 国产欧美一区二区三区在线看蜜臀 | 不卡视频在线观看| 欧美www视频| 亚洲尤物在线视频观看| 国产乱理伦片在线观看夜一区| 欧美色老头old∨ideo| 国产精品久久久久影院老司| 久久国产尿小便嘘嘘尿| 欧美日韩国产精品自在自线| 中文字幕一区二区三区在线播放 | 日韩电影在线观看电影| 日本久久电影网| 国产精品久久国产精麻豆99网站| 激情综合色播激情啊| 91麻豆精品国产无毒不卡在线观看| 亚洲精品伦理在线| 激情久久久久久久久久久久久久久久| 色综合亚洲欧洲| 国产精品私房写真福利视频| 精品一区二区免费| 91超碰这里只有精品国产| 亚洲国产一区二区三区青草影视| 成人精品一区二区三区中文字幕| 久久亚洲精华国产精华液| 理论片日本一区| 在线播放一区二区三区| 性久久久久久久久久久久| 欧美性高清videossexo| 亚洲精品免费电影| 在线观看不卡一区| 亚洲韩国一区二区三区| 欧美色网一区二区| 亚洲电影一级黄| 欧美肥大bbwbbw高潮| 五月天一区二区三区| 亚洲乱码中文字幕综合| 成人午夜电影久久影院| 欧美国产成人在线| 国产一区视频在线看| 国产午夜精品一区二区三区嫩草| 国产精品资源在线观看| 丝袜国产日韩另类美女| 高清不卡一区二区在线| 国产色91在线| 国产iv一区二区三区| 国产欧美精品一区二区三区四区 | 成人美女在线观看| 中文字幕日韩一区| 99re66热这里只有精品3直播| 亚洲色图欧洲色图婷婷| 在线视频一区二区三区| 视频一区视频二区中文| 精品久久人人做人人爽| 国产成人精品三级| 日韩理论电影院| 色婷婷国产精品综合在线观看| 一区二区三区成人在线视频| 欧美日韩在线播放| 精品一区二区三区在线播放| 久久久久久久综合狠狠综合| 国产精品自拍在线| 亚洲精品亚洲人成人网| 欧美人妇做爰xxxⅹ性高电影 | 乱一区二区av| 色综合婷婷久久| 一级做a爱片久久| 欧美日韩亚州综合| 人人爽香蕉精品| 久久久久久久久99精品| 97精品国产露脸对白| 婷婷中文字幕一区三区| www国产亚洲精品久久麻豆| 成人国产精品免费观看视频| 亚洲一区二区三区四区五区中文 | 免费美女久久99| 国产亚洲精品7777| 欧美羞羞免费网站| 激情综合色丁香一区二区| 中文字幕一区二区三区在线播放| 欧美老年两性高潮| 成人免费黄色大片| 日韩成人一区二区三区在线观看| 欧美精品一区视频| 在线免费观看一区| 国产精品99久久久| 一卡二卡三卡日韩欧美| 2023国产精品| 欧美调教femdomvk| 国产福利不卡视频| 亚洲精品国产一区二区精华液 | 午夜视频久久久久久| 久久久综合九色合综国产精品| 欧美综合欧美视频| 成人一级黄色片| 麻豆精品一区二区三区| 亚洲综合免费观看高清在线观看| 久久综合av免费| 欧美丰满嫩嫩电影| 99精品国产一区二区三区不卡| 精品一区二区三区久久| 亚洲va欧美va天堂v国产综合| 一区在线中文字幕| 欧美大胆人体bbbb| 欧美男女性生活在线直播观看| 成人教育av在线| 国产精品一区免费视频|