📄 ext2_fs.inc
字号:
; $Id$; -----------------------------------------------------------------------; ; Copyright 1998-2005 H. Peter Anvin - All Rights Reserved;; This program is free software; you can redistribute it and/or modify; it under the terms of the GNU General Public License as published by; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge MA 02139,; USA; either version 2 of the License, or (at your option) any later; version; incorporated herein by reference.;; -----------------------------------------------------------------------;; ext2_fs.inc;; NASM include file for ext2fs data structures;%define EXT2_SUPER_MAGIC 0xEF53%define EXT2_GOOD_OLD_REV 0 ; The good old (original) format%define EXT2_DYNAMIC_REV 1 ; V2 format w/ dynamic inode sizes%define EXT2_GOOD_OLD_INODE_SIZE 128; Special inode numbers%define EXT2_BAD_INO 1 ; Bad blocks inode%define EXT2_ROOT_INO 2 ; Root inode%define EXT2_BOOT_LOADER_INO 5 ; Boot loader inode%define EXT2_UNDEL_DIR_INO 6 ; Undelete directory inode%define EXT3_RESIZE_INO 7 ; Reserved group descriptors inode%define EXT3_JOURNAL_INO 8 ; Journal inode; We're readonly, so we only care about incompat features.%define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001%define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002%define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004%define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008%define EXT2_FEATURE_INCOMPAT_META_BG 0x0010%define EXT2_FEATURE_INCOMPAT_ANY 0xffffffff%define EXT2_NDIR_BLOCKS 12%define EXT2_IND_BLOCK EXT2_NDIR_BLOCKS%define EXT2_DIND_BLOCK (EXT2_IND_BLOCK+1)%define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK+1)%define EXT2_N_BLOCKS (EXT2_TIND_BLOCK+1);; File types and file modes;%define S_IFDIR 0040000o ; Directory%define S_IFCHR 0020000o ; Character device%define S_IFBLK 0060000o ; Block device%define S_IFREG 0100000o ; Regular file%define S_IFIFO 0010000o ; FIFO%define S_IFLNK 0120000o ; Symbolic link%define S_IFSOCK 0140000o ; Socket%define S_IFSHIFT 12%define T_IFDIR (S_IFDIR >> S_IFSHIFT)%define T_IFCHR (S_IFCHR >> S_IFSHIFT)%define T_IFBLK (S_IFBLK >> S_IFSHIFT)%define T_IFREG (S_IFREG >> S_IFSHIFT)%define T_IFIFO (S_IFIFO >> S_IFSHIFT)%define T_IFLNK (S_IFLNK >> S_IFSHIFT)%define T_IFSOCK (S_IFSOCK >> S_IFSHIFT);; Structure definition for the ext2 superblock; struc ext2_super_blocks_inodes_count resd 1 ; Inodes count s_blocks_count resd 1 ; Blocks count s_r_blocks_count resd 1 ; Reserved blocks count s_free_blocks_count resd 1 ; Free blocks count s_free_inodes_count resd 1 ; Free inodes count s_first_data_block resd 1 ; First Data Block s_log_block_size resd 1 ; Block size s_log_frag_size resd 1 ; Fragment size s_blocks_per_group resd 1 ; # Blocks per group s_frags_per_group resd 1 ; # Fragments per group s_inodes_per_group resd 1 ; # Inodes per group s_mtime resd 1 ; Mount time s_wtime resd 1 ; Write time s_mnt_count resw 1 ; Mount count s_max_mnt_count resw 1 ; Maximal mount count s_magic resw 1 ; Magic signature s_state resw 1 ; File system state s_errors resw 1 ; Behaviour when detecting errors s_minor_rev_level resw 1 ; minor revision level s_lastcheck resd 1 ; time of last check s_checkinterval resd 1 ; max. time between checks s_creator_os resd 1 ; OS s_rev_level resd 1 ; Revision level s_def_resuid resw 1 ; Default uid for reserved blocks s_def_resgid resw 1 ; Default gid for reserved blocks s_first_ino resd 1 ; First non-reserved inode s_inode_size resw 1 ; size of inode structure s_block_group_nr resw 1 ; block group # of this superblock s_feature_compat resd 1 ; compatible feature set s_feature_incompat resd 1 ; incompatible feature set s_feature_ro_compat resd 1 ; readonly-compatible feature set s_uuid resb 16 ; 128-bit uuid for volume s_volume_name resb 16 ; volume name s_last_mounted resb 64 ; directory where last mounted s_algorithm_usage_bitmap resd 1 ; For compression s_prealloc_blocks resb 1 ; Nr of blocks to try to preallocates_prealloc_dir_blocks resb 1 ; Nr to preallocate for dirs s_padding1 resw 1s_reserved resd 204 ; Padding to the end of the block endstruc%ifndef DEPEND%if ext2_super_block_size != 1024%error "ext2_super_block definition bogus"%endif%endif;; Structure definition for the ext2 inode; struc ext2_inodei_mode resw 1 ; File mode i_uid resw 1 ; Owner Uid i_size resd 1 ; Size in bytes i_atime resd 1 ; Access time i_ctime resd 1 ; Creation time i_mtime resd 1 ; Modification time i_dtime resd 1 ; Deletion Time i_gid resw 1 ; Group Id i_links_count resw 1 ; Links count i_blocks resd 1 ; Blocks count i_flags resd 1 ; File flags l_i_reserved1 resd 1i_block resd EXT2_N_BLOCKS ; Pointer to blocksi_version resd 1 ; File version (for NFS) i_file_acl resd 1 ; File ACL i_dir_acl resd 1 ; Directory ACL i_faddr resd 1 ; Fragment address l_i_frag resb 1 ; Fragment number l_i_fsize resb 1 ; Fragment size i_pad1 resw 1l_i_reserved2 resd 2 endstruc%ifndef DEPEND%if ext2_inode_size != 128%error "ext2_inode definition bogus"%endif%endif;; Structure definition for ext2 block group descriptor; struc ext2_group_descbg_block_bitmap resd 1 ; Block bitmap blockbg_inode_bitmap resd 1 ; Inode bitmap blockbg_inode_table resd 1 ; Inode table blockbg_free_blocks_count resw 1 ; Free blocks countbg_free_inodes_count resw 1 ; Free inodes countbg_used_dirs_count resw 1 ; Used inodes countbg_pad resw 1bg_reserved resd 3 endstruc%ifndef DEPEND%if ext2_group_desc_size != 32%error "ext2_group_desc definition bogus"%endif%endif%define ext2_group_desc_lg2size 5;; Structure definition for ext2 directory entry; struc ext2_dir_entryd_inode resd 1 ; Inode numberd_rec_len resw 1 ; Directory entry lengthd_name_len resb 1 ; Name lengthd_file_type resb 1 ; File typed_name equ $ endstruc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -