Changeset 36bca8eb in mainline for uspace/lib/ext2/libext2.h
- Timestamp:
- 2011-02-13T18:55:00Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e272949
- Parents:
- d5e2763
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ext2/libext2.h
rd5e2763 r36bca8eb 38 38 39 39 #include <byteorder.h> 40 #include <libblock.h> 40 41 41 42 typedef struct ext2_superblock { 42 uint8_t unused[56]; 43 uint16_t magic; 44 } ext2_superblock_t; 43 uint8_t unused[20]; 44 uint32_t first_block; // Block containing the superblock (either 0 or 1) 45 uint32_t block_size_log2; // log_2(block_size) 46 int32_t fragment_size_log2; // log_2(fragment size) 47 uint32_t blocks_per_group; // Number of blocks in one block group 48 uint32_t fragments_per_group; // Number of fragments per block group 49 uint32_t inodes_per_group; // Number of inodes per block group 50 uint8_t unused2[12]; 51 uint16_t magic; // Magic value 52 } __attribute__ ((packed)) ext2_superblock_t; 53 // TODO: add __attribute__((aligned(...)) for better performance? 54 // (it is necessary to ensure the superblock is correctly aligned then 55 // though) 45 56 46 #define EXT2_SUPERBLOCK_MAGIC 0xEF53 57 typedef struct ext2_filesystem { 58 devmap_handle_t device; 59 ext2_superblock_t * superblock; 60 } ext2_filesystem_t; 47 61 48 inline uint16_t ext2_superblock_get_magic(ext2_superblock_t *superblock); 62 #define EXT2_SUPERBLOCK_MAGIC 0xEF53 63 #define EXT2_SUPERBLOCK_SIZE 1024 64 #define EXT2_SUPERBLOCK_OFFSET 1024 65 #define EXT2_SUPERBLOCK_LAST_BYTE (EXT2_SUPERBLOCK_OFFSET + \ 66 EXT2_SUPERBLOCK_SIZE -1) 67 68 inline uint16_t ext2_superblock_get_magic(ext2_superblock_t *sb); 69 inline uint32_t ext2_superblock_get_first_block(ext2_superblock_t *sb); 70 inline uint32_t ext2_superblock_get_block_size_log2(ext2_superblock_t *sb); 71 inline uint32_t ext2_superblock_get_block_size(ext2_superblock_t *sb); 72 inline int32_t ext2_superblock_get_fragment_size_log2(ext2_superblock_t *sb); 73 inline uint32_t ext2_superblock_get_fragment_size(ext2_superblock_t *sb); 74 inline uint32_t ext2_superblock_get_blocks_per_group(ext2_superblock_t *sb); 75 inline uint32_t ext2_superblock_get_fragments_per_group(ext2_superblock_t *sb); 76 77 int ext2_superblock_read_direct(ext2_superblock_t **superblock, 78 devmap_handle_t dev); 79 80 int ext2_filesystem_init(ext2_filesystem_t *fs, devmap_handle_t dev); 81 void ext2_filesystem_fini(ext2_filesystem_t *fs); 49 82 50 83 #endif
Note:
See TracChangeset
for help on using the changeset viewer.