fh.h中 buffer_head d_inode m_inode file super_block d_super_block dir_entry 结构体注释

struct buffer_head {

 char * b_data; /* pointer to data block (1024bytes)          */ //指针。

 unsigned long b_blocknr; /* block number                        */ // 块号。

 unsigned short b_dev; /* device (0 = free)                       */ // 数据源的设备号。

 unsigned char b_uptodate;                                 // 更新标志:表示数据是否已更新。

 unsigned char b_dirt;                                         //修改标志:0 未修改,1 已修改.

 unsigned char b_count;                                     // 使用的用户数。

 unsigned char b_lock;                                       // 缓冲区是否被锁定。

 struct task_struct * b_wait;                               // 指向等待该缓冲区解锁的任务。

 struct buffer_head * b_prev;                            // hash 队列上前一块(这四个指针用于缓冲区的管理)。

 struct buffer_head * b_next;                           // hash 队列上下一块。

 struct buffer_head * b_prev_free;                   // 空闲表上前一块。

 struct buffer_head * b_next_free;                   // 空闲表上下一块。

 };

 

// 磁盘上的索引节点(i 节点)数据结构。

struct d_inode {

unsigned shorti_mode;                    // 文件类型和属性(rwx 位)。

unsigned shorti_uid;                        // 用户id(文件拥有者标识符)。

unsigned longi_size;                        // 文件大小(字节数)。

unsigned longi_time;                       // 修改时间(自1970.1.1:0 算起,秒)。

unsigned chari_gid;                         // 组id(文件拥有者所在的组)。

unsigned chari_nlinks;                 // 链接数(多少个文件目录项指向该i 节点)。

unsigned shorti_zone[9];             // 直接(0-6)、间接(7)或双重间接(8)逻辑块号。

// zone 是区的意思,可译成区段,或逻辑块。

91 };

 

// 这是在内存中的i 节点结构。前7 项与d_inode 完全一样。

 struct m_inode {

unsigned shorti_mode;                            // 文件类型和属性(rwx 位)。

unsigned shorti_uid;                               // 用户id(文件拥有者标识符)。

unsigned longi_size;                               // 文件大小(字节数)。

unsigned longi_mtime;                           // 修改时间(自1970.1.1:0 算起,秒)。

unsigned chari_gid;                                // 组id(文件拥有者所在的组)。

unsigned chari_nlinks;                            // 文件目录项链接数。

unsigned shorti_zone[9];                    // 直接(0-6)、间接(7)或双重间接(8)逻辑块号。

structtask_struct * i_wait;                       // 等待该i 节点的进程。

unsigned longi_atime;                             // 最后访问时间。

unsigned longi_ctime;                              //i 节点自身修改时间。

unsigned shorti_dev;                               // i 节点所在的设备号。

unsigned shorti_num;                              // i 节点号。

unsigned shorti_count;                         // i 节点被使用的次数,0 表示该i 节点空闲。

unsigned chari_lock;                              // 锁定标志。

unsigned chari_dirt;                               // 已修改(脏)标志。

unsigned chari_pipe;                              // 管道标志。

unsigned chari_mount;                           // 安装标志。

unsigned chari_seek;                              // 搜寻标志(lseek 时)。

unsigned chari_update;                           // 更新标志。

};

// 文件结构(用于在文件句柄与i 节点之间建立关系)

struct file {

unsigned shortf_mode;  // 文件操作模式(RW 位)

unsigned shortf_flags;   // 文件打开和控制的标志。

unsigned shortf_count; // 对应文件句柄(文件描述符)数。

struct m_inode *f_inode;     // 指向对应i 节点。

off_t f_pos;                 // 文件位置(读写偏移值)。

};

 

// 内存中磁盘超级块结构。

struct super_block{

unsigned shorts_ninodes;          // 节点数。

unsigned shorts_nzones;           // 逻辑块数。

unsigned shorts_imap_blocks;    // i 节点位图所占用的数据块数。

unsigned shorts_zmap_blocks;   // 逻辑块位图所占用的数据块数。

unsigned shorts_firstdatazone;   // 第一个数据逻辑块号。

unsigned shorts_log_zone_size;  // log(数据块数/逻辑块)。(以2 为底)。

unsigned longs_max_size;         // 文件最大长度。

unsigned shorts_magic;            // 文件系统魔数。

struct buffer_head * s_imap[8];     // i 节点位图缓冲块指针数组(占用8 块,可表示64M)。

structbuffer_head * s_zmap[8];       // 逻辑块位图缓冲块指针数组(占用8 块)。

unsigned shorts_dev;          //超级块所在的设备号。

struct m_inode *s_isup;            // 被安装的文件系统根目录的i 节点。

struct m_inode *s_imount;        // 被安装到的i 节点。

unsigned longs_time;          // 修改时间。

structtask_struct * s_wait;        // 等待该超级块的进程。

unsigned chars_lock;          // 被锁定标志。

unsigned chars_rd_only;      // 只读标志。

 unsigned char s_dirt;          // 已修改(脏)标志。

};

 

// 磁盘上超级块结构。上面125-132 行完全一样。

structd_super_block {

unsigned shorts_ninodes;          // 节点数。

unsigned shorts_nzones;           // 逻辑块数。

unsigned shorts_imap_blocks;   // i 节点位图所占用的数据块数。

unsigned shorts_zmap_blocks;   // 逻辑块位图所占用的数据块数。

unsigned shorts_firstdatazone;   // 第一个数据逻辑块。

unsigned shorts_log_zone_size; // log(数据块数/逻辑块)。(以2 为底)。

unsigned longs_max_size;         // 文件最大长度。

unsigned shorts_magic;            // 文件系统魔数。

};

 

// 文件目录项结构。

struct dir_entry{

unsigned shortinode;     // i 节点。

charname[NAME_LEN];       // 文件名。

};

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值