?? filesys.h
字號:
/* #define NULL 0 */
#define FILENAMELEN 32
#define BLOCKSIZ 512
#define SYSOPENFILE 40
#define DIRNUM 32
#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 8
#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 hblock {
unsigned int hb_cur;
unsigned int hb_fowd;
unsigned int hb_back;
unsigned int hb_size;
unsigned short hb_pblock;
unsigned int hb_fblock[NICFREE-1];
unsigned short hb_bmap[NICFREE-1];
};
struct blockmap {
int fill[NICFREE-1];
};
struct filsys{
unsigned short s_isize; /* i節點塊塊數*/
unsigned long s_fsize; /* 數據塊塊數 */
unsigned int s_nfree; /* 總空閑塊 */
// unsigned short s_pfree; /* 空閑塊指針 */
// unsigned int s_free[NICFREE]; /* 空閑塊堆棧 */
struct hblock s_hblock;
// struct blockmap s_blockmap;
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 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 character pointer*/
};
struct user{
char u_name[6];// 用戶名
char password [PWDSIZ]; // 用戶密碼
//unsigned short u_dir_inode; //記訪問退出時錄目錄
unsigned short u_default_mode;//訪問權限
unsigned short u_uid;// 用戶標志
unsigned short u_gid;// 用戶組標志
unsigned short u_ofile[NOFILE];// 用戶打開表 //64b
};
/*struct user{
unsigned short u_default_mode;
unsigned short u_uid;
unsigned short u_gid;
unsigned short u_ofile[NOFILE]; /*用戶打開文件表*/
/* };
struct pwd{
unsigned short p_uid;
unsigned short p_gid;
char password [PWDSIZ];
};*/
/*下為全局變量*/
extern char cur_path[10][32];
extern unsigned short dir_lv;
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 int login(char*,char*);
extern void regist(int id);
extern install();
extern format();
extern close();
extern halt();
extern cat (char*);
extern vi (char*);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -