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

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

?? linit.c

?? 一個2.4.21版本的嵌入式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一区二区三区免费野_久草精品视频
精品国产免费久久| 91国在线观看| 蜜桃av噜噜一区| 亚洲成人福利片| 亚洲成人免费观看| 亚洲一区二区偷拍精品| 亚洲欧美日韩国产综合在线| 亚洲日本一区二区三区| 一区二区在线免费观看| 亚洲永久免费视频| 图片区日韩欧美亚洲| 琪琪一区二区三区| 另类欧美日韩国产在线| 麻豆91在线观看| 极品尤物av久久免费看| 久久激情五月激情| 国产一区二区三区蝌蚪| 成人丝袜高跟foot| 91免费版在线| 717成人午夜免费福利电影| 日韩三级中文字幕| 久久久久久久性| 国产精品国产馆在线真实露脸| 综合激情成人伊人| 亚洲已满18点击进入久久| 日韩1区2区日韩1区2区| 国产99久久久久| 欧美亚洲日本一区| 久久久久久久综合| 亚洲成人av一区二区三区| 奇米亚洲午夜久久精品| 成+人+亚洲+综合天堂| 欧美久久一二区| 欧美国产禁国产网站cc| 伊人性伊人情综合网| 激情综合色播激情啊| 91小视频在线观看| 欧美电影免费观看高清完整版| 国产亚洲短视频| 亚洲欧美激情小说另类| 欧美日韩一级大片网址| 91香蕉视频污| 久久99国产精品久久99果冻传媒| 国内成+人亚洲+欧美+综合在线| 精品一区精品二区高清| 国产白丝网站精品污在线入口| 国产麻豆91精品| 成人看片黄a免费看在线| 亚洲一区在线视频观看| 爽好久久久欧美精品| 久草在线在线精品观看| 韩国av一区二区三区四区 | 亚洲精品高清在线| 中文一区二区在线观看| 成人久久18免费网站麻豆| 国产丝袜美腿一区二区三区| 色哟哟在线观看一区二区三区| 琪琪一区二区三区| 亚洲国产日韩av| 亚洲一区二区三区视频在线播放| 久久久精品免费免费| 中文字幕欧美国产| 国产精品视频第一区| 久久久99久久| 中文字幕在线不卡视频| 中文字幕日韩一区| 亚洲 欧美综合在线网络| 天堂一区二区在线| 美国毛片一区二区三区| 三级欧美韩日大片在线看| 日本伊人午夜精品| 久久国产尿小便嘘嘘尿| 国产精品一品二品| 成人永久aaa| 在线观看免费成人| 日韩网站在线看片你懂的| 欧美一级片在线看| 欧美—级在线免费片| 亚洲五月六月丁香激情| 国产精品一级黄| 91精品国产综合久久精品麻豆| 久久久久99精品一区| 亚洲欧美日韩国产手机在线 | 天天做天天摸天天爽国产一区| 日韩精品电影在线观看| av一区二区三区四区| 91精品国产综合久久久久久漫画| 日本一区二区三区四区| 夜夜夜精品看看| 国产91精品在线观看| 欧美日韩日日夜夜| 国产精品区一区二区三| 免费成人在线观看| 欧美在线视频日韩| 日韩毛片精品高清免费| 国产成人免费xxxxxxxx| 久久亚洲影视婷婷| 国产中文字幕一区| 51精品久久久久久久蜜臀| 一区二区三区国产| 成人av动漫网站| 日本一区免费视频| 国产成人精品三级| 26uuu色噜噜精品一区二区| 蜜乳av一区二区| 日韩精品一区二区三区视频| 日本va欧美va精品发布| 日韩一卡二卡三卡| 精品一二三四在线| 久久精品人人做人人综合 | 麻豆视频一区二区| 欧美丰满少妇xxxxx高潮对白| 午夜精品在线看| 制服丝袜亚洲播放| 国产成人在线影院| 国产精品免费丝袜| 欧洲一区二区av| 高清国产一区二区| 一级日本不卡的影视| 欧美一级理论片| 成人在线视频一区| 中文字幕在线视频一区| 欧美日韩一区中文字幕| 精品伊人久久久久7777人| 亚洲人亚洲人成电影网站色| 欧洲一区二区三区免费视频| 国模套图日韩精品一区二区 | 99久久免费精品| 秋霞av亚洲一区二区三| 久久久蜜桃精品| 7777精品伊人久久久大香线蕉经典版下载| 麻豆国产欧美日韩综合精品二区 | 日本伊人色综合网| 久久精品在线免费观看| 色8久久人人97超碰香蕉987| www.欧美日韩国产在线| 亚洲一区二区四区蜜桃| 久久伊人中文字幕| 日韩一区二区电影| 91久久香蕉国产日韩欧美9色| 国产乱子伦一区二区三区国色天香| 一区二区三区高清在线| 亚洲欧洲一区二区在线播放| 日韩美女在线视频| 欧美日韩激情一区| 色播五月激情综合网| 成人av在线影院| 久久成人免费网站| 麻豆精品视频在线观看免费| 国产乱码精品一区二区三| 免费人成黄页网站在线一区二区 | 国产亚洲欧美色| 国产精品色一区二区三区| 精品久久久久久无| 久久精品一区二区三区四区| 欧美白人最猛性xxxxx69交| 日韩免费性生活视频播放| 精品少妇一区二区三区| 久久久久97国产精华液好用吗| 久久久影院官网| 亚洲乱码国产乱码精品精98午夜 | 色8久久人人97超碰香蕉987| 91色视频在线| 99视频在线观看一区三区| 91最新地址在线播放| 欧美日韩在线播| 精品国产乱码久久久久久图片| 欧美岛国在线观看| 亚洲激情一二三区| 激情文学综合网| 久久久久久一二三区| 国产精品美女www爽爽爽| 一区二区三区 在线观看视频| 亚洲午夜精品17c| 国产精品 日产精品 欧美精品| zzijzzij亚洲日本少妇熟睡| 日韩欧美在线一区二区三区| 国产欧美精品一区二区三区四区| 午夜在线成人av| 在线观看中文字幕不卡| 91精品国产高清一区二区三区蜜臀| 欧美人与禽zozo性伦| 国产精品美女久久久久久久久| 亚洲美女视频在线| 精品一区二区久久久| 欧美性三三影院| 国产欧美一区二区精品婷婷 | 一片黄亚洲嫩模| 91香蕉视频mp4| 中文一区在线播放| 另类小说图片综合网| 欧美三级视频在线播放| 一区二区三区中文字幕精品精品| 国产在线精品一区二区| 日韩精品专区在线影院重磅| 日本sm残虐另类| 精品国产91亚洲一区二区三区婷婷 | 欧美色偷偷大香| 亚洲综合另类小说| 97久久精品人人澡人人爽|