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