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

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

?? ramdisk.c

?? LINUX1.0源代碼,代碼條理清晰
?? C
字號:
/*
 *  linux/kernel/blk_drv/ramdisk.c
 *
 *  Written by Theodore Ts'o, 12/2/91
 *
 * Modifications by Fred N. van Kempen to allow for bootable root
 * disks (which are used in LINUX/Pro).  Also some cleanups.  03/03/93
 */


#include <linux/config.h>
#include <linux/sched.h>
#include <linux/minix_fs.h>
#include <linux/fs.h>
#include <linux/kernel.h>
#include <linux/string.h>
#include <asm/system.h>
#include <asm/segment.h>

#define MAJOR_NR  MEM_MAJOR
#include "blk.h"

#define RAMDISK_MINOR	1


char	*rd_start;
int	rd_length = 0;
static int rd_blocksizes[2] = {0, 0};

static void do_rd_request(void)
{
	int	len;
	char	*addr;

repeat:
	INIT_REQUEST;
	addr = rd_start + (CURRENT->sector << 9);
	len = CURRENT->current_nr_sectors << 9;

	if ((MINOR(CURRENT->dev) != RAMDISK_MINOR) ||
	    (addr+len > rd_start+rd_length)) {
		end_request(0);
		goto repeat;
	}
	if (CURRENT-> cmd == WRITE) {
		(void ) memcpy(addr,
			      CURRENT->buffer,
			      len);
	} else if (CURRENT->cmd == READ) {
		(void) memcpy(CURRENT->buffer, 
			      addr,
			      len);
	} else
		panic("RAMDISK: unknown RAM disk command !\n");
	end_request(1);
	goto repeat;
}

static struct file_operations rd_fops = {
	NULL,			/* lseek - default */
	block_read,		/* read - general block-dev read */
	block_write,		/* write - general block-dev write */
	NULL,			/* readdir - bad */
	NULL,			/* select */
	NULL,			/* ioctl */
	NULL,			/* mmap */
	NULL,			/* no special open code */
	NULL,			/* no special release code */
	block_fsync		/* fsync */
};

/*
 * Returns amount of memory which needs to be reserved.
 */
long rd_init(long mem_start, int length)
{
	int	i;
	char	*cp;

	if (register_blkdev(MEM_MAJOR,"rd",&rd_fops)) {
		printk("RAMDISK: Unable to get major %d.\n", MEM_MAJOR);
		return 0;
	}
	blk_dev[MEM_MAJOR].request_fn = DEVICE_REQUEST;
	rd_start = (char *) mem_start;
	rd_length = length;
	cp = rd_start;
	for (i=0; i < length; i++)
		*cp++ = '\0';

	for(i=0;i<2;i++) rd_blocksizes[i] = 1024;
	blksize_size[MAJOR_NR] = rd_blocksizes;

	return(length);
}

/*
 * If the root device is the RAM disk, try to load it.
 * In order to do this, the root device is originally set to the
 * floppy, and we later change it to be RAM disk.
 */
void rd_load(void)
{
	struct buffer_head *bh;
	struct minix_super_block s;
	int		block, tries;
	int		i = 1;
	int		nblocks;
	char		*cp;

	/* If no RAM disk specified, give up early. */
	if (!rd_length) return;
	printk("RAMDISK: %d bytes, starting at 0x%x\n",
					rd_length, (int) rd_start);

	/* If we are doing a diskette boot, we might have to pre-load it. */
	if (MAJOR(ROOT_DEV) != FLOPPY_MAJOR) return;

	/*
	 * Check for a super block on the diskette.
	 * The old-style boot/root diskettes had their RAM image
	 * starting at block 512 of the boot diskette.  LINUX/Pro
	 * uses the enire diskette as a file system, so in that
	 * case, we have to look at block 0.  Be intelligent about
	 * this, and check both... - FvK
	 */
	for (tries = 0; tries < 1000; tries += 512) {
		block = tries;
		bh = breada(ROOT_DEV,block+1,block,block+2,-1);
		if (!bh) {
			printk("RAMDISK: I/O error while looking for super block!\n");
			return;
		}

		/* This is silly- why do we require it to be a MINIX FS? */
		*((struct minix_super_block *) &s) =
			*((struct minix_super_block *) bh->b_data);
		brelse(bh);
		nblocks = s.s_nzones << s.s_log_zone_size;
		if (s.s_magic != MINIX_SUPER_MAGIC &&
		    s.s_magic != MINIX_SUPER_MAGIC2) {
			printk("RAMDISK: trying old-style RAM image.\n");
			continue;
		}

		if (nblocks > (rd_length >> BLOCK_SIZE_BITS)) {
			printk("RAMDISK: image too big! (%d/%d blocks)\n",
					nblocks, rd_length >> BLOCK_SIZE_BITS);
			return;
		}
		printk("RAMDISK: Loading %d blocks into RAM disk", nblocks);

		/* We found an image file system.  Load it into core! */
		cp = rd_start;
		while (nblocks) {
			if (nblocks > 2) 
				bh = breada(ROOT_DEV, block, block+1, block+2, -1);
			else
				bh = bread(ROOT_DEV, block, BLOCK_SIZE);
			if (!bh) {
				printk("RAMDISK: I/O error on block %d, aborting!\n", 
				block);
				return;
			}
			(void) memcpy(cp, bh->b_data, BLOCK_SIZE);
			brelse(bh);
			if (!(nblocks-- & 15)) printk(".");
			cp += BLOCK_SIZE;
			block++;
			i++;
		}
		printk("\ndone\n");

		/* We loaded the file system image.  Prepare for mounting it. */
		ROOT_DEV = ((MEM_MAJOR << 8) | RAMDISK_MINOR);
		return;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91精品免费| 国产一区二区三区综合| 国产精品麻豆一区二区| 2024国产精品| 久久综合成人精品亚洲另类欧美| 91精品国产91热久久久做人人| 欧美二区乱c少妇| 欧美成人免费网站| 国产欧美日韩精品一区| 亚洲欧美日韩国产手机在线| 亚洲黄网站在线观看| 亚洲一卡二卡三卡四卡| 麻豆精品国产传媒mv男同 | 一区二区三区四区不卡在线| 亚洲欧美色图小说| 亚洲国产综合人成综合网站| 蜜桃91丨九色丨蝌蚪91桃色| 国产精品99久久久久久久女警| 成人在线一区二区三区| 欧美在线不卡一区| 26uuu另类欧美亚洲曰本| 中文字幕免费不卡在线| 一区二区国产视频| 国产揄拍国内精品对白| 色婷婷综合在线| 欧美一区二区网站| 国产精品网站一区| 婷婷久久综合九色综合绿巨人| 韩国av一区二区三区四区| 91在线小视频| 精品乱人伦一区二区三区| 亚洲欧美日韩综合aⅴ视频| 久久精品国产网站| 91浏览器在线视频| 精品久久久网站| 亚洲一二三四区| 国产91精品在线观看| 在线不卡a资源高清| 亚洲国产成人一区二区三区| 人人狠狠综合久久亚洲| 在线免费观看日本欧美| 国产欧美日韩综合| 免费人成精品欧美精品| 欧美亚洲一区二区在线观看| 国产精品情趣视频| 久久99国产精品免费网站| 欧美三级欧美一级| 国产精品久久久久久久久快鸭| 免费成人在线影院| 欧美日产国产精品| 亚洲激情六月丁香| 波多野结衣中文字幕一区二区三区 | 不卡av电影在线播放| 欧美成人精品高清在线播放| 亚洲v日本v欧美v久久精品| 白白色 亚洲乱淫| 国产亚洲综合在线| 久久99精品久久久久久动态图| 欧美丝袜自拍制服另类| 亚洲欧美日韩国产另类专区| 国产69精品久久久久毛片| 日韩欧美精品在线| 喷白浆一区二区| 日韩欧美一级在线播放| 亚洲电影一级黄| 欧美日韩在线观看一区二区| 亚洲综合一二三区| 欧洲日韩一区二区三区| 一区二区三区国产豹纹内裤在线| 99精品在线观看视频| 综合av第一页| 欧美在线制服丝袜| 亚洲第一会所有码转帖| 7777精品伊人久久久大香线蕉最新版| 亚洲妇女屁股眼交7| 欧美高清一级片在线| 日本亚洲视频在线| 26uuu成人网一区二区三区| 国产酒店精品激情| 亚洲欧洲另类国产综合| 91在线精品一区二区三区| 亚洲欧美成aⅴ人在线观看| 在线一区二区三区四区| 日韩有码一区二区三区| 欧美一区二区在线免费观看| 激情久久五月天| 欧美国产综合色视频| 97久久超碰国产精品电影| 亚洲黄色小说网站| 欧美一区二区三区四区视频 | 中文字幕一区二区视频| 欧洲激情一区二区| 日本成人在线看| 日本一区二区视频在线| 91社区在线播放| 日韩av一区二| 欧美激情在线一区二区| 在线观看av一区| 久久er99热精品一区二区| 中文字幕欧美激情| 欧美日韩精品电影| 成人午夜大片免费观看| 亚洲国产成人av| 国产亚洲精品免费| 欧美精选午夜久久久乱码6080| 激情六月婷婷久久| 亚洲在线观看免费| 久久日一线二线三线suv| 91性感美女视频| 极品少妇xxxx偷拍精品少妇| 一区二区三区免费观看| 久久久久久免费网| 欧美欧美欧美欧美首页| 99精品久久99久久久久| 久久不见久久见免费视频7| 玉米视频成人免费看| 26uuu久久天堂性欧美| 欧美日韩综合在线免费观看| 国产suv精品一区二区6| 免费人成精品欧美精品 | 欧美日韩视频在线观看一区二区三区| 精品一区二区三区免费毛片爱| 亚洲激情六月丁香| 中文字幕精品综合| 精品国产三级电影在线观看| 欧美日韩久久一区| 91精彩视频在线| av一区二区三区在线| 国产精品一级在线| 激情欧美一区二区三区在线观看| 亚洲第四色夜色| 亚洲影视资源网| 一区二区三区高清| 亚洲丝袜另类动漫二区| 国产欧美一区二区精品秋霞影院 | 欧美一区二区三区婷婷月色| 色噜噜狠狠成人网p站| 成人18视频在线播放| 国产乱码字幕精品高清av| 美女视频黄 久久| 麻豆精品在线视频| 蜜臀精品久久久久久蜜臀| 午夜欧美2019年伦理| 日日夜夜一区二区| 麻豆精品一区二区综合av| 免费成人在线观看视频| 日本中文字幕不卡| 麻豆极品一区二区三区| 精品一区二区三区香蕉蜜桃| 精品亚洲成a人| 国产精品一二二区| 顶级嫩模精品视频在线看| 国产成人亚洲综合a∨猫咪| 国产福利一区二区| 白白色亚洲国产精品| 91蝌蚪porny| 欧美日韩另类国产亚洲欧美一级| 欧美日韩综合不卡| 日韩一级视频免费观看在线| 日韩一区二区电影网| 26uuu亚洲| 国产精品嫩草影院av蜜臀| 亚洲男同1069视频| 视频一区中文字幕国产| 国产自产高清不卡| av电影天堂一区二区在线| 91黄色激情网站| 欧美一区二区美女| 欧美国产精品v| 亚洲综合色丁香婷婷六月图片| 午夜视黄欧洲亚洲| 国产麻豆视频一区| 91久久线看在观草草青青| 91精品国产品国语在线不卡| 久久久精品人体av艺术| 亚洲乱码精品一二三四区日韩在线| 亚洲六月丁香色婷婷综合久久| 天天综合色天天综合色h| 久久精品国产第一区二区三区| 国产成人免费视频网站 | 夜夜揉揉日日人人青青一国产精品| 午夜亚洲福利老司机| 国产精品综合av一区二区国产馆| 91色在线porny| 日韩精品综合一本久道在线视频| 国产精品久久夜| 日本伊人色综合网| 99r精品视频| 久久久精品日韩欧美| 亚洲国产一区二区三区| 国产乱码精品一区二区三区忘忧草| 91色porny| 久久九九久久九九| 日韩av电影天堂| 91免费观看视频在线| 亚洲精品在线免费观看视频| 亚洲国产精品一区二区尤物区| 国产精品中文字幕欧美| 欧美一区二区在线免费观看| 亚洲日本免费电影|