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

📄 structure.h~

📁 模拟linux的ext3文件系统。采用位图法。用一个文件模拟硬盘。实现创建、删除目录、文件。读、写文件
💻 H~
字号:
#include <stdio.h>#include <string.h>#define BLOCK_BITMAP 512#define INODE_BITMAP 2*512#define INODE_TABLE  3*512#define DATA_BLOCK (512*514)#define MAX_LENGTH 512#define ROOT_INO  1#define DIR_ENTRIES_PER_BLOCK 16#define MAX_OPEN_FILE 16#define EXT2_NAME_LEN 25/***************************************************/typedef unsigned char u8;typedef unsigned short u16;typedef unsigned int u32;FILE *FS;/*************************************************/struct ext2_group_desc{       u8         bg_volume_name[16];       u16        bg_block_bitmap;       u16        bg_inode_bitmap;       u16        bg_inode_table;       u16        bg_free_blocks_count;       u16        bg_free_inodes_count;       u16        bg_used_dirs_count;       u8         bg_pad[4];};struct ext2_inode{  //64 bypes       u16        i_mode;       u16        i_blocks;       u32        i_size;       u32        i_atime;       u32        i_ctime;       u32        i_mtime;       u32        i_dtime;       u16        i_block[8];       u8         i_pad[24];};struct ext2_dir_entry{       u16           d_inode;       u16           d_length;       u8            d_name_len;       u8            d_file_type;       u8 	     name[EXT2_NAME_LEN+1];};struct user{	u8 username[10];	u8 passwd[10];};/*********************************************************/#ifdef MAINu16 file_open_table[MAX_OPEN_FILE];u16 last_alloc_inode;u16 last_alloc_block;u16 current_dir;u8 current_path[256];struct ext2_group_desc group_desc;#endif/*******************************************************/int init_FS();int init_memory();int update_group_desc(struct ext2_group_desc *);int reload_group_desc(struct ext2_group_desc *);int load_inode_entry(struct ext2_inode * ,u16);int update_inode_entry(struct ext2_inode *, u16);int load_block_entry(u8 *,u16);int update_block_entry(u8 *,u16);void free_ind(u16);void free_dind(u16);void free_blocks(struct ext2_inode *);void free_inode(u16);void free_block(u16);u16 test_inode(u16);u16 test_block(u16);int match(u16,u8 *,u8 *);void dir();u16 mkdir(u8*,u8*);u16 rmdir(u8 *,u8*);int pow(int,int);u16 new_inode();u16 new_block();u16 cd(u8 *);u16 create(u8 *,u8 *);u16 delete(u8 *,u8 *);void close(u16 *);u16 * open(u8 *,u8 *);u16 write(u16 *,u8 *,u8 *);u16 read(u16 *);u16 get_dir(u8 *);u16 search_name(struct ext2_inode *,u8 *,u16 *);u16 init_dir(struct ext2_inode *,u16,u16);u16 create_dir_entry(struct ext2_inode *,u8 *);u16 empty_dir(struct ext2_inode *);void print(struct ext2_inode *);void store(struct ext2_inode *,u8 *,u16 *,u16 *);

⌨️ 快捷键说明

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