?? filesys.h
字號:
#define NULL 0
#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 /* must be power of 2 */
#define USERNUM 10
#define DINODESIZ 32
/* filsys */
#define DINODEBLK 32
#define FILEBLK 512
#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 /* user */
#define UDIWRITE 00002
#define UDIEXICUTE 00004
#define GDIREAD 00010 /*group */
#define GDIWRITE 00020
#define GDIEXICUTE 00040
#define ODIREAD 00100 /*otfier*/
#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 00004
/* error */
#define DISKFULL 65535
/* fseek origin */
#define SEEK_SET 0
/*文件系統 數據結構*/
struct inode{
struct inode *i_forw;
struct inode *i_back;
char i_flag;
unsigned int i_ino; /*磁盤i節點標志*/
unsigned int i_count; /*引用計數*/
unsigned short di_number; /*關聯文件數。當為0時,則刪除該文件*/
unsigned short di_mode; /*存取權限*/
unsigned short di_uid;
unsigned short di_gid;
unsigned int di_size; /*文件大小*/
unsigned short di_addr[NADDR]; /*物理塊號*/
};
struct dinode{
unsigned short di_number; /*關聯文件數*/
unsigned short di_mode; /*存取權限*/
unsigned short di_uid;
unsigned short di_gid;
unsigned int di_size; /*文件大小*/
unsigned short di_addr[NADDR]; /*物理塊號*/
};
struct direct{
char d_name[DIRSIZ];
unsigned short d_ino;
};
struct filsys{
unsigned short s_isize; /* i節點塊塊數*/
unsigned long s_fsize; /* 數據塊塊數 */
unsigned int s_nfree; /* 空閑塊 */
unsigned short s_pfree; /* 空閑塊指針 */
unsigned int s_free[NICFREE]; /* 空閑塊堆棧 */
unsigned int s_ninode; /* number of free inode in s_inode*/
unsigned short s_pinode; /* pointer of the sinode */
unsigned int s_inode[NICINOD]; /* 空閑i節點數組 */
unsigned int s_rinode; /* remember inode */
char s_fmod; /*超級塊修改標志*/
};
struct pwd{
unsigned short p_uid;
unsigned short p_gid;
char password [PWDSIZ];
};
struct dir{
struct direct direct[DIRNUM];
int size; /* 當前目錄大小 */
};
struct hinode{
struct inode *i_forw; /* hash表指針*/
};
struct file{
char f_flag; /*文件操作標志*/
unsigned int f_count; /*引用計數*/
struct inode *f_inode; /*指向內存i節點*/
unsigned long f_off; /*read/write characterpointer*/
};
struct user{
unsigned short u_default_mode;
unsigned short u_uid;
unsigned short u_gid;
unsigned short u_ofile[NOFILE]; /*用戶打開文件表*/
/*system open file pointer number*/
};
/*下為全局變量*/
extern struct hinode hinode[NHINO];
extern struct dir dir; /* 當前目錄(在內存中全部讀入) */
extern struct file sys_ofile[SYSOPENFILE];
extern struct filsys filsys; /* 內存中的超級塊 */
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,file_block;
/* 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 dirlt();
extern mkdir();
extern chdir();
extern unsigned short open();
extern creat();
extern unsigned int read();
extern unsigned int write();
extern int login();
extern logout();
extern install();
extern format();
extern close();
extern halt();
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -