📄 filesys.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 + -