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

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

?? ide-geometry.c

?? 這是一個SIGMA方案的PMP播放器的UCLINUX程序,可播放DVD,VCD,CD MP3...有很好的參考價值.
?? C
字號:
/* * linux/drivers/ide/ide-geometry.c */#include <linux/config.h>#include <linux/ide.h>#include <linux/mc146818rtc.h>#include <asm/io.h>/* * We query CMOS about hard disks : it could be that we have a SCSI/ESDI/etc * controller that is BIOS compatible with ST-506, and thus showing up in our * BIOS table, but not register compatible, and therefore not present in CMOS. * * Furthermore, we will assume that our ST-506 drives <if any> are the primary * drives in the system -- the ones reflected as drive 1 or 2.  The first * drive is stored in the high nibble of CMOS byte 0x12, the second in the low * nibble.  This will be either a 4 bit drive type or 0xf indicating use byte * 0x19 for an 8 bit type, drive 1, 0x1a for drive 2 in CMOS.  A non-zero value * means we have an AT controller hard disk for that drive. * * Of course, there is no guarantee that either drive is actually on the * "primary" IDE interface, but we don't bother trying to sort that out here. * If a drive is not actually on the primary interface, then these parameters * will be ignored.  This results in the user having to supply the logical * drive geometry as a boot parameter for each drive not on the primary i/f. *//* * The only "perfect" way to handle this would be to modify the setup.[cS] code * to do BIOS calls Int13h/Fn08h and Int13h/Fn48h to get all of the drive info * for us during initialization.  I have the necessary docs -- any takers?  -ml *//* * I did this, but it doesnt work - there is no reasonable way to find the * correspondence between the BIOS numbering of the disks and the Linux * numbering. -aeb * * The code below is bad. One of the problems is that drives 1 and 2 * may be SCSI disks (even when IDE disks are present), so that * the geometry we read here from BIOS is attributed to the wrong disks. * Consequently, also the former "drive->present = 1" below was a mistake. * * Eventually the entire routine below should be removed. */void probe_cmos_for_drives (ide_hwif_t *hwif){#ifdef __i386__	extern struct drive_info_struct drive_info;	byte cmos_disks, *BIOS = (byte *) &drive_info;	int unit;	unsigned long flags;#ifdef CONFIG_BLK_DEV_PDC4030	if (hwif->chipset == ide_pdc4030 && hwif->channel != 0)		return;#endif /* CONFIG_BLK_DEV_PDC4030 */	spin_lock_irqsave(&rtc_lock, flags);	cmos_disks = CMOS_READ(0x12);	spin_unlock_irqrestore(&rtc_lock, flags);	/* Extract drive geometry from CMOS+BIOS if not already setup */	for (unit = 0; unit < MAX_DRIVES; ++unit) {		ide_drive_t *drive = &hwif->drives[unit];		if ((cmos_disks & (0xf0 >> (unit*4)))		   && !drive->present && !drive->nobios) {			unsigned short cyl = *(unsigned short *)BIOS;			unsigned char head = *(BIOS+2);			unsigned char sect = *(BIOS+14);			if (cyl > 0 && head > 0 && sect > 0 && sect < 64) {				drive->cyl   = drive->bios_cyl  = cyl;				drive->head  = drive->bios_head = head;				drive->sect  = drive->bios_sect = sect;				drive->ctl   = *(BIOS+8);			} else {				printk("hd%c: C/H/S=%d/%d/%d from BIOS ignored\n",				       unit+'a', cyl, head, sect);			}		}		BIOS += 16;	}#endif}#ifdef CONFIG_BLK_DEV_IDEextern ide_drive_t * get_info_ptr(kdev_t);extern unsigned long current_capacity (ide_drive_t *);/* * If heads is nonzero: find a translation with this many heads and S=63. * Otherwise: find out how OnTrack Disk Manager would translate the disk. */static voidontrack(ide_drive_t *drive, int heads, unsigned int *c, int *h, int *s) {	static const byte dm_head_vals[] = {4, 8, 16, 32, 64, 128, 255, 0};	const byte *headp = dm_head_vals;	unsigned long total;	/*	 * The specs say: take geometry as obtained from Identify,	 * compute total capacity C*H*S from that, and truncate to	 * 1024*255*63. Now take S=63, H the first in the sequence	 * 4, 8, 16, 32, 64, 128, 255 such that 63*H*1024 >= total.	 * [Please tell aeb@cwi.nl in case this computes a	 * geometry different from what OnTrack uses.]	 */	total = DRIVER(drive)->capacity(drive);	*s = 63;	if (heads) {		*h = heads;		*c = total / (63 * heads);		return;	}	while (63 * headp[0] * 1024 < total && headp[1] != 0)		 headp++;	*h = headp[0];	*c = total / (63 * headp[0]);}/* * This routine is called from the partition-table code in pt/msdos.c. * It has two tasks: * (i) to handle Ontrack DiskManager by offsetting everything by 63 sectors, *  or to handle EZdrive by remapping sector 0 to sector 1. * (ii) to invent a translated geometry. * Part (i) is suppressed if the user specifies the "noremap" option * on the command line. * Part (ii) is suppressed if the user specifies an explicit geometry. * * The ptheads parameter is either 0 or tells about the number of * heads shown by the end of the first nonempty partition. * If this is either 16, 32, 64, 128, 240 or 255 we'll believe it. * * The xparm parameter has the following meaning: *	 0 = convert to CHS with fewer than 1024 cyls *	     using the same method as Ontrack DiskManager. *	 1 = same as "0", plus offset everything by 63 sectors. *	-1 = similar to "0", plus redirect sector 0 to sector 1. *	 2 = convert to a CHS geometry with "ptheads" heads. * * Returns 0 if the translation was not possible, if the device was not  * an IDE disk drive, or if a geometry was "forced" on the commandline. * Returns 1 if the geometry translation was successful. */int ide_xlate_1024 (kdev_t i_rdev, int xparm, int ptheads, const char *msg){	ide_drive_t *drive;	const char *msg1 = "";	int heads = 0;	int c, h, s;	int transl = 1;		/* try translation */	int ret = 0;	drive = get_info_ptr(i_rdev);	if (!drive)		return 0;	/* remap? */	if (drive->remap_0_to_1 != 2) {		if (xparm == 1) {		/* DM */			drive->sect0 = 63;			msg1 = " [remap +63]";			ret = 1;		} else if (xparm == -1) {	/* EZ-Drive */			if (drive->remap_0_to_1 == 0) {				drive->remap_0_to_1 = 1;				msg1 = " [remap 0->1]";				ret = 1;			}		}	}	/* There used to be code here that assigned drive->id->CHS	   to drive->CHS and that to drive->bios_CHS. However,	   some disks have id->C/H/S = 4092/16/63 but are larger than 2.1 GB.	   In such cases that code was wrong.  Moreover,	   there seems to be no reason to do any of these things. */	/* translate? */	if (drive->forced_geom)		transl = 0;	/* does ptheads look reasonable? */	if (ptheads == 32 || ptheads == 64 || ptheads == 128 ||	    ptheads == 240 || ptheads == 255)		heads = ptheads;	if (xparm == 2) {		if (!heads ||		   (drive->bios_head >= heads && drive->bios_sect == 63))			transl = 0;	}	if (xparm == -1) {		if (drive->bios_head > 16)			transl = 0;     /* we already have a translation */	}	if (transl) {		ontrack(drive, heads, &c, &h, &s);		drive->bios_cyl = c;		drive->bios_head = h;		drive->bios_sect = s;		ret = 1;	}	drive->part[0].nr_sects = current_capacity(drive);	if (ret)		printk("%s%s [%d/%d/%d]", msg, msg1,		       drive->bios_cyl, drive->bios_head, drive->bios_sect);	return ret;}#endif /* CONFIG_BLK_DEV_IDE */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲捆绑美女| 加勒比av一区二区| 美国三级日本三级久久99| 国产99久久久久| 91精品国产一区二区三区蜜臀 | 91片在线免费观看| 日韩精品中文字幕一区二区三区| 亚洲视频香蕉人妖| 国产美女娇喘av呻吟久久 | 国产精品一区二区果冻传媒| 色综合中文字幕国产| 欧美一级欧美一级在线播放| 亚洲精品亚洲人成人网 | 久久久久成人黄色影片| 亚洲电影欧美电影有声小说| 国产91精品一区二区麻豆网站| 欧美疯狂做受xxxx富婆| 亚洲欧美电影院| 成人精品国产免费网站| www国产亚洲精品久久麻豆| 日本不卡高清视频| 欧美区视频在线观看| 亚洲精品免费一二三区| 成人深夜视频在线观看| 久久精品这里都是精品| 美女国产一区二区三区| 欧美高清你懂得| 丝袜诱惑亚洲看片| 欧美日韩另类国产亚洲欧美一级| 亚洲男人的天堂在线aⅴ视频| 丁香网亚洲国际| 欧美国产日本韩| 国产白丝网站精品污在线入口| 欧美mv日韩mv国产网站app| 麻豆成人免费电影| 欧美videos大乳护士334| 麻豆精品久久精品色综合| 欧美日韩成人综合| 日韩精品福利网| 欧美一区二区在线视频| 久久av资源站| 久久综合色鬼综合色| 国产剧情一区二区| 国产精品热久久久久夜色精品三区 | 国产成人一区二区精品非洲| 久久久国产精品麻豆| 国产成人在线免费| 中文字幕日本不卡| 在线观看区一区二| 日日欢夜夜爽一区| 精品美女一区二区三区| 国产黄色精品视频| 亚洲色大成网站www久久九九| 91免费看片在线观看| 亚洲国产另类av| 欧美一区二区在线看| 国内偷窥港台综合视频在线播放| 国产午夜三级一区二区三| 99视频超级精品| 亚洲一区在线观看网站| 日韩限制级电影在线观看| 国产一区二区成人久久免费影院| 国产精品二三区| 欧美日韩三级在线| 国产麻豆视频一区二区| 中文字幕佐山爱一区二区免费| 欧美色图在线观看| 国产精品一区二区男女羞羞无遮挡 | 麻豆精品一区二区综合av| 国产欧美一区二区精品性色超碰| 91女人视频在线观看| 欧美a级理论片| 国产精品理论在线观看| 欧美日韩高清一区| 国产成人免费视频精品含羞草妖精| 亚洲免费资源在线播放| 精品国精品国产| 91精彩视频在线观看| 国产一区二区三区免费播放| 亚洲精品日韩专区silk| 久久中文字幕电影| 欧美视频中文字幕| 成人国产一区二区三区精品| 亚洲h精品动漫在线观看| 久久丝袜美腿综合| 欧美高清视频一二三区 | 色噜噜狠狠一区二区三区果冻| 午夜精品福利一区二区三区av | 亚洲欧美怡红院| 精品国产免费视频| 欧美三级韩国三级日本一级| 成人做爰69片免费看网站| 蜜桃视频一区二区三区在线观看| 亚洲老妇xxxxxx| 国产日韩欧美不卡在线| 日韩亚洲欧美在线观看| 欧洲一区在线电影| 9人人澡人人爽人人精品| 狠狠色丁香久久婷婷综合丁香| 亚洲一区二区黄色| 亚洲欧美日韩电影| 中文字幕亚洲在| 国产人成一区二区三区影院| 日韩精品中午字幕| 91精品国产入口| 欧美日韩亚洲综合| 欧美三区在线观看| 色噜噜夜夜夜综合网| 色综合天天天天做夜夜夜夜做| 国产成人在线免费观看| 国产精品中文欧美| 国产美女在线观看一区| 久国产精品韩国三级视频| 麻豆精品一区二区三区| 蜜臀va亚洲va欧美va天堂| 日韩中文字幕区一区有砖一区| 亚洲一区二区四区蜜桃| 亚洲一二三区视频在线观看| 一区二区三区不卡在线观看 | 亚洲电影视频在线| 亚洲不卡av一区二区三区| 亚洲第一搞黄网站| 日韩av网站免费在线| 免费观看在线综合色| 麻豆视频观看网址久久| 麻豆成人av在线| 国内成人免费视频| 国产91精品一区二区| 成a人片亚洲日本久久| 91小视频在线观看| 欧美视频精品在线观看| 91精品国产综合久久久久久漫画 | 亚洲五月六月丁香激情| 视频一区二区欧美| 蜜桃视频一区二区三区| 国产精品亚洲视频| 色综合天天综合网国产成人综合天| 色婷婷亚洲婷婷| 69久久99精品久久久久婷婷| 精品久久久久香蕉网| 中文幕一区二区三区久久蜜桃| 一区二区三区小说| 日本亚洲三级在线| 国产精品88av| 91在线视频官网| 欧美高清性hdvideosex| 久久久美女艺术照精彩视频福利播放 | 中文字幕欧美一区| 视频一区欧美日韩| 成人自拍视频在线| 欧美日韩不卡一区| 国产香蕉久久精品综合网| 奇米色一区二区三区四区| 久久成人免费网| 91亚洲精品久久久蜜桃| 日韩视频123| 自拍av一区二区三区| 蜜桃av一区二区三区电影| 国产1区2区3区精品美女| 欧美三级蜜桃2在线观看| 26uuu另类欧美| 亚洲国产精品一区二区尤物区| 久久69国产一区二区蜜臀| 在线亚洲精品福利网址导航| 一个色综合av| 国产成人99久久亚洲综合精品| 欧美人妇做爰xxxⅹ性高电影| 久久久久久久久久久久电影| 亚洲成a人v欧美综合天堂| 国产盗摄精品一区二区三区在线 | 亚洲精品乱码久久久久久| 黑人精品欧美一区二区蜜桃 | 亚洲高清免费一级二级三级| 国产黄色精品网站| 欧美一区二区免费观在线| 亚洲免费色视频| 国产成人在线看| 日韩一二三区视频| 午夜激情久久久| 91啪亚洲精品| 国产精品久久久久一区| 韩国欧美一区二区| 欧美一区午夜视频在线观看| 一区二区激情小说| 97精品视频在线观看自产线路二| 久久品道一品道久久精品| 久久电影网站中文字幕| 在线91免费看| 香蕉加勒比综合久久| 91国产成人在线| 樱桃视频在线观看一区| 不卡在线观看av| 亚洲国产高清不卡| 高清beeg欧美| 久久精品一区二区| 国v精品久久久网| 国产精品色噜噜| 成人免费高清在线| 中文字幕欧美日韩一区| 成人动漫一区二区三区|