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

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

?? ramdisk.c

?? linux完全注釋的源代碼。內核版本為0.11的linux kernel。
?? 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 社區中的著名人物。Linux 在世界范圍內的流行也有他很大的// 功勞,早在Linux 操作系統剛問世時,他就懷著極大的熱情為linux 的發展提供了maillist,并// 在北美洲地區最早設立了linux 的ftp 站點(tsx-11.mit.edu),而且至今仍然為廣大linux 用戶// 提供服務。他對linux 作出的最大貢獻之一是提出并實現了ext2 文件系統。該文件系統已成為// linux 世界中事實上的文件系統標準。最近他又推出了ext3 文件系統,大大提高了文件系統的// 穩定性和訪問效率。作為對他的推崇,第97 期(2002 年5 月)的linuxjournal 期刊將他作為// 了封面人物,并對他進行了采訪。目前,他為IBM linux 技術中心工作,并從事著有關LSB// (Linux Standard Base)等方面的工作。(他的主頁:http://thunk.org/tytso/)#include <string.h>		// 字符串頭文件。主要定義了一些有關字符串操作的嵌入函數。#include <linux/config.h>	// 內核配置頭文件。定義鍵盤語言和硬盤類型(HD_TYPE)可選項。#include <linux/sched.h>	// 調度程序頭文件,定義了任務結構task_struct、初始任務0 的數據,// 還有一些有關描述符參數設置和獲取的嵌入式匯編函數宏語句。#include <linux/fs.h>		// 文件系統頭文件。定義文件表結構(file,buffer_head,m_inode 等)。#include <linux/kernel.h>	// 內核頭文件。含有一些內核常用函數的原形定義。#include <asm/system.h>		// 系統頭文件。定義了設置或修改描述符/中斷門等的嵌入式匯編宏。#include <asm/segment.h>	// 段操作頭文件。定義了有關段寄存器操作的嵌入式匯編函數。#include <asm/memory.h>		// 內存拷貝頭文件。含有memcpy()嵌入式匯編宏函數。#define MAJOR_NR 1		// 內存主設備號是1。#include "blk.h"char *rd_start = 0;			// 虛擬盤在內存中的起始位置。在52 行初始化函數rd_init()中// 確定。參見(init/main.c,124)(縮寫rd_代表ramdisk_)。int rd_length = 0;		// 虛擬盤所占內存大?。ㄗ止潱?。// 執行虛擬盤(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 的起始扇區對應的內存起始位置和內存長度。// 其中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),則將請求項中緩沖區的內容復制到addr 處,長度為len 字節。	if (CURRENT->cmd == WRITE)	{		(void) memcpy (addr, CURRENT->buffer, len);// 如果是讀命令(READ),則將addr 開始的內容復制到請求項中緩沖區中,長度為len 字節。	}	else if (CURRENT->cmd == READ)	{		(void) memcpy (CURRENT->buffer, addr, len);// 否則顯示命令不存在,死機。	}	else		panic ("unknown ramdisk-command");// 請求項成功后處理,置更新標志。并繼續處理本設備的下一請求項。	end_request (1);	goto repeat;}/* 返回內存虛擬盤ramdisk 所需的內存量 */// 虛擬盤初始化函數。確定虛擬盤在內存中的起始地址,長度。并對整個虛擬盤區清零。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);}/** 如果根文件系統設備(root device)是ramdisk 的話,則嘗試加載它。root device 原先是指向* 軟盤的,我們將它改成指向ramdisk。*///// 加載根文件系統到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()用于讀取指定的數據塊,并標出還需要讀的塊,然后返回// 含有數據塊的緩沖區指針。如果返回NULL,則表示數據塊不可讀(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 指向緩沖區中的磁盤超級塊。(d_super_block 磁盤中超級塊結構)。	*((struct d_super_block *) &s) = *((struct d_super_block *) bh->b_data);	brelse (bh);			// [?? 為什么數據沒有復制就立刻釋放呢?]	if (s.s_magic != SUPER_MAGIC)	// 如果超級塊中魔數不對,則說明不是minix 文件系統。		return;/* 磁盤中沒有ramdisk 映像文件,退出執行通常的軟盤引導 */// 塊數 = 邏輯塊數(區段數) * 2^(每區段塊數的次方)。// 如果數據塊數大于內存中虛擬盤所能容納的塊數,則不能加載,顯示出錯信息并返回。否則顯示// 加載數據塊信息。	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 指向虛擬盤起始處,然后將磁盤上的根文件系統映象文件復制到虛擬盤上。	cp = rd_start;	while (nblocks)	{		if (nblocks > 2)		// 如果需讀取的塊數多于3 快則采用超前預讀方式讀數據塊。			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);	// 將緩沖區中的數據復制到cp 處。		brelse (bh);		// 釋放緩沖區。		printk ("\010\010\010\010\010%4dk", i);	// 打印加載塊計數值。		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一区二区三区免费野_久草精品视频
国产91精品精华液一区二区三区 | 国产制服丝袜一区| 亚洲一区二区三区小说| 国产精品美女视频| 国产精品色眯眯| 日本一区二区三级电影在线观看 | 日本美女视频一区二区| 午夜精品一区二区三区三上悠亚| 自拍偷拍国产精品| 国产精品久久久久久久久免费桃花| 国产日韩精品一区| 国产精品毛片无遮挡高清| 日本一区二区在线不卡| 欧美国产精品中文字幕| 国产精品欧美精品| 综合中文字幕亚洲| 一区二区三区加勒比av| 亚洲va韩国va欧美va精品| 欧美丰满少妇xxxbbb| 日韩精品中文字幕一区二区三区| 国产精品美女视频| 欧美综合一区二区三区| 色婷婷国产精品久久包臀| 国产精品系列在线播放| 久久国产精品第一页| 国产一区二区剧情av在线| 成人免费福利片| 不卡的电影网站| 色噜噜狠狠一区二区三区果冻| 欧美视频一区二区三区四区| 91精品国模一区二区三区| 久久先锋影音av| 国产精品乱码久久久久久| 亚洲精选免费视频| 日韩在线卡一卡二| 国产成a人亚洲| 欧美色爱综合网| 色呦呦国产精品| 成人午夜激情在线| 五月天欧美精品| 欧美性猛片aaaaaaa做受| 51午夜精品国产| 国产视频一区二区在线观看| 亚洲免费观看在线视频| 日本女优在线视频一区二区| 成人综合日日夜夜| 91麻豆精品国产91久久久久| 国产精品午夜电影| 日本va欧美va精品发布| 99re8在线精品视频免费播放| 7777精品伊人久久久大香线蕉完整版 | 欧美影院一区二区三区| 久久久综合激的五月天| 亚洲色欲色欲www| 韩国精品主播一区二区在线观看| 在线观看视频一区二区| 国产欧美精品区一区二区三区 | 亚洲色图一区二区| 韩国精品在线观看| 91精品久久久久久蜜臀| 亚洲精品ww久久久久久p站| 国产 日韩 欧美大片| 精品日韩一区二区三区| 日韩不卡一二三区| 欧美性感一区二区三区| 亚洲视频1区2区| 粉嫩13p一区二区三区| 欧美电影免费观看高清完整版在线 | 欧美亚洲自拍偷拍| 国产精品三级av| 高清久久久久久| 精品成人一区二区三区| 免费观看在线综合色| 欧美群妇大交群中文字幕| 亚洲综合小说图片| 91九色最新地址| 一区二区三区四区激情| 一本色道亚洲精品aⅴ| 亚洲欧美日韩系列| 一本一道久久a久久精品| 亚洲男女一区二区三区| 色综合天天综合给合国产| 中文字幕一区日韩精品欧美| 成年人网站91| 欧美丝袜丝交足nylons| 国产一区二区精品在线观看| 国产美女一区二区三区| 成人国产电影网| 日本最新不卡在线| 国产精品91一区二区| 久久久国产精品不卡| 国产成人精品三级| 国产性做久久久久久| 99视频热这里只有精品免费| 中文字幕制服丝袜成人av| av成人免费在线| 亚洲综合视频在线| 7777精品久久久大香线蕉| 蜜桃av一区二区三区| 久久久久久久久久久久电影| 国产高清在线精品| 自拍偷拍亚洲综合| 欧美一区二区视频在线观看2020| av成人免费在线观看| 洋洋av久久久久久久一区| 91极品视觉盛宴| 免费成人美女在线观看.| 国产三级欧美三级日产三级99| 99re视频这里只有精品| 午夜精品成人在线视频| 国产欧美1区2区3区| 欧美性xxxxxx少妇| 韩国v欧美v亚洲v日本v| 亚洲精品视频免费观看| 日韩欧美国产综合| 成人av资源在线观看| 日韩影院精彩在线| 国产欧美精品国产国产专区 | 精品国产三级电影在线观看| 成人免费高清在线观看| 丝袜亚洲另类欧美| 亚洲视频一二区| 日韩美一区二区三区| 欧美综合天天夜夜久久| 国产成人夜色高潮福利影视| 日韩精品国产精品| 夜夜精品视频一区二区| 久久久精品tv| 日韩丝袜美女视频| 在线观看欧美黄色| jlzzjlzz欧美大全| 国产一区二区在线观看视频| 亚洲最新视频在线观看| 国产精品国产自产拍高清av王其| 日韩三级在线观看| 欧美日韩大陆一区二区| 91网址在线看| jlzzjlzz亚洲日本少妇| 极品少妇xxxx精品少妇偷拍 | 日韩欧美成人一区| 欧美唯美清纯偷拍| 99久久精品国产一区| 国产精品一区2区| 韩国成人精品a∨在线观看| 男女男精品视频| 午夜欧美电影在线观看| 亚洲综合激情小说| 亚洲在线一区二区三区| 亚洲天堂av老司机| 国产精品久久久久久久久免费相片| 国产日韩欧美激情| 国产精品污网站| 中文字幕亚洲在| 日韩毛片视频在线看| 国产精品久久久久久妇女6080 | 老司机午夜精品99久久| 三级影片在线观看欧美日韩一区二区| 一区二区三区不卡视频在线观看 | 国产欧美日韩在线| 久久久噜噜噜久久人人看| 久久精品这里都是精品| 久久久99精品免费观看不卡| 久久这里只精品最新地址| 2014亚洲片线观看视频免费| 久久综合资源网| 国产精品理论在线观看| 国产精品不卡在线| 亚洲一区二区三区视频在线播放| 亚洲无线码一区二区三区| 偷拍自拍另类欧美| 激情欧美一区二区三区在线观看| 国产精品综合二区| 91色|porny| 欧美久久久久久蜜桃| 精品日本一线二线三线不卡| 亚洲欧美一区二区三区孕妇| 亚洲福利一区二区三区| 日韩va亚洲va欧美va久久| 成人午夜在线播放| 国产精品国产馆在线真实露脸| 制服.丝袜.亚洲.中文.综合| 欧美成人a∨高清免费观看| 国产亚洲欧美在线| 夜夜夜精品看看| 国内精品写真在线观看| 成人激情午夜影院| 777xxx欧美| 国产精品国产精品国产专区不蜜 | 亚洲男同性视频| 日本不卡一区二区三区| 精品一区二区三区免费| 成人久久久精品乱码一区二区三区| 99热这里都是精品| 欧美伦理电影网| 国产视频一区在线播放| 日韩av一区二| 99久久久久免费精品国产| 欧美久久一二区| 成人欧美一区二区三区白人| 久久综合综合久久综合|