<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 對ROMFS文件系統的分析和改進(jìn)

對ROMFS文件系統的分析和改進(jìn)

作者: 時(shí)間:2012-03-26 來(lái)源:網(wǎng)絡(luò ) 收藏

3.的主要數據結構

的數據結構比較簡(jiǎn)單,主要有結構和文件結構兩種數據結構。

結構如下:

struct romfs_super_block {

__u32 word0;

__u32 word1;

__u32 size;

__u32 checksum;

char name[0]; /* volume name */

};

該結構用于識別整個(gè)ROMFS,大小為512字節,word0初始值為'-','r','o','m',word1初始值為 '-','1','f','s',通過(guò)這兩個(gè)字操作系統確定這是一個(gè)ROMFS文件系統。size字段用于記錄整個(gè)文件系統的大小,理論上ROMFS大小最多可以達到4G。checksum是前512字節的校驗和,用于確認整個(gè)文件系統結構數據的正確性。前面4個(gè)字段占用了16字節,剩下的都可以用作文件系統的卷名,如果整個(gè)首部不足512字節便用0填充,以保證首部符合16字節對齊的規則。

ROMFS的文件結構如下:

struct romfs_inode {

__u32 next; /* low 4 bits see ROMFH_ */

__u32 spec;

__u32 size;

__u32 checksum;

char name[0];

};

next 字段是下一個(gè)文件的偏移地址,該地址的后4位是保留的,用于記錄文件模式信息,其中前兩位為文件類(lèi)型,后兩位則標識該文件是否為可執行文件。因此 ROMFS用于文件尋址的字段實(shí)際上只有28bit,所以ROMFS中文件大小不能超過(guò)256M。spec字段用于標識該文件類(lèi)型。目前ROMFS支持的文件類(lèi)型包括普通文件,目錄文件,符號鏈接,塊設備和字符設備文件。size是文件大小,checksum是校驗和,校驗內容包括文件名,填充字段。 name是文件名首地址,文件名長(cháng)度必須保證16字節對齊,不足的部分用可以0填充。

4.ROMFS的實(shí)現

在Linux系統中定義一個(gè)文件系統首先要定義相應的file_system_type以及讀取超級塊的函數。具體到ROMFS本身,這兩個(gè)對象分別是romfs_fs_type和romfs_read_super,通過(guò)宏DECLARE_FSTYPE_DEV來(lái)實(shí)現對romfs_fs_type的定義以及初始化工作。此外還需要實(shí)現對目錄,文件的讀寫(xiě)操作。

在Linux對ROMFS的實(shí)現中,比較重要的數據結構如下:

//超級塊操作表

static struct super_operations romfs_ops = {

read_inode: romfs_read_inode,

statfs: romfs_statfs,};

//頁(yè)操作表

static struct address_space_operations romfs_aops = {

readpage: romfs_readpage};

//常規文件操作表

static struct file_operations romfs_dir_operations = {

read: generic_read_dir,

readdir: romfs_readdir,};

//索引節點(diǎn)操作表

static struct inode_operations romfs_dir_inode_operations = {

lookup: romfs_lookup,};



關(guān)鍵詞: ROMFS 文件系統

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>