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

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

?? genhd.c

?? linux 1.0 源代碼
?? C
字號:
/* *  Code extracted from *  linux/kernel/hd.c * *  Copyright (C) 1991, 1992  Linus Torvalds *//* *  Thanks to Branko Lankester, lankeste@fwi.uva.nl, who found a bug *  in the early extended-partition checks and added DM partitions */#include <linux/config.h>#include <linux/fs.h>#include <linux/genhd.h>#include <linux/kernel.h>struct gendisk *gendisk_head = NULL;static int current_minor = 0;extern int *blk_size[];extern void rd_load(void);extern int ramdisk_size;/* * Create devices for each logical partition in an extended partition. * The logical partitions form a linked list, with each entry being * a partition table with two entries.  The first entry * is the real data partition (with a start relative to the partition * table start).  The second is a pointer to the next logical partition * (with a start relative to the entire extended partition). * We do not create a Linux partition for the partition tables, but * only for the actual data partitions. */static void extended_partition(struct gendisk *hd, int dev){	struct buffer_head *bh;	struct partition *p;	unsigned long first_sector, this_sector;	int mask = (1 << hd->minor_shift) - 1;	first_sector = hd->part[MINOR(dev)].start_sect;	this_sector = first_sector;	while (1) {		if ((current_minor & mask) >= (4 + hd->max_p))			return;		if (!(bh = bread(dev,0,1024)))			return;	  /*	   * This block is from a device that we're about to stomp on.	   * So make sure nobody thinks this block is usable.	   */		bh->b_dirt=0;		bh->b_uptodate=0;		if (*(unsigned short *) (bh->b_data+510) == 0xAA55) {			p = (struct partition *) (0x1BE + bh->b_data);		/*		 * Process the first entry, which should be the real		 * data partition.		 */			if (p->sys_ind == EXTENDED_PARTITION ||			    !(hd->part[current_minor].nr_sects = p->nr_sects))				goto done;  /* shouldn't happen */			hd->part[current_minor].start_sect = this_sector + p->start_sect;			printk(" %s%c%d", hd->major_name,				'a'+(current_minor >> hd->minor_shift),				mask & current_minor);			current_minor++;			p++;		/*		 * Process the second entry, which should be a link		 * to the next logical partition.  Create a minor		 * for this just long enough to get the next partition		 * table.  The minor will be reused for the real		 * data partition.		 */			if (p->sys_ind != EXTENDED_PARTITION ||			    !(hd->part[current_minor].nr_sects = p->nr_sects))				goto done;  /* no more logicals in this partition */			hd->part[current_minor].start_sect = first_sector + p->start_sect;			this_sector = first_sector + p->start_sect;			dev = ((hd->major) << 8) | current_minor;			brelse(bh);		} else			goto done;	}done:	brelse(bh);}static void check_partition(struct gendisk *hd, unsigned int dev){	static int first_time = 1;	int i, minor = current_minor;	struct buffer_head *bh;	struct partition *p;	unsigned long first_sector;	int mask = (1 << hd->minor_shift) - 1;	if (first_time)		printk("Partition check:\n");	first_time = 0;	first_sector = hd->part[MINOR(dev)].start_sect;	if (!(bh = bread(dev,0,1024))) {		printk("  unable to read partition table of device %04x\n",dev);		return;	}	printk("  %s%c:", hd->major_name, 'a'+(minor >> hd->minor_shift));	current_minor += 4;  /* first "extra" minor */	if (*(unsigned short *) (bh->b_data+510) == 0xAA55) {		p = (struct partition *) (0x1BE + bh->b_data);		for (i=1 ; i<=4 ; minor++,i++,p++) {			if (!(hd->part[minor].nr_sects = p->nr_sects))				continue;			hd->part[minor].start_sect = first_sector + p->start_sect;			printk(" %s%c%d", hd->major_name,'a'+(minor >> hd->minor_shift), i);			if ((current_minor & 0x3f) >= 60)				continue;			if (p->sys_ind == EXTENDED_PARTITION) {				printk(" <");				extended_partition(hd, (hd->major << 8) | minor);				printk(" >");			}		}		/*		 * check for Disk Manager partition table		 */		if (*(unsigned short *) (bh->b_data+0xfc) == 0x55AA) {			p = (struct partition *) (0x1BE + bh->b_data);			for (i = 4 ; i < 16 ; i++, current_minor++) {				p--;				if ((current_minor & mask) >= mask-2)					break;				if (!(p->start_sect && p->nr_sects))					continue;				hd->part[current_minor].start_sect = p->start_sect;				hd->part[current_minor].nr_sects = p->nr_sects;				printk(" %s%c%d", hd->major_name,					'a'+(current_minor >> hd->minor_shift),					current_minor & mask);			}		}	} else		printk(" bad partition table");	printk("\n");	brelse(bh);}/* This function is used to re-read partition tables for removable disks.   Much of the cleanup from the old partition tables should have already been   done *//* This function will re-read the partition tables for a given device,and set things back up again.  There are some important caveats,however.  You must ensure that no one is using the device, and no onecan start using the device while this function is being executed. */void resetup_one_dev(struct gendisk *dev, int drive){	int i;	int start = drive<<dev->minor_shift;	int j = start + dev->max_p;	int major = dev->major << 8;	current_minor = 1+(drive<<dev->minor_shift);	check_partition(dev, major+(drive<<dev->minor_shift));	for (i=start ; i < j ; i++)		dev->sizes[i] = dev->part[i].nr_sects >> (BLOCK_SIZE_BITS - 9);}static void setup_dev(struct gendisk *dev){	int i;	int j = dev->max_nr * dev->max_p;	int major = dev->major << 8;	int drive;		for (i = 0 ; i < j; i++)  {		dev->part[i].start_sect = 0;		dev->part[i].nr_sects = 0;	}	dev->init();		for (drive=0 ; drive<dev->nr_real ; drive++) {		current_minor = 1+(drive<<dev->minor_shift);		check_partition(dev, major+(drive<<dev->minor_shift));	}	for (i=0 ; i < j ; i++)		dev->sizes[i] = dev->part[i].nr_sects >> (BLOCK_SIZE_BITS - 9);	blk_size[dev->major] = dev->sizes;}	/* This may be used only once, enforced by 'static int callable' */asmlinkage int sys_setup(void * BIOS){	static int callable = 1;	struct gendisk *p;	int nr=0;	if (!callable)		return -1;	callable = 0;	for (p = gendisk_head ; p ; p=p->next) {		setup_dev(p);		nr += p->nr_real;	}			if (ramdisk_size)		rd_load();	mount_root();	return (0);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产高清久久久久| 日韩欧美一级二级| 日韩欧美国产一区在线观看| 精品99999| 午夜av电影一区| 91网站在线观看视频| 精品久久久久久久一区二区蜜臀| 亚洲色图第一区| 韩国中文字幕2020精品| 欧美日韩一级黄| 国产精品国产自产拍在线| 久久99久久久欧美国产| 精品视频在线免费观看| 国产精品大尺度| 国产91在线看| 精品久久久久一区| 蜜桃av一区二区三区电影| 欧美性生活久久| 亚洲欧美日韩小说| 成人国产在线观看| 国产日韩欧美麻豆| 激情综合网天天干| 欧美一级黄色片| 婷婷一区二区三区| 欧美日韩亚州综合| 亚洲午夜三级在线| 精品视频1区2区3区| 亚洲精品国产无天堂网2021| 91麻豆自制传媒国产之光| 国产精品三级视频| av在线一区二区三区| 国产精品理论在线观看| www.亚洲国产| 日韩美女久久久| 色综合天天综合在线视频| 最新热久久免费视频| 粉嫩绯色av一区二区在线观看| 26uuu亚洲综合色欧美| 久久电影网电视剧免费观看| 精品久久一区二区| 国产乱一区二区| 国产精品视频在线看| 色哟哟在线观看一区二区三区| 亚洲欧美一区二区三区孕妇| 色999日韩国产欧美一区二区| 夜夜夜精品看看| 欧美剧在线免费观看网站 | 久久综合久久综合久久综合| 久久99精品久久久久久国产越南 | 精品一区二区久久久| 欧美videossexotv100| 国产一区日韩二区欧美三区| 欧美国产日韩a欧美在线观看| 99久久伊人久久99| 亚洲国产精品尤物yw在线观看| 制服丝袜亚洲色图| 国产精品123区| ●精品国产综合乱码久久久久| 欧美日韩亚洲不卡| 国产精品一二三区| 亚洲欧洲制服丝袜| 日韩一区二区三区电影| 国产成人一区二区精品非洲| 一区二区三区在线影院| 日韩欧美一区二区三区在线| 豆国产96在线|亚洲| 亚洲影视资源网| 精品国产1区二区| 99国产精品久| 久久精品国产成人一区二区三区| 中文文精品字幕一区二区| 欧美三级欧美一级| 国产成人精品影院| 五月综合激情婷婷六月色窝| 中文字幕欧美日韩一区| 这里只有精品电影| 成人丝袜视频网| 日韩国产欧美一区二区三区| 中文字幕免费一区| 日韩欧美一区在线观看| 92国产精品观看| 久久99久久精品欧美| 亚洲福利视频一区| 中文字幕在线不卡一区| 精品国产区一区| 精品视频一区三区九区| 99精品视频中文字幕| 国内精品免费**视频| 日韩精品乱码av一区二区| 成人免费一区二区三区在线观看| www国产成人| 欧美人妇做爰xxxⅹ性高电影| 成人av综合在线| 国产综合久久久久影院| 免费在线看一区| 性做久久久久久免费观看| 亚洲日本在线天堂| 中文字幕高清一区| 久久久99久久| 精品国产一区a| 日韩三级伦理片妻子的秘密按摩| 色噜噜狠狠色综合欧洲selulu| 成人毛片视频在线观看| 国内精品嫩模私拍在线| 久久精工是国产品牌吗| 日韩电影免费在线观看网站| 五月综合激情日本mⅴ| 亚洲一区二区三区精品在线| 樱花影视一区二区| 亚洲综合成人网| 亚洲中国最大av网站| 亚洲一卡二卡三卡四卡五卡| 亚洲男人天堂av网| 亚洲精品视频在线| 亚洲裸体xxx| 亚洲黄一区二区三区| 欧美精三区欧美精三区| 成人网页在线观看| 成人综合在线观看| 成人av午夜影院| 成人黄色免费短视频| 成人av先锋影音| 色综合久久88色综合天天6| 日本乱码高清不卡字幕| 欧美吞精做爰啪啪高潮| 欧美另类变人与禽xxxxx| 欧美一三区三区四区免费在线看 | 久久亚洲一级片| 久久这里只精品最新地址| 久久精品人人做人人爽人人| 国产精品剧情在线亚洲| 玉米视频成人免费看| 日欧美一区二区| 国产精品伊人色| 91视频观看免费| 3d动漫精品啪啪1区2区免费| 久久亚洲精品国产精品紫薇| 国产日韩影视精品| 亚洲天堂免费看| 青娱乐精品视频| 国产v日产∨综合v精品视频| 一本色道久久综合狠狠躁的推荐 | 欧日韩精品视频| 欧美丰满嫩嫩电影| 欧美精品一区二区三| 成人免费在线观看入口| 日韩主播视频在线| 国产成人午夜视频| 一本色道亚洲精品aⅴ| 欧美一区日韩一区| 国产精品久久久久久久蜜臀| 亚洲综合色区另类av| 精品一区二区三区在线播放视频| 成人动漫一区二区| 欧美午夜精品一区二区蜜桃| 日韩精品一区二区在线观看| 国产精品国产自产拍高清av王其| 亚洲午夜三级在线| 成人免费毛片片v| 欧美日本一区二区在线观看| 久久精品男人天堂av| 日日夜夜精品视频天天综合网| 国产成人免费网站| 欧美精品第1页| 国产精品久久久久一区| 免费高清在线视频一区·| 972aa.com艺术欧美| 久久久久久一二三区| 视频在线观看国产精品| 91在线视频播放地址| 精品剧情v国产在线观看在线| 亚洲一二三区在线观看| 成人午夜视频免费看| 日韩欧美一级特黄在线播放| 亚洲一区二区在线免费观看视频 | 精品无人码麻豆乱码1区2区| 色婷婷综合久久久久中文 | 亚洲高清免费观看 | 亚洲欧美国产77777| 激情欧美一区二区三区在线观看| 欧美性猛交一区二区三区精品| 国产精品久久午夜| 久久se精品一区精品二区| 欧美精品日韩综合在线| 亚洲另类在线视频| 成人18视频在线播放| 欧美激情一区在线| 国产精品一区二区久久不卡| 欧美草草影院在线视频| 视频一区二区中文字幕| 欧美日本在线视频| 亚洲免费观看高清完整版在线观看| 大陆成人av片| 国产精品久久看| 成人精品高清在线| 国产精品青草久久| 99久久伊人网影院| 亚洲精品五月天| 欧美日韩国产精选| 日韩电影在线免费|