Changeset 36bca8eb in mainline for uspace/lib/ext2/libext2.h


Ignore:
Timestamp:
2011-02-13T18:55:00Z (14 years ago)
Author:
Martin Sucha <sucha14@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e272949
Parents:
d5e2763
Message:

Add some more superblock members and function to read a superblock

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ext2/libext2.h

    rd5e2763 r36bca8eb  
    3838
    3939#include <byteorder.h>
     40#include <libblock.h>
    4041
    4142typedef 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)
    4556
    46 #define EXT2_SUPERBLOCK_MAGIC 0xEF53
     57typedef struct ext2_filesystem {
     58        devmap_handle_t         device;
     59        ext2_superblock_t *     superblock;
     60} ext2_filesystem_t;
    4761
    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
     68inline uint16_t ext2_superblock_get_magic(ext2_superblock_t *sb);
     69inline uint32_t ext2_superblock_get_first_block(ext2_superblock_t *sb);
     70inline uint32_t ext2_superblock_get_block_size_log2(ext2_superblock_t *sb);
     71inline uint32_t ext2_superblock_get_block_size(ext2_superblock_t *sb);
     72inline int32_t  ext2_superblock_get_fragment_size_log2(ext2_superblock_t *sb);
     73inline uint32_t ext2_superblock_get_fragment_size(ext2_superblock_t *sb);
     74inline uint32_t ext2_superblock_get_blocks_per_group(ext2_superblock_t *sb);
     75inline uint32_t ext2_superblock_get_fragments_per_group(ext2_superblock_t *sb);
     76
     77int ext2_superblock_read_direct(ext2_superblock_t **superblock,
     78                                                                devmap_handle_t dev);
     79
     80int ext2_filesystem_init(ext2_filesystem_t *fs, devmap_handle_t dev);
     81void ext2_filesystem_fini(ext2_filesystem_t *fs);
    4982
    5083#endif
Note: See TracChangeset for help on using the changeset viewer.