xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 16KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-29
  • 語言: 其他
  • 標簽: inode.c??注釋??

資源簡介

linux內核系統下的ROMFS文件系統代碼(inode.c)即節點部分的注釋

資源截圖

代碼片段和文件信息

/*?
*?linux/fs/inode.c?
*?
*?(C)?1991?Linus?Torvalds?
*/??
??
#include??????//?字符串頭文件。主要定義了一些有關字符串操作的嵌入函數。???
#include????????//?文件狀態頭文件。含有文件或文件系統狀態結構stat{}和常量。???
??
#include?????//?調度程序頭文件,定義了任務結構task_struct、初始任務0?的數據,???
//?還有一些有關描述符參數設置和獲取的嵌入式匯編函數宏語句。???
#include????//?內核頭文件。含有一些內核常用函數的原形定義。???
#include????????//?內存管理頭文件。含有頁面大小定義和一些頁面釋放函數原型。???
#include??????//?系統頭文件。定義了設置或修改描述符/中斷門等的嵌入式匯編宏。???
??
struct?m_inode?inode_table[NR_INODE]?=?{?{0}?};???//?內存中i?節點表(NR_INODE=32?項)。???
??
static?void?read_inode?(struct?m_inode?*inode);??
static?void?write_inode?(struct?m_inode?*inode);??
??  /*?等待指定的i?節點可用?*/
//?如果i節點已被鎖定則將當前任務置為不可中斷的等待狀態。直到該i節點解鎖
static?inline?void?wait_on_inode?(struct?m_inode?*inode)??
{??
??cli?();??
??while?(inode->i_lock)??//?如果i?節點已被鎖定
????sleep_on?(&inode->i_wait);??//?不可中斷的等待狀態?
??sti?();??
}???
////?對指定的i節點上鎖鎖定指定的i節點???
//?如果i節點已被鎖定則將當前任務置為不可中斷的等待狀態。直到該i節點解鎖然后對其上鎖。
??  /*?對指定的i?節點上鎖?*/
static?inline?void?lock_inode?(struct?m_inode?*inode)??
{??
??cli?();??
??while?(inode->i_lock)??
????sleep_on?(&inode->i_wait);??
??inode->i_lock?=?1;?????//?置鎖定標志。???
??sti?();??
}??
?////?對指定的i節點解鎖????
//?復位i節點的鎖定標志并明確地喚醒等待此i節點的進程。
??  /*?對指定的i?節點解鎖?*/
static?inline?void?unlock_inode?(struct?m_inode?*inode)??
{??
??inode->i_lock?=?0;??//?復位i?節點的鎖定標志
??wake_up?(&inode->i_wait);??//?喚醒等待此i?節點的進程
}?????
////?釋放內存中設備dev的所有i節點。?????
//?掃描內存中的i節點表數組如果是指定設備使用的i節點就釋放之。
??  /*?釋放內存中設備dev?的所有i?節點?*/
void?invalidate_inodes?(int?dev)??
{??
??int?i;??
??struct?m_inode?*inode;??
??
??inode?=?0?+?inode_table;????//?讓指針首先指向i節點表指針數組首項
??for?(i?=?0;?i?????{?????????????????
??????wait_on_inode?(inode);?????//?等待該i節點可用(解鎖)?
??????if?(inode->i_dev?==?dev)???//?如果是指定設備的i節點則?
????{???????????
??????if?(inode->i_count)???????//?如果其引用數不為0則顯示出錯警告
????????printk?(“inode?in?use?on?removed?disk\n\r“);??
??????inode->i_dev?=?inode->i_dirt?=?0;???//?釋放該i節點(置設備號為0等)
????}??
????}??
}??
????////?同步所有i節點。?????//?同步內存與設備上的所有i節點信息。
??  /*?同步內存(inode數組)與設備上的所有i?節點信息?*/
void?sync_inodes?(void)??
{??
??int?i;??
??struct?m_inode?*inode;??
??
??inode?=?0?+?inode_table;?????//?讓指針首先指向i節點表指針數組首項
??for?(i?=?0;?i?????{??????????????
??????wait_on_inode?(inode);???????//?等待該i節點可用(解鎖)?
??????if?(inode->i_dirt?&&?!inode->i_pipe)??//?如果該i節點已修改且不是管道節點
????write_inode?(inode);??????//?寫盤
????}??
}??
?////?塊映射處理操作。(block位圖處理函數bmap?-?block?map)????
//?參數inode?-?i節點指針block?-?數據塊號create?-?創建標志????
//?如果創建標志置位則在對應邏輯塊不存在時就申請新磁盤塊????
//?返回block數據塊對應在設備上的邏輯塊號
???/*?文件數據塊映射到盤塊的處理操作,可能需要建立新的邏輯塊?*/
static?int?_bmap?(struct?m_inode?*inode?int?block?int?create)??
{???//?inode?文件的i?節點;block?(相對于文件而言)文件中的數據塊號;create?創建標志?
//?block是相對于文件而言,但是i_zone[block]則是相對于設備而言的。相對于文件的?
//?block可能不止i_zone數組大小,所以如果block的值大于7時,需要使用間接來尋址。?
//?如

評論

共有 條評論