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

📄 filesys.h

📁 基于UNIX6的文件系统模拟程序
💻 H
字号:
#define BLOCKSIZ 512#define SYSOPENFILE 40#define DIRNUM 128#define DIRSIZ 14#define PWDSIZ 12#define PWDNUM 32#define NOFILE 20#define NADDR 10#define NHINO 128 /*power of 2*/#define USERNUM 10#define DINODESIZ 32/* filsys */#define DINODEBLK 32#define FILEBLK 512//1024#define NICFREE 50#define NICINOD 50#define DINODESTART 2*BLOCKSIZ#define DATASTART (2+DINODEBLK)*BLOCKSIZ/* di_mode */#define DIEMPTY	00000#define DIFILE	01000#define DIDIR	02000#define UDIREAD	00001#define UDIWRITE	00002#define UDIEXICUTE	00004#define GDIREAD	00010#define GDIWRITE	00020#define GDIEXICUTE	00040#define ODIREAD	00100#define ODIWRITE	00200#define ODIEXICUTE	00400#define READ		1#define WRITE	2#define EXICUTE	3#define DEFAULTMODE 00777/* i_flag*/#define IUPDATE	00002/*s_fmod */#define SUPDATE	00001/* f_flag */#define FREAD	00001#define FWRITE	00002#define FAPPEND	00007/* erro */#define DISKFULL	65535/* fseek origin */#define SEEK_SET 	0		/* filesys struct*/struct inode{		struct inode *i_forw;		struct inode *i_back;		char i_flag;		unsigned int i_ino;/*inode flag*/		unsigned int i_count;/* reference count */		unsigned short di_number;/*the linked file,when it is 0,delete the file*/		unsigned short di_mode ; /* access authority */		unsigned short di_uid;		unsigned short di_gid;		unsigned short di_size; /* file size */		unsigned int di_addr[NADDR]; /* physical block number */		};struct dinode{		unsigned short di_number; /* linked file number */		unsigned short di_mode; /* access authority */		unsigned short di_uid;		unsigned short di_gid;		unsigned short di_size; /* file size */		unsigned int di_addr[NADDR]; /* physical */		};struct direct{		char d_name[DIRSIZ];		unsigned int d_ino;		};struct filsys{		unsigned short s_isize; /* inode blk number */		unsigned long s_fsize; /* data blk number */ 		unsigned int s_nfree; /* free blk */		unsigned short s_pfree; /* free blk pointer */		unsigned int s_free[NICFREE]; /* free blk stack */				unsigned int s_ninode; /* number of free inode in s_inode */		unsigned short s_pinode; /* pointer of the s_inode */		unsigned int s_inode[NICINOD]; /* free inode array */		unsigned int s_rinode; /*remember inode */		char s_fmod; /* supper blk Modifyed flag */		};struct pwd{		unsigned short p_uid;		unsigned short p_gid;		char password[PWDSIZ];		};struct dir{		struct direct direct[DIRNUM];		int size; /* the current directory size */	     };struct hinode{			struct inode *i_forw; /* hash table pointer */		};struct file {		char f_flag; /* file opratin flag */		unsigned int f_count; /* refference count */				struct inode *f_inode; /*point to the inode in memory */		unsigned long f_off; /* read/write character pointer */		};struct user {		unsigned short u_default_mode;		unsigned short u_uid;		unsigned short u_gid;		unsigned short u_ofile[NOFILE]; /* open file table by user*/		/* system open file pointer number */		};		/*global variable below */extern struct hinode hinode[NHINO];extern struct dir dir; /* the current direct(read all in memory) */extern struct file sys_ofile[SYSOPENFILE];extern struct filsys filsys; /* supper blk in memory */extern struct pwd pwd[PWDNUM];extern struct user user[USERNUM];extern FILE *fd; /* the file system column of all the system */extern struct inode *cur_path_inode;extern int user_id;/*proptype of the sub roution used in the file system */extern struct inode *iget();extern iput();extern unsigned int balloc();extern bfree();extern struct inode *ialloc();extern ifree();extern unsigned int namei();extern unsigned short iname();extern unsigned int access();extern _dir();extern mkdir();extern chdir();extern unsigned short open();extern creat();
extern del();extern unsigned int read();extern unsigned int write();
extern int seek();extern int login();
extern int getid();extern logout();extern install();extern format();extern close();extern halt();

/*commond line */

extern cmd_login();
extern cmd_ls();
extern cmd_cmd();
extern int Iscmd();

⌨️ 快捷键说明

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