📄 ul_inode.h
字号:
/*
* UNIX Like (UL)文件系统 inode 处理模块
*/
#pragma once
#include "UL_FileSys.h"
// i 节点数据结构中i_mode 字段的各标志位。
#define I_TYPE 0170000 // 指明i 节点类型。
#define I_DIRECTORY 0040000 // 是目录文件。
#define I_REGULAR 0100000 // 常规文件,不是目录文件或特殊文件。
#define I_BLOCK_SPECIAL 0060000 // 块设备特殊文件。
#define I_CHAR_SPECIAL 0020000 // 字符设备特殊文件。
#define I_NAMED_PIPE 0010000 // 命名管道。
#define I_SET_UID_BIT 0004000 // 在执行时设置有效用户id 类型。
#define I_SET_GID_BIT 0002000 // 在执行时设置有效组id 类型。
// 磁盘上的索引节点(i 节点)数据结构
struct d_inode
{
unsigned short i_mode; // 文件类型和属性(rwx 位)
unsigned short i_uid; // 用户id(文件拥有者标识符)
unsigned long i_size; // 文件大小(字节数)
unsigned long i_time; // 修改时间(自1970.1.1:0 算起,秒)
unsigned char i_gid; // 组id(文件拥有者所在的组)
unsigned char i_nlinks; // 链接数(多少个文件目录项指向该i 节点)
unsigned short i_zone[9]; // 直接(0-6),间接(7)或双重间接(8)逻辑块号
};
// 这是在内存中的i 节点结构前7 项与d_inode 完全一样
struct m_inode
{
unsigned short i_mode; // 文件类型和属性(rwx 位)
unsigned short i_uid; // 用户id(文件拥有者标识符)
unsigned long i_size; // 文件大小(字节数)
unsigned long i_mtime; // 修改时间(自1970.1.1:0 算起,秒)
unsigned char i_gid; // 组id(文件拥有者所在的组)
unsigned char i_nlinks; // 文件目录项链接数
unsigned short i_zone[9]; // 直接(0-6),间接(7)或双重间接(8)逻辑块号
struct task_struct *i_wait; // 等待该i 节点的进程
unsigned long i_atime; // 最后访问时间
unsigned long i_ctime; // i 节点自身修改时间
unsigned short i_dev; // i 节点所在的设备号
unsigned short i_num; // i 节点号
unsigned short i_count; // i 节点被使用的次数,0 表示该i 节点空闲
unsigned char i_lock; // 锁定标志
unsigned char i_dirt; // 已修改(脏)标志
unsigned char i_pipe; // 管道标志
unsigned char i_mount; // 安装标志
unsigned char i_seek; // 搜寻标志(lseek 时)
unsigned char i_update; // 更新标志
};
extern struct m_inode inode_table[NR_INODE]; // 定义i 节点表数组(32 项)
extern void sync_inodes (void);
extern void free_inode (struct m_inode *inode);
extern struct m_inode *new_inode (int dev);
extern struct m_inode *iget (int dev, int nr);
extern void iput (struct m_inode *inode);
extern int bmap (struct m_inode *inode, int block);
extern int create_block (struct m_inode *inode, int block);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -