⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filsys.h

📁 LINUX 设计一个简单的二级文件系统
💻 H
字号:
#define FileMaxBlock 50
#define BlockSize	1024
#define IBlockNum	400
#define DBlockNum	600
#define NHINO 128

typedef struct TBMap {
	unsigned short usemap[49];
	unsigned int BAddr[49];
	unsigned short FBNum;
} BMap;

typedef struct TINode {
	struct TINode* iForw;
	struct TINode* iBack;
    unsigned int i_ino;
	unsigned short flag;	
	unsigned int Icount;	// 引用计数
	unsigned short di_number; 
	char type;				// 
	unsigned int Dino;		// 磁盘 I 节点号
	unsigned short mode;	// 存取权限
	unsigned int size;		// 文件大小
	unsigned int addr[FileMaxBlock];	// 物理块号
} INode;

typedef struct TDInode {
	unsigned short di_number;
	char type;				// 
	unsigned int no;		// I 节点号
	unsigned short mode;	// 存取权限
	unsigned int size;		// 文件大小
	unsigned int addr[FileMaxBlock];	// 物理块号
} DInode;

struct hinode {
	INode *iForw;
};

typedef struct TFile {
	unsigned int Dino;		// 对应的 inode
	char name[24];			// 文件名
} File;

struct SysOFile {
	char f_flag;
	unsigned int f_count;
	INode* f_inode;
	unsigned long f_off;
	int uid;
};

typedef struct TDirect {
	int size;
	File files[36];
} Direct;

typedef struct TUser {
	char usn[9];	// 用户名
	char pwd[9];	// 用户密码
	unsigned int Dino;	// 用户目录节点
} User;

typedef struct TMUser {
	User user;
	unsigned int CurDirInodeID;
	int OFileNum;
	int OFiles[10];
} MUser;

typedef struct TSuperBlock {
	unsigned int IBNum;		// i节点块块数
	unsigned int DBNum;		// 数据块块数
	unsigned int FBNum;			// 空闲块数
	unsigned int FBS[100];		// 空闲块堆栈
	unsigned short pFB;			// 空闲块指针

	unsigned int FINum;			// 空闲 i结点数
	unsigned int FIS[100];		// 空闲 i结点栈
	unsigned short pFI;			// 空闲 i结点指针
	char SysMod;				// 超级块修改标识
} SuperBlock;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -