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

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

?? inode.c

?? 帶中文注釋的Linux+0.11+源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/** linux/fs/inode.c** (C) 1991 Linus Torvalds*/#include <string.h>		// 字符串頭文件。主要定義了一些有關(guān)字符串操作的嵌入函數(shù)。#include <sys/stat.h>		// 文件狀態(tài)頭文件。含有文件或文件系統(tǒng)狀態(tài)結(jié)構(gòu)stat{}和常量。#include <linux/sched.h>	// 調(diào)度程序頭文件,定義了任務(wù)結(jié)構(gòu)task_struct、初始任務(wù)0 的數(shù)據(jù),// 還有一些有關(guān)描述符參數(shù)設(shè)置和獲取的嵌入式匯編函數(shù)宏語句。#include <linux/kernel.h>	// 內(nèi)核頭文件。含有一些內(nèi)核常用函數(shù)的原形定義。#include <linux/mm.h>		// 內(nèi)存管理頭文件。含有頁面大小定義和一些頁面釋放函數(shù)原型。#include <asm/system.h>		// 系統(tǒng)頭文件。定義了設(shè)置或修改描述符/中斷門等的嵌入式匯編宏。struct m_inode inode_table[NR_INODE] = { {0,}, };	// 內(nèi)存中i 節(jié)點(diǎn)表(NR_INODE=32 項(xiàng))。static void read_inode (struct m_inode *inode);static void write_inode (struct m_inode *inode);//// 等待指定的i 節(jié)點(diǎn)可用。// 如果i 節(jié)點(diǎn)已被鎖定,則將當(dāng)前任務(wù)置為不可中斷的等待狀態(tài)。直到該i 節(jié)點(diǎn)解鎖。static inline voidwait_on_inode (struct m_inode *inode){  cli ();  while (inode->i_lock)    sleep_on (&inode->i_wait);  sti ();}//// 對(duì)指定的i 節(jié)點(diǎn)上鎖(鎖定指定的i 節(jié)點(diǎn))。// 如果i 節(jié)點(diǎn)已被鎖定,則將當(dāng)前任務(wù)置為不可中斷的等待狀態(tài)。直到該i 節(jié)點(diǎn)解鎖,然后對(duì)其上鎖。static inline voidlock_inode (struct m_inode *inode){  cli ();  while (inode->i_lock)    sleep_on (&inode->i_wait);  inode->i_lock = 1;		// 置鎖定標(biāo)志。  sti ();}//// 對(duì)指定的i 節(jié)點(diǎn)解鎖。// 復(fù)位i 節(jié)點(diǎn)的鎖定標(biāo)志,并明確地喚醒等待此i 節(jié)點(diǎn)的進(jìn)程。static inline voidunlock_inode (struct m_inode *inode){  inode->i_lock = 0;  wake_up (&inode->i_wait);}//// 釋放內(nèi)存中設(shè)備dev 的所有i 節(jié)點(diǎn)。// 掃描內(nèi)存中的i 節(jié)點(diǎn)表數(shù)組,如果是指定設(shè)備使用的i 節(jié)點(diǎn)就釋放之。voidinvalidate_inodes (int dev){  int i;  struct m_inode *inode;  inode = 0 + inode_table;	// 讓指針首先指向i 節(jié)點(diǎn)表指針數(shù)組首項(xiàng)。  for (i = 0; i < NR_INODE; i++, inode++)    {				// 掃描i 節(jié)點(diǎn)表指針數(shù)組中的所有i 節(jié)點(diǎn)。      wait_on_inode (inode);	// 等待該i 節(jié)點(diǎn)可用(解鎖)。      if (inode->i_dev == dev)	{			// 如果是指定設(shè)備的i 節(jié)點(diǎn),則	  if (inode->i_count)	// 如果其引用數(shù)不為0,則顯示出錯(cuò)警告;	    printk ("inode in use on removed disk\n\r");	  inode->i_dev = inode->i_dirt = 0;	// 釋放該i 節(jié)點(diǎn)(置設(shè)備號(hào)為0 等)。	}    }}//// 同步所有i 節(jié)點(diǎn)。// 同步內(nèi)存與設(shè)備上的所有i 節(jié)點(diǎn)信息。voidsync_inodes (void){  int i;  struct m_inode *inode;  inode = 0 + inode_table;	// 讓指針首先指向i 節(jié)點(diǎn)表指針數(shù)組首項(xiàng)。  for (i = 0; i < NR_INODE; i++, inode++)    {				// 掃描i 節(jié)點(diǎn)表指針數(shù)組。      wait_on_inode (inode);	// 等待該i 節(jié)點(diǎn)可用(解鎖)。      if (inode->i_dirt && !inode->i_pipe)	// 如果該i 節(jié)點(diǎn)已修改且不是管道節(jié)點(diǎn),	write_inode (inode);	// 則寫盤。    }}//// 文件數(shù)據(jù)塊映射到盤塊的處理操作。(block 位圖處理函數(shù),bmap - block map)// 參數(shù):inode – 文件的i 節(jié)點(diǎn);block – 文件中的數(shù)據(jù)塊號(hào);create - 創(chuàng)建標(biāo)志。// 如果創(chuàng)建標(biāo)志置位,則在對(duì)應(yīng)邏輯塊不存在時(shí)就申請(qǐng)新磁盤塊。// 返回block 數(shù)據(jù)塊對(duì)應(yīng)在設(shè)備上的邏輯塊號(hào)(盤塊號(hào))。static int_bmap (struct m_inode *inode, int block, int create){  struct buffer_head *bh;  int i;// 如果塊號(hào)小于0,則死機(jī)。  if (block < 0)    panic ("_bmap: block<0");// 如果塊號(hào)大于直接塊數(shù) + 間接塊數(shù) + 二次間接塊數(shù),超出文件系統(tǒng)表示范圍,則死機(jī)。  if (block >= 7 + 512 + 512 * 512)    panic ("_bmap: block>big");// 如果該塊號(hào)小于7,則使用直接塊表示。  if (block < 7)    {// 如果創(chuàng)建標(biāo)志置位,并且i 節(jié)點(diǎn)中對(duì)應(yīng)該塊的邏輯塊(區(qū)段)字段為0,則向相應(yīng)設(shè)備申請(qǐng)一磁盤// 塊(邏輯塊,區(qū)塊),并將盤上邏輯塊號(hào)(盤塊號(hào))填入邏輯塊字段中。然后設(shè)置i 節(jié)點(diǎn)修改時(shí)間,// 置i 節(jié)點(diǎn)已修改標(biāo)志。最后返回邏輯塊號(hào)。      if (create && !inode->i_zone[block])	if (inode->i_zone[block] = new_block (inode->i_dev))	  {	    inode->i_ctime = CURRENT_TIME;	    inode->i_dirt = 1;	  }      return inode->i_zone[block];    }// 如果該塊號(hào)>=7,并且小于7+512,則說明是一次間接塊。下面對(duì)一次間接塊進(jìn)行處理。  block -= 7;  if (block < 512)    {// 如果是創(chuàng)建,并且該i 節(jié)點(diǎn)中對(duì)應(yīng)間接塊字段為0,表明文件是首次使用間接塊,則需申請(qǐng)// 一磁盤塊用于存放間接塊信息,并將此實(shí)際磁盤塊號(hào)填入間接塊字段中。然后設(shè)置i 節(jié)點(diǎn)// 已修改標(biāo)志和修改時(shí)間。      if (create && !inode->i_zone[7])	if (inode->i_zone[7] = new_block (inode->i_dev))	  {	    inode->i_dirt = 1;	    inode->i_ctime = CURRENT_TIME;	  }// 若此時(shí)i 節(jié)點(diǎn)間接塊字段中為0,表明申請(qǐng)磁盤塊失敗,返回0 退出。      if (!inode->i_zone[7])	return 0;// 讀取設(shè)備上的一次間接塊。      if (!(bh = bread (inode->i_dev, inode->i_zone[7])))	return 0;// 取該間接塊上第block 項(xiàng)中的邏輯塊號(hào)(盤塊號(hào))。      i = ((unsigned short *) (bh->b_data))[block];// 如果是創(chuàng)建并且間接塊的第block 項(xiàng)中的邏輯塊號(hào)為0 的話,則申請(qǐng)一磁盤塊(邏輯塊),并讓// 間接塊中的第block 項(xiàng)等于該新邏輯塊塊號(hào)。然后置位間接塊的已修改標(biāo)志。      if (create && !i)	if (i = new_block (inode->i_dev))	  {	    ((unsigned short *) (bh->b_data))[block] = i;	    bh->b_dirt = 1;	  }// 最后釋放該間接塊,返回磁盤上新申請(qǐng)的對(duì)應(yīng)block 的邏輯塊的塊號(hào)。      brelse (bh);      return i;    }// 程序運(yùn)行到此,表明數(shù)據(jù)塊是二次間接塊,處理過程與一次間接塊類似。下面是對(duì)二次間接塊的處理。// 將block 再減去間接塊所容納的塊數(shù)(512)。  block -= 512;// 如果是新創(chuàng)建并且i 節(jié)點(diǎn)的二次間接塊字段為0,則需申請(qǐng)一磁盤塊用于存放二次間接塊的一級(jí)塊// 信息,并將此實(shí)際磁盤塊號(hào)填入二次間接塊字段中。之后,置i 節(jié)點(diǎn)已修改編制和修改時(shí)間。  if (create && !inode->i_zone[8])    if (inode->i_zone[8] = new_block (inode->i_dev))      {	inode->i_dirt = 1;	inode->i_ctime = CURRENT_TIME;      }// 若此時(shí)i 節(jié)點(diǎn)二次間接塊字段為0,表明申請(qǐng)磁盤塊失敗,返回0 退出。  if (!inode->i_zone[8])    return 0;// 讀取該二次間接塊的一級(jí)塊。  if (!(bh = bread (inode->i_dev, inode->i_zone[8])))    return 0;// 取該二次間接塊的一級(jí)塊上第(block/512)項(xiàng)中的邏輯塊號(hào)。  i = ((unsigned short *) bh->b_data)[block >> 9];// 如果是創(chuàng)建并且二次間接塊的一級(jí)塊上第(block/512)項(xiàng)中的邏輯塊號(hào)為0 的話,則需申請(qǐng)一磁盤// 塊(邏輯塊)作為二次間接塊的二級(jí)塊,并讓二次間接塊的一級(jí)塊中第(block/512)項(xiàng)等于該二級(jí)// 塊的塊號(hào)。然后置位二次間接塊的一級(jí)塊已修改標(biāo)志。并釋放二次間接塊的一級(jí)塊。  if (create && !i)    if (i = new_block (inode->i_dev))      {	((unsigned short *) (bh->b_data))[block >> 9] = i;	bh->b_dirt = 1;      }  brelse (bh);// 如果二次間接塊的二級(jí)塊塊號(hào)為0,表示申請(qǐng)磁盤塊失敗,返回0 退出。  if (!i)    return 0;// 讀取二次間接塊的二級(jí)塊。  if (!(bh = bread (inode->i_dev, i)))    return 0;// 取該二級(jí)塊上第block 項(xiàng)中的邏輯塊號(hào)。(與上511 是為了限定block 值不超過511)  i = ((unsigned short *) bh->b_data)[block & 511];// 如果是創(chuàng)建并且二級(jí)塊的第block 項(xiàng)中的邏輯塊號(hào)為0 的話,則申請(qǐng)一磁盤塊(邏輯塊),作為// 最終存放數(shù)據(jù)信息的塊。并讓二級(jí)塊中的第block 項(xiàng)等于該新邏輯塊塊號(hào)(i)。然后置位二級(jí)塊的// 已修改標(biāo)志。  if (create && !i)    if (i = new_block (inode->i_dev))      {	((unsigned short *) (bh->b_data))[block & 511] = i;	bh->b_dirt = 1;      }// 最后釋放該二次間接塊的二級(jí)塊,返回磁盤上新申請(qǐng)的對(duì)應(yīng)block 的邏輯塊的塊號(hào)。  brelse (bh);  return i;}//// 根據(jù)i 節(jié)點(diǎn)信息取文件數(shù)據(jù)塊block 在設(shè)備上對(duì)應(yīng)的邏輯塊號(hào)。intbmap (struct m_inode *inode, int block){  return _bmap (inode, block, 0);}//// 創(chuàng)建文件數(shù)據(jù)塊block 在設(shè)備上對(duì)應(yīng)的邏輯塊,并返回設(shè)備上對(duì)應(yīng)的邏輯塊號(hào)。intcreate_block (struct m_inode *inode, int block){  return _bmap (inode, block, 1);}//// 釋放一個(gè)i 節(jié)點(diǎn)(回寫入設(shè)備)。voidiput (struct m_inode *inode){  if (!inode)    return;  wait_on_inode (inode);	// 等待inode 節(jié)點(diǎn)解鎖(如果已上鎖的話)。  if (!inode->i_count)    panic ("iput: trying to free free inode");// 如果是管道i 節(jié)點(diǎn),則喚醒等待該管道的進(jìn)程,引用次數(shù)減1,如果還有引用則返回。否則釋放// 管道占用的內(nèi)存頁面,并復(fù)位該節(jié)點(diǎn)的引用計(jì)數(shù)值、已修改標(biāo)志和管道標(biāo)志,并返回。// 對(duì)于pipe 節(jié)點(diǎn),inode->i_size 存放著物理內(nèi)存頁地址。參見get_pipe_inode(),228,234 行。  if (inode->i_pipe)    {      wake_up (&inode->i_wait);      if (--inode->i_count)	return;      free_page (inode->i_size);      inode->i_count = 0;      inode->i_dirt = 0;      inode->i_pipe = 0;      return;    }// 如果i 節(jié)點(diǎn)對(duì)應(yīng)的設(shè)備號(hào)=0,則將此節(jié)點(diǎn)的引用計(jì)數(shù)遞減1,返回。  if (!inode->i_dev)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费视频网站| 免费看精品久久片| 91麻豆精品国产91久久久资源速度 | 久久精品免费观看| 日韩精品一区二区三区视频在线观看 | 欧美一级夜夜爽| 一区二区三区免费| 91在线观看地址| 中文字幕亚洲视频| 91麻豆精品在线观看| 精品va天堂亚洲国产| 久久99精品网久久| 亚洲精品国产视频| 国产人妖乱国产精品人妖| 欧美女孩性生活视频| thepron国产精品| 国产乱人伦精品一区二区在线观看| 久久免费的精品国产v∧| 欧美亚洲国产bt| 91亚洲午夜精品久久久久久| 国产尤物一区二区| 青青草国产成人99久久| 亚洲精品乱码久久久久久| 久久亚洲精华国产精华液| 欧美日韩不卡在线| 欧美亚洲国产一区二区三区| av一区二区三区在线| 国产不卡视频一区二区三区| 精品在线视频一区| 奇米精品一区二区三区在线观看 | 91搞黄在线观看| 成人黄色免费短视频| 国产老女人精品毛片久久| 久久91精品国产91久久小草| 丝袜亚洲另类欧美综合| 亚洲成av人综合在线观看| 亚洲精品乱码久久久久久黑人| 国产精品婷婷午夜在线观看| 欧美第一区第二区| 精品久久免费看| 欧美精品一区二区精品网| 风间由美一区二区av101| 国产黄人亚洲片| 国产麻豆午夜三级精品| 韩国精品久久久| 国内成+人亚洲+欧美+综合在线| 美国一区二区三区在线播放| 老司机午夜精品| 久久精品72免费观看| 另类欧美日韩国产在线| 免费xxxx性欧美18vr| 日本不卡一区二区三区| 麻豆精品一区二区三区| 久久精品国产在热久久| 国产精品一二三四五| 成人精品国产一区二区4080| youjizz国产精品| 91麻豆精品在线观看| 欧美性生活一区| 欧美久久久久久久久中文字幕| 欧美精品一卡两卡| 欧美变态tickling挠脚心| 久久亚洲一区二区三区明星换脸| 久久精品999| 国产高清久久久久| 日韩欧美中文一区二区| 久久综合色综合88| 久久精品亚洲麻豆av一区二区| 日韩欧美一级在线播放| 91精品国产全国免费观看 | 国产目拍亚洲精品99久久精品| 欧美日韩亚洲国产综合| 日韩欧美一区二区久久婷婷| 奇米色一区二区三区四区| 久久aⅴ国产欧美74aaa| 大尺度一区二区| 欧美天天综合网| 日韩欧美aaaaaa| 中文av字幕一区| 亚洲一区二区三区中文字幕在线| 日韩va欧美va亚洲va久久| 国产91精品露脸国语对白| 欧美群妇大交群的观看方式| 日韩精品中午字幕| 亚洲视频小说图片| 麻豆一区二区三| av亚洲产国偷v产偷v自拍| 制服丝袜亚洲精品中文字幕| 日本一区二区视频在线观看| 亚洲成人动漫在线免费观看| 国产一区二区视频在线| 欧洲精品中文字幕| 国产日韩精品一区二区三区| 亚洲国产日韩综合久久精品| 麻豆国产欧美日韩综合精品二区 | 中文字幕日韩一区| 日本午夜精品视频在线观看| 9久草视频在线视频精品| 欧美成va人片在线观看| 一区二区三区小说| 国产成人精品亚洲777人妖| 欧美日韩情趣电影| 亚洲免费观看高清完整版在线| 午夜久久久久久久久久一区二区| 国产激情一区二区三区四区| 欧美日韩在线三级| **性色生活片久久毛片| 精品一区二区三区欧美| 欧美日韩一区二区欧美激情| 国产精品丝袜一区| 黑人巨大精品欧美黑白配亚洲| 欧美午夜不卡在线观看免费| 136国产福利精品导航| 国产美女视频91| 日韩精品中文字幕一区二区三区 | 精品国产免费人成在线观看| 亚洲综合色自拍一区| eeuss影院一区二区三区| xfplay精品久久| 日本美女一区二区| 在线观看91精品国产麻豆| 樱花影视一区二区| a在线欧美一区| 国产喷白浆一区二区三区| 国产毛片精品视频| 国产91综合网| 亚洲女性喷水在线观看一区| 九九精品一区二区| 欧美国产国产综合| 一本大道综合伊人精品热热| 一区二区三区视频在线看| 色呦呦日韩精品| 日本欧美一区二区在线观看| 亚洲精品在线观| 国产欧美精品区一区二区三区| 欧美一二三区精品| 国产69精品久久久久毛片| 欧美电影免费提供在线观看| 欧美aa在线视频| 欧美草草影院在线视频| 激情成人午夜视频| 国产欧美日本一区视频| 国产白丝精品91爽爽久久| 国产精品系列在线| 99re66热这里只有精品3直播 | 久久91精品国产91久久小草| 精品免费国产一区二区三区四区| 美女视频黄频大全不卡视频在线播放| 日韩精品一区二| 国产91对白在线观看九色| 亚洲色图制服丝袜| 欧美日韩dvd在线观看| 日韩av中文字幕一区二区三区| 欧美一卡二卡在线| 久久99精品国产91久久来源| 精品av久久707| 亚洲精品视频在线看| 91久久线看在观草草青青| 亚洲成人动漫在线免费观看| 色av成人天堂桃色av| 日本强好片久久久久久aaa| 日韩久久久精品| 国产在线不卡一卡二卡三卡四卡| 国产精品嫩草99a| 国产精品一色哟哟哟| 国产精品无遮挡| 在线国产电影不卡| 亚洲6080在线| 久久久久高清精品| 成人av免费在线播放| 亚洲一区二区三区四区在线免费观看| 欧美精品粉嫩高潮一区二区| 免费xxxx性欧美18vr| 国产精品不卡一区| 在线观看一区二区视频| 精品一区二区三区日韩| 日韩一区二区免费在线电影| 国产一区二区三区久久悠悠色av | 日韩午夜激情电影| 国内精品免费**视频| 亚洲欧美日韩国产综合在线| 欧美一区二区三区白人| 狠狠色综合色综合网络| 亚洲一区二区成人在线观看| 日韩一级完整毛片| 97久久精品人人做人人爽| 亚洲国产视频在线| 欧美成人bangbros| 欧美日韩一区二区在线视频| 美女视频网站黄色亚洲| 一区二区三区四区高清精品免费观看| 欧美日韩精品欧美日韩精品 | 亚洲福中文字幕伊人影院| 日韩精品一区二区三区视频| 色综合天天视频在线观看 | 亚洲丝袜另类动漫二区| 婷婷综合在线观看| 国产精品一区二区三区网站| 中文无字幕一区二区三区| 亚洲福利电影网|