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

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

?? ramdisk.c

?? LINUX 0.11版內核代碼。 并有代碼分析說明。
?? C
字號:
/* passed* linux/kernel/blk_drv/ramdisk.c** Written by Theodore Ts'o, 12/2/91*/
#include <set_seg.h>
/* 由Theodore Ts'o 編制,12/2/91*/// Theodore Ts'o (Ted Ts'o)是linux 社區(qū)中的著名人物。Linux 在世界范圍內的流行也有他很大的// 功勞,早在Linux 操作系統(tǒng)剛問世時,他就懷著極大的熱情為linux 的發(fā)展提供了maillist,并// 在北美洲地區(qū)最早設立了linux 的ftp 站點(tsx-11.mit.edu),而且至今仍然為廣大linux 用戶// 提供服務。他對linux 作出的最大貢獻之一是提出并實現(xiàn)了ext2 文件系統(tǒng)。該文件系統(tǒng)已成為// linux 世界中事實上的文件系統(tǒng)標準。最近他又推出了ext3 文件系統(tǒng),大大提高了文件系統(tǒng)的// 穩(wěn)定性和訪問效率。作為對他的推崇,第97 期(2002 年5 月)的linuxjournal 期刊將他作為// 了封面人物,并對他進行了采訪。目前,他為IBM linux 技術中心工作,并從事著有關LSB// (Linux Standard Base)等方面的工作。(他的主頁:http://thunk.org/tytso/)#include <string.h>		// 字符串頭文件。主要定義了一些有關字符串操作的嵌入函數(shù)。#include <linux/config.h>	// 內核配置頭文件。定義鍵盤語言和硬盤類型(HD_TYPE)可選項。#include <linux/sched.h>	// 調度程序頭文件,定義了任務結構task_struct、初始任務0 的數(shù)據(jù),// 還有一些有關描述符參數(shù)設置和獲取的嵌入式匯編函數(shù)宏語句。#include <linux/fs.h>		// 文件系統(tǒng)頭文件。定義文件表結構(file,buffer_head,m_inode 等)。#include <linux/kernel.h>	// 內核頭文件。含有一些內核常用函數(shù)的原形定義。#include <asm/system.h>		// 系統(tǒng)頭文件。定義了設置或修改描述符/中斷門等的嵌入式匯編宏。#include <asm/segment.h>	// 段操作頭文件。定義了有關段寄存器操作的嵌入式匯編函數(shù)。#include <asm/memory.h>		// 內存拷貝頭文件。含有memcpy()嵌入式匯編宏函數(shù)。#define MAJOR_NR 1		// 內存主設備號是1。#include "blk.h"char *rd_start = 0;			// 虛擬盤在內存中的起始位置。在52 行初始化函數(shù)rd_init()中// 確定。參見(init/main.c,124)(縮寫rd_代表ramdisk_)。int rd_length = 0;		// 虛擬盤所占內存大小(字節(jié))。// 執(zhí)行虛擬盤(ramdisk)讀寫操作。程序結構與do_hd_request()類似(kernel/blk_drv/hd.c,294)。voiddo_rd_request (void){	int len;	char *addr;	INIT_REQUEST;			// 檢測請求的合法性(參見kernel/blk_drv/blk.h,127)。// 下面語句取得ramdisk 的起始扇區(qū)對應的內存起始位置和內存長度。// 其中sector << 9 表示sector * 512,CURRENT 定義為(blk_dev[MAJOR_NR].current_request)。	addr = rd_start + (CURRENT->sector << 9);	len = CURRENT->nr_sectors << 9;// 如果子設備號不為1 或者對應內存起始位置>虛擬盤末尾,則結束該請求,并跳轉到repeat 處// (定義在28 行的INIT_REQUEST 內開始處)。	if ((MINOR (CURRENT->dev) != 1) || (addr + len > rd_start + rd_length))	{		end_request (0);		goto repeat;	}// 如果是寫命令(WRITE),則將請求項中緩沖區(qū)的內容復制到addr 處,長度為len 字節(jié)。	if (CURRENT->cmd == WRITE)	{		(void) memcpy (addr, CURRENT->buffer, len);// 如果是讀命令(READ),則將addr 開始的內容復制到請求項中緩沖區(qū)中,長度為len 字節(jié)。	}	else if (CURRENT->cmd == READ)	{		(void) memcpy (CURRENT->buffer, addr, len);// 否則顯示命令不存在,死機。	}	else		panic ("unknown ramdisk-command");// 請求項成功后處理,置更新標志。并繼續(xù)處理本設備的下一請求項。	end_request (1);	goto repeat;}/* 返回內存虛擬盤ramdisk 所需的內存量 */// 虛擬盤初始化函數(shù)。確定虛擬盤在內存中的起始地址,長度。并對整個虛擬盤區(qū)清零。longrd_init (long mem_start, int length){	int i;	char *cp;	blk_dev[MAJOR_NR].request_fn = DEVICE_REQUEST;	// do_rd_request()。	rd_start = (char *) mem_start;	rd_length = length;	cp = rd_start;	for (i = 0; i < length; i++)		*cp++ = '\0';	return (length);}/** 如果根文件系統(tǒng)設備(root device)是ramdisk 的話,則嘗試加載它。root device 原先是指向* 軟盤的,我們將它改成指向ramdisk。*///// 加載根文件系統(tǒng)到ramdisk。voidrd_load (void){	struct buffer_head *bh;	struct super_block s;	int block = 256;		/* Start at block 256 */	int i = 1;	int nblocks;	char *cp;			/* Move pointer */	if (!rd_length)		// 如果ramdisk 的長度為零,則退出。		return;	printk ("Ram disk: %d bytes, starting at 0x%x\n", rd_length, (int) rd_start);	// 顯示ramdisk 的大小以及內存起始位置。	if (MAJOR (ROOT_DEV) != 2)	// 如果此時根文件設備不是軟盤,則退出。		return;// 讀軟盤塊256+1,256,256+2。breada()用于讀取指定的數(shù)據(jù)塊,并標出還需要讀的塊,然后返回// 含有數(shù)據(jù)塊的緩沖區(qū)指針。如果返回NULL,則表示數(shù)據(jù)塊不可讀(fs/buffer.c,322)。// 這里block+1 是指磁盤上的超級塊。	bh = breada (ROOT_DEV, block + 1, block, block + 2, -1);	if (!bh)	{		printk ("Disk error while looking for ramdisk!\n");		return;	}// 將s 指向緩沖區(qū)中的磁盤超級塊。(d_super_block 磁盤中超級塊結構)。	*((struct d_super_block *) &s) = *((struct d_super_block *) bh->b_data);	brelse (bh);			// [?? 為什么數(shù)據(jù)沒有復制就立刻釋放呢?]	if (s.s_magic != SUPER_MAGIC)	// 如果超級塊中魔數(shù)不對,則說明不是minix 文件系統(tǒng)。		return;/* 磁盤中沒有ramdisk 映像文件,退出執(zhí)行通常的軟盤引導 */// 塊數(shù) = 邏輯塊數(shù)(區(qū)段數(shù)) * 2^(每區(qū)段塊數(shù)的次方)。// 如果數(shù)據(jù)塊數(shù)大于內存中虛擬盤所能容納的塊數(shù),則不能加載,顯示出錯信息并返回。否則顯示// 加載數(shù)據(jù)塊信息。	nblocks = s.s_nzones << s.s_log_zone_size;	if (nblocks > (rd_length >> BLOCK_SIZE_BITS))	{		printk ("Ram disk image too big! (%d blocks, %d avail)\n",				nblocks, rd_length >> BLOCK_SIZE_BITS);		return;	}	printk ("Loading %d bytes into ram disk... 0000k",	nblocks << BLOCK_SIZE_BITS);// cp 指向虛擬盤起始處,然后將磁盤上的根文件系統(tǒng)映象文件復制到虛擬盤上。	cp = rd_start;	while (nblocks)	{		if (nblocks > 2)		// 如果需讀取的塊數(shù)多于3 快則采用超前預讀方式讀數(shù)據(jù)塊。			bh = breada (ROOT_DEV, block, block + 1, block + 2, -1);		else			// 否則就單塊讀取。			bh = bread (ROOT_DEV, block);		if (!bh)		{			printk ("I/O error on block %d, aborting load\n", block);			return;		}		(void) memcpy (cp, bh->b_data, BLOCK_SIZE);	// 將緩沖區(qū)中的數(shù)據(jù)復制到cp 處。		brelse (bh);		// 釋放緩沖區(qū)。		printk ("\010\010\010\010\010%4dk", i);	// 打印加載塊計數(shù)值。		cp += BLOCK_SIZE;		// 虛擬盤指針前移。		block++;		nblocks--;		i++;	}	printk ("\010\010\010\010\010done \n");	ROOT_DEV = 0x0101;		// 修改ROOT_DEV 使其指向虛擬盤ramdisk。}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
1000精品久久久久久久久| 国内成人自拍视频| 国产精品一区二区视频| 欧美亚洲综合另类| 国产精品国产三级国产a| 久久国产尿小便嘘嘘尿| 欧美日韩国产综合久久 | 成人激情黄色小说| 欧美一区二区高清| 一区二区三区不卡视频| 成人午夜激情影院| 国产欧美一区二区精品婷婷| 日本中文字幕不卡| 欧美剧情电影在线观看完整版免费励志电影 | 99精品久久只有精品| 亚洲精品一区二区三区香蕉| 日韩影视精彩在线| 7777精品久久久大香线蕉| 亚洲欧美aⅴ...| 色综合一区二区三区| 亚洲欧美一区二区视频| av成人老司机| ●精品国产综合乱码久久久久| 国产传媒久久文化传媒| 久久综合中文字幕| 国产主播一区二区| 欧美国产成人精品| av在线一区二区三区| 国产精品久久综合| 色一情一乱一乱一91av| 亚洲综合一区在线| 欧美日韩专区在线| 美女视频网站黄色亚洲| 久久亚洲综合色| 国产999精品久久| 亚洲日本成人在线观看| 色婷婷香蕉在线一区二区| 亚洲精品成人悠悠色影视| 91国产免费观看| 视频精品一区二区| 精品噜噜噜噜久久久久久久久试看| 喷白浆一区二区| 久久先锋资源网| 9久草视频在线视频精品| 亚洲视频在线观看一区| 欧美日韩在线不卡| 青青草97国产精品免费观看无弹窗版| 欧美一卡二卡在线| 国产成人日日夜夜| 一区二区三区四区视频精品免费| 欧美精三区欧美精三区| 激情丁香综合五月| 亚洲欧美日韩系列| 日韩视频免费直播| 成人免费高清视频在线观看| 中文字幕亚洲欧美在线不卡| 欧美高清视频在线高清观看mv色露露十八 | 欧美高清视频www夜色资源网| 午夜不卡av免费| 欧美精彩视频一区二区三区| 91老司机福利 在线| 蜜桃av一区二区三区| 国产精品久久久久天堂| 欧美女孩性生活视频| 国产美女一区二区三区| 一区二区三区四区亚洲| 精品三级av在线| 色综合网站在线| 国产中文字幕精品| 亚洲成国产人片在线观看| 国产视频一区二区在线| 欧美理论电影在线| k8久久久一区二区三区| 美女www一区二区| 国产精品久久久久永久免费观看 | 欧美亚洲高清一区二区三区不卡| 六月丁香婷婷色狠狠久久| 亚洲视频在线一区观看| xnxx国产精品| 在线综合亚洲欧美在线视频| thepron国产精品| 国模一区二区三区白浆| 香蕉加勒比综合久久| 中文字幕人成不卡一区| 精品久久久久久久久久久久包黑料| 北条麻妃一区二区三区| 黄页视频在线91| 日本系列欧美系列| 一区二区不卡在线视频 午夜欧美不卡在| 欧美成人video| 欧美嫩在线观看| 欧美亚洲日本一区| 色哟哟国产精品| 91在线观看污| 成人va在线观看| 久久成人18免费观看| 性做久久久久久| 亚洲成va人在线观看| 一区二区久久久久| 一二三四社区欧美黄| 亚洲欧美日韩国产综合在线| 国产精品久久久久天堂| 最新国产成人在线观看| 国产精品免费网站在线观看| 久久精品人人做人人综合| 久久久精品影视| 久久久蜜桃精品| 国产无人区一区二区三区| 国产三级三级三级精品8ⅰ区| 日韩欧美激情四射| 精品国产一区二区三区久久影院| 91精品国产全国免费观看| 欧美一区二区三区视频在线| 91精品免费在线| 91精品国产乱| 精品99一区二区| 国产亚洲欧美日韩俺去了| 久久综合色之久久综合| 久久精品视频一区| 中文字幕一区二| 亚洲高清在线视频| 男女男精品视频| 国产精品66部| 色综合天天综合网天天狠天天| 91黄色在线观看| 欧美精品tushy高清| 精品欧美久久久| 国产精品麻豆久久久| 亚洲精品久久久久久国产精华液| 亚洲午夜久久久久久久久久久| 亚洲电影一区二区三区| 奇米影视一区二区三区| 国产一区二区电影| 国产aⅴ综合色| 日本久久精品电影| 欧美大胆一级视频| 国产精品嫩草影院com| 亚洲妇女屁股眼交7| 精品在线观看视频| 色综合久久久网| 日韩亚洲欧美一区二区三区| 久久久www成人免费无遮挡大片| 中文字幕在线不卡一区| 日韩影院精彩在线| www.亚洲免费av| 日韩欧美专区在线| 中文字幕一区二区三区视频| 日韩精品久久理论片| 东方aⅴ免费观看久久av| 欧美日韩免费观看一区二区三区 | 久久综合九色综合欧美就去吻| 中文字幕免费不卡| 午夜精品久久久久久久| 国产成人亚洲综合a∨婷婷| 欧美私人免费视频| 国产婷婷色一区二区三区 | 国产精品资源站在线| 91福利在线免费观看| 欧美精品一区二| 亚洲一区二区三区视频在线播放| 黄色精品一二区| 欧美人与禽zozo性伦| 国产精品国产精品国产专区不片 | 欧美不卡在线视频| 一区二区三区加勒比av| 国产白丝网站精品污在线入口| 欧美乱妇15p| 亚洲精品成人天堂一二三| 国产成人av电影免费在线观看| 欧美精三区欧美精三区| 亚洲欧美视频一区| 粉嫩欧美一区二区三区高清影视| 欧美一区二区视频在线观看2020 | 夜夜亚洲天天久久| 国产一区不卡视频| 欧美精品免费视频| 亚洲一区在线电影| 91麻豆成人久久精品二区三区| 日本一区免费视频| 国产精品88av| 久久久久久久一区| 国产专区综合网| 精品日韩av一区二区| 日韩av成人高清| 欧美电影在线免费观看| 亚洲成人av一区二区| 欧美性生活一区| 亚洲一区二区精品久久av| 色婷婷精品大在线视频| 亚洲美女区一区| 91在线视频观看| 亚洲免费观看高清| 色婷婷av一区二区三区软件| 中文字幕在线观看不卡视频| 丁香啪啪综合成人亚洲小说| 国产欧美日韩精品在线| 丁香亚洲综合激情啪啪综合| 国产视频一区二区在线观看| 成人免费电影视频| 国产精品不卡视频|