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

📄 ext.h

📁 上一个上传的有问题,这个是好的。visopsys包括系统内核和GUI的全部SOURCE code ,还包括一些基本的docs文档。里面src子目录对应所有SOURCE code.对于想研究操作系统的朋
💻 H
字号:
// //  Visopsys//  Copyright (C) 1998-2007 J. Andrew McLaughlin//  //  This library is free software; you can redistribute it and/or modify it//  under the terms of the GNU Lesser General Public License as published by//  the Free Software Foundation; either version 2.1 of the License, or (at//  your option) any later version.////  This library is distributed in the hope that it will be useful, but//  WITHOUT ANY WARRANTY; without even the implied warranty of//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser//  General Public License for more details.////  You should have received a copy of the GNU Lesser General Public License//  along with this library; if not, write to the Free Software Foundation,//  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.////  ext.h//// This file contains definitions and structures for using and manipulating// EXT2 and EXT3 filesystems in Visopsys.  The reference material for this// header can be found at: http://www.nongnu.org/ext2-doc/ext2.html#if !defined(_EXT_H)/*  The organisation of an ext2 file system on a floppy:  offset # of blocks description  -------- ----------- -----------  0                  1 boot record  -- block group 0 --  (1024 bytes)       1 superblock  2                  1 group descriptors  3                  1 block bitmap  4                  1 inode bitmap  5                 23 inode table  28              1412 data blocks  The organisation of a 20MB ext2 file system:  offset # of blocks description  -------- ----------- -----------  0                  1 boot record  -- block group 0 --  (1024 bytes)       1 superblock  2                  1 group descriptors  3                  1 block bitmap  4                  1 inode bitmap  5                214 inode table  219             7974 data blocks  -- block group 1 --  8193               1 superblock backup  8194               1 group descriptors backup  8195               1 block bitmap  8196               1 inode bitmap  8197             214 inode table  8408            7974 data blocks  -- block group 2 --  16385              1 block bitmap  16386              1 inode bitmap  16387            214 inode table  16601           3879 data blocks*/// Definitions// Superblock-related constants#define EXT_SUPERBLOCK_SECTOR    2#define EXT_MAGICNUMBER          0xEF53// EXT_ERRORS values for the 'errors' field in the superblock#define EXT_ERRORS_CONTINUE      1  // Continue as if nothing happened#define EXT_ERRORS_RO            2  // Remount read-only#define EXT_ERRORS_PANIC         3  // Cause a kernel panic#define EXT_ERRORS_DEFAULT       EXT_ERRORS_CONTINUE// EXT_OS: 32-bit identifier of the OS that created the file system for// the 'creator_os' field in the superblock#define EXT_OS_LINUX             0          // Linux#define EXT_OS_HURD              1          // Hurd#define EXT_OS_MASIX             2          // MASIX#define EXT_OS_FREEBSD           3          // FreeBSD#define EXT_OS_LITES4            4          // Lites#define EXT_OS_VISOPSYS          0xA600D05  // Visopsys// 32-bit revision level value for the 'rev_level' field in the superblock#define EXT_GOOD_OLD_REV         0  // Original format#define EXT_DYNAMIC_REV          1  // V2 format with dynamic inode sizes// Superblock flags#define EXT_ROCOMPAT_SPARSESUPER 0x01#define EXT_ROCOMPAT_LARGEFILE   0x02#define EXT_ROCOMPAT_BTREEDIR    0x04#define EXT_ROCOMPAT_ANY         0xffffffff// If the revision level (above) is EXT_GOOD_OLD_REV, here are a coupla// fixed values#define EXT_GOOD_OLD_FIRST_INODE 11#define EXT_GOOD_OLD_INODE_SIZE  128// File system states#define EXT_VALID_FS             1  // Unmounted cleanly#define EXT_ERROR_FS             2  // Errors detected// Reserved inode numbers for the inode table#define EXT_BAD_INO              1  // Bad blocks inode#define EXT_ROOT_INO             2  // Root directory inode#define EXT_ACL_IDX_INO          3  // ACL index inode#define EXT_ACL_DATA_INO         4  // ACL data inode#define EXT_BOOT_LOADER_INO      5  // Boot loader inode#define EXT_UNDEL_DIR_INO        6  // Undelete directory inode// File types for the file_type field in extDirectoryEntry#define EXT_FT_UNKNOWN           0#define EXT_FT_REG_FILE          1#define EXT_FT_DIR               2#define EXT_FT_CHRDEV            3#define EXT_FT_BLKDEV            4#define EXT_FT_FIFO              5#define EXT_FT_SOCK              6#define EXT_FT_SYMLINK           7#define EXT_FT_MAX               8// EXT_S_: 16-bit value used to indicate the format of the described file// and the access rights for the i_mode field in extInode//                 -- file format --#define EXT_S_IFMT               0xF000  // Format mask#define EXT_S_IFSOCK             0xC000  // Socket#define EXT_S_IFLNK              0xA000  // Symbolic link#define EXT_S_IFREG              0x8000  // Regular file#define EXT_S_IFBLK              0x6000  // Block device#define EXT_S_IFDIR              0x4000  // Directory#define EXT_S_IFCHR              0x2000  // Character device#define EXT_S_IFIFO              0x1000  // Fifo//                 -- access rights --#define EXT_S_ISUID              0x0800  // SUID#define EXT_S_ISGID              0x0400  // SGID#define EXT_S_ISVTX              0x0200  // Sticky bit#define EXT_S_IRWXU              0x01C0  // User access rights mask#define EXT_S_IRUSR              0x0100  // Read#define EXT_S_IWUSR              0x0080  // Write#define EXT_S_IXUSR              0x0040  // Execute#define EXT_S_IRWXG              0x0038  // Group access rights mask#define EXT_S_IRGRP              0x0020  // Read#define EXT_S_IWGRP              0x0010  // Write#define EXT_S_IXGRP              0x0008  // Execute#define EXT_S_IRWXO              0x0007  // Others access rights mask#define EXT_S_IROTH              0x0004  // Read#define EXT_S_IWOTH              0x0002  // Write#define EXT_S_IXOTH              0x0001  // Execute// Values for the 'flags' field in extInode#define EXT_SECRM_FL             0x00000001  // Secure deletion#define EXT_UNRM_FL              0x00000002  // Record for undelete#define EXT_COMPR_FL             0x00000004  // Compressed file#define EXT_SYNC_FL              0x00000008  // Synchronous updates#define EXT_IMMUTABLE_FL         0x00000010  // Immutable file#define EXT_APPEND_FL            0x00000020  // Append only#define EXT_NODUMP_FL            0x00000040  // Do not dump/delete file#define EXT_NOATIME_FL           0x00000080  // Do not update .i_atime#define EXT_DIRTY_FL             0x00000100  // Dirty (file is in use?)#define EXT_COMPRBLK_FL          0x00000200  // Compressed blocks#define EXT_NOCOMPR_FL           0x00000400  // Access raw compressed data#define EXT_ECOMPR_FL            0x00000800  // Compression error#define EXT_BTREE_FL             0x00001000  // B-tree format directory#define EXT_INDEX_FL             0x00010000  // Hash indexed directorytypedef struct {  unsigned inodes_count;  unsigned blocks_count;  unsigned r_blocks_count;  unsigned free_blocks_count;  unsigned free_inodes_count;  unsigned first_data_block;  unsigned log_block_size;  unsigned log_frag_size;  unsigned blocks_per_group;  unsigned frags_per_group;  unsigned inodes_per_group;  unsigned mtime;  unsigned wtime;  unsigned short mnt_count;  unsigned short max_mnt_count;  unsigned short magic;  unsigned short state;  unsigned short errors;  unsigned short minor_rev_level;  unsigned lastcheck;  unsigned checkinterval;  unsigned creator_os;  unsigned rev_level;  unsigned short def_resuid;  unsigned short def_resgid;  // EXT2_DYNAMIC_REV Specific  unsigned first_ino;  unsigned short inode_size;  unsigned short block_group_nr;  unsigned feature_compat;  unsigned feature_incompat;  unsigned feature_ro_compat;  unsigned char uuid[16];  char volume_name[16];  unsigned char last_mounted[64];  unsigned algo_bitmap;  // Performance Hints  unsigned char prealloc_blocks;  unsigned char prealloc_dir_blocks;  unsigned short alignment;  // Journaling Support  unsigned char journal_uuid[16];  unsigned journal_inum;  unsigned journal_dev;  unsigned last_orphan;  unsigned char padding[788];} __attribute__((packed)) extSuperblock;typedef struct {  unsigned block_bitmap;  unsigned inode_bitmap;  unsigned inode_table;  unsigned short free_blocks_count;  unsigned short free_inodes_count;  unsigned short used_dirs_count;  unsigned short pad;  unsigned char reserved[12];} __attribute__((packed)) extGroupDescriptor;typedef struct {  unsigned short i_mode;  unsigned short uid;  unsigned size;  unsigned atime;  unsigned ctime;  unsigned mtime;  unsigned dtime;  unsigned short gid;  unsigned short links_count;  unsigned blocks;  unsigned flags;  unsigned osd1;  unsigned block[15];  unsigned generation;  unsigned file_acl;  unsigned dir_acl;  unsigned faddr;  unsigned char osd2[12];} __attribute__((packed)) extInode;typedef struct {  unsigned inode;  unsigned short rec_len;  unsigned char name_len;  unsigned char file_type;  char name[256];} __attribute__((packed)) extDirectoryEntry;#define _EXT_H#endif

⌨️ 快捷键说明

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