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

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

?? linit.c

?? 這個linux源代碼是很全面的~基本完整了~使用c編譯的~由于時間問題我沒有親自測試~但就算用來做參考資料也是非常好的
?? 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一区二区三区免费野_久草精品视频
成人免费视频视频| 亚洲午夜三级在线| 国产激情精品久久久第一区二区 | 99精品在线免费| 国产精品国产自产拍高清av| 91视视频在线观看入口直接观看www | 亚洲国产精品高清| 成人av网址在线| 一区二区三区四区蜜桃| 91精品国产综合久久久蜜臀图片| 人人狠狠综合久久亚洲| 国产亚洲一区二区在线观看| 成人avav在线| 舔着乳尖日韩一区| 国产日韩精品一区| 欧美色男人天堂| 狠狠色丁香九九婷婷综合五月| 国产精品国产三级国产普通话三级 | 国产精品乡下勾搭老头1| 国产精品久久久久久久久免费桃花 | 欧美日本国产视频| 国产一区二区美女诱惑| 亚洲免费在线播放| 精品精品国产高清一毛片一天堂| 波多野结衣亚洲一区| 亚洲18色成人| 中文字幕+乱码+中文字幕一区| 91黄色免费网站| 激情五月婷婷综合网| 一区二区三区在线视频观看58| 欧美一区二区免费视频| av在线不卡免费看| 久久精品久久99精品久久| 国产精品国产精品国产专区不片| 91精品国产综合久久蜜臀| 成人av在线资源网站| 久久精品理论片| 亚洲免费三区一区二区| 久久久久国产精品厨房| 欧美日韩精品一区二区| 国产精品一品视频| 日韩精品欧美成人高清一区二区| 国产精品超碰97尤物18| 精品少妇一区二区三区| 欧美性生交片4| av亚洲产国偷v产偷v自拍| 欧美美女一区二区在线观看| 国产精品18久久久久久久久久久久| 亚洲香蕉伊在人在线观| 成人欧美一区二区三区1314| 久久久亚洲高清| 日韩精品一区二区三区视频播放| 欧美亚洲一区二区在线| 91在线无精精品入口| 成人一区在线看| 国产成人一级电影| 久久福利资源站| 久久99久久99| 美女网站一区二区| 日韩av电影天堂| 日韩精品成人一区二区三区| 亚洲精品国产成人久久av盗摄| 国产精品视频在线看| 国产色91在线| 国产清纯美女被跳蛋高潮一区二区久久w | 国产一区二区在线视频| 青青草97国产精品免费观看无弹窗版| 亚洲妇熟xx妇色黄| 亚洲成人免费在线观看| 亚洲一区在线看| 亚洲综合激情另类小说区| 一区二区三区**美女毛片| 亚洲乱码中文字幕综合| 亚洲精品精品亚洲| 亚洲精品日日夜夜| 亚洲妇女屁股眼交7| 亚洲mv在线观看| 日韩激情视频网站| 蜜臀av一区二区| 欧美日产在线观看| 91超碰这里只有精品国产| 337p亚洲精品色噜噜| 欧美男生操女生| 日韩亚洲欧美高清| 精品久久久久久无| 日本一区二区免费在线观看视频 | 日韩欧美在线影院| 精品日韩99亚洲| 久久久www成人免费无遮挡大片| 国产性天天综合网| 综合在线观看色| 亚洲一区视频在线| 蜜桃视频免费观看一区| 国产精品中文有码| 99久久er热在这里只有精品15 | 五月天网站亚洲| 理论电影国产精品| 福利一区福利二区| 色婷婷精品大在线视频 | 色综合一个色综合| 欧美日韩成人在线| 26uuuu精品一区二区| 国产精品国产三级国产aⅴ入口 | 婷婷久久综合九色综合绿巨人| 欧美三级视频在线观看| 日韩欧美一区在线| 久久精品欧美一区二区三区不卡| 国产精品不卡一区二区三区| 天天操天天干天天综合网| 国精产品一区一区三区mba桃花| 成人小视频免费在线观看| 欧美日韩国产一二三| 久久午夜老司机| 亚洲第一激情av| 国产成人精品三级| 欧美日本一道本| 国产清纯美女被跳蛋高潮一区二区久久w | 久久久亚洲国产美女国产盗摄 | 国产黑丝在线一区二区三区| 91首页免费视频| 精品捆绑美女sm三区| 亚洲乱码中文字幕| 国产一区二区在线免费观看| 色视频成人在线观看免| 久久精品男人的天堂| 五月天丁香久久| av不卡免费在线观看| 欧美成人r级一区二区三区| 一区二区三区毛片| 成人福利电影精品一区二区在线观看| 欧美伦理视频网站| 亚洲三级在线免费观看| 国产高清不卡二三区| 欧美久久久久久久久久| 亚洲免费在线看| 成人av影院在线| 久久久久免费观看| 蜜乳av一区二区三区| 欧亚洲嫩模精品一区三区| 中文字幕av一区 二区| 久久精品国产精品青草| 7777精品伊人久久久大香线蕉 | 美女任你摸久久| 欧美日韩国产a| 亚洲精品久久嫩草网站秘色| 粉嫩av一区二区三区在线播放| 日韩免费成人网| 日本不卡不码高清免费观看| 欧美在线999| 亚洲精品成a人| 色婷婷精品久久二区二区蜜臂av| 国产精品美女久久久久久久久| 国产麻豆成人精品| 久久久久免费观看| 久久精品72免费观看| 欧美大片国产精品| 老司机精品视频一区二区三区| 欧美精品日日鲁夜夜添| 图片区小说区区亚洲影院| 欧美日韩亚洲综合在线| 午夜精品久久久久久久久久久 | 欧美一区中文字幕| 天天色图综合网| 欧美一区二区在线免费播放| 午夜精品久久久久久久| 51精品国自产在线| 日本免费在线视频不卡一不卡二| 欧美高清激情brazzers| 日本伊人色综合网| 欧美大胆人体bbbb| 久久97超碰色| 国产日产欧美一区| 成人福利在线看| 亚洲精品免费在线| 欧美日产在线观看| 美国三级日本三级久久99| 精品国产乱码91久久久久久网站| 激情综合色丁香一区二区| 精品国产制服丝袜高跟| 自拍偷拍国产精品| 久久久久久一级片| 精品福利一区二区三区| 日本不卡一区二区三区高清视频| 欧美一级免费观看| 韩国三级电影一区二区| 国产精品污网站| 久久精品无码一区二区三区| 成人午夜伦理影院| 亚洲免费在线视频一区 二区| 欧美日韩国产经典色站一区二区三区 | 精品国产一二三区| 国产精品白丝jk白祙喷水网站| 亚洲欧美一区二区视频| 欧美三区免费完整视频在线观看| 蜜臀久久久99精品久久久久久| 亚洲国产精品成人综合| 欧美日本在线播放| 国产丶欧美丶日本不卡视频| 一区二区在线观看视频| 日韩一区二区三|