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

📄 filesys.h

📁 操作系统实验,文件系统,c语言实现的
💻 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 + -