Changeset c00e729 in mainline for uspace/lib/ext2


Ignore:
Timestamp:
2011-02-13T23:19:12Z (14 years ago)
Author:
Martin Sucha <sucha14@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f6fa2c2
Parents:
8bd5dad
Message:

Support for some more superblock fields and displaying in ext2info

Location:
uspace/lib/ext2
Files:
2 edited

Legend:

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

    r8bd5dad rc00e729  
    5050        uint8_t         unused2[12];
    5151        uint16_t        magic; // Magic value
     52        uint16_t        state; // State (mounted/unmounted)
     53        uint16_t        rev_minor; // Minor revision level
     54        uint8_t         unused3[12];
     55        uint32_t        creator_os;
     56        uint32_t        rev_major; // Major revision level
     57        uint8_t         unused4[8];
     58       
     59        // Following is for ext2 revision 1 only
     60        uint32_t        first_inode;
     61        uint16_t        inode_size;
     62        uint8_t         unused5[14];
     63        uint8_t         uuid[16]; // UUID TODO: Create a library for UUIDs
     64        uint8_t         volume_name[16];
    5265
    5366// TODO: add __attribute__((aligned(...)) for better performance?
     
    6982// allow maximum this block size
    7083#define EXT2_MAX_BLOCK_SIZE                     8096
     84#define EXT2_REV0_FIRST_INODE           11
     85#define EXT2_REV0_INODE_SIZE            128
    7186
    7287inline uint16_t ext2_superblock_get_magic(ext2_superblock_t *);
     
    7893inline uint32_t ext2_superblock_get_blocks_per_group(ext2_superblock_t *);
    7994inline uint32_t ext2_superblock_get_fragments_per_group(ext2_superblock_t *);
     95inline uint16_t ext2_superblock_get_state(ext2_superblock_t *);
     96inline uint16_t ext2_superblock_get_rev_minor(ext2_superblock_t *);
     97inline uint32_t ext2_superblock_get_rev_major(ext2_superblock_t *);
     98inline uint32_t ext2_superblock_get_creator_os(ext2_superblock_t *);
     99inline uint32_t ext2_superblock_get_first_inode(ext2_superblock_t *);
     100inline uint16_t ext2_superblock_get_inode_size(ext2_superblock_t *);
    80101
    81102extern int ext2_superblock_read_direct(devmap_handle_t, ext2_superblock_t **);
  • uspace/lib/ext2/libext2_superblock.c

    r8bd5dad rc00e729  
    130130}
    131131
     132/**
     133 * Get filesystem state
     134 *
     135 * @param sb pointer to superblock
     136 */
     137inline uint16_t ext2_superblock_get_state(ext2_superblock_t *sb)
     138{
     139        return uint16_t_le2host(sb->state);
     140}
     141
     142/**
     143 * Get minor revision number
     144 *
     145 * @param sb pointer to superblock
     146 */
     147inline uint16_t ext2_superblock_get_rev_minor(ext2_superblock_t *sb)
     148{
     149        return uint16_t_le2host(sb->rev_minor);
     150}
     151
     152/**
     153 * Get major revision number
     154 *
     155 * @param sb pointer to superblock
     156 */
     157inline uint32_t ext2_superblock_get_rev_major(ext2_superblock_t *sb)
     158{
     159        return uint32_t_le2host(sb->rev_major);
     160}
     161
     162/**
     163 * Get index of first regular inode
     164 *
     165 * @param sb pointer to superblock
     166 */
     167inline uint32_t ext2_superblock_get_first_inode(ext2_superblock_t *sb)
     168{
     169        if (ext2_superblock_get_rev_major(sb) == 0) {
     170                return EXT2_REV0_FIRST_INODE;
     171        }
     172        return uint32_t_le2host(sb->first_inode);
     173}
     174
     175/**
     176 * Get size of inode
     177 *
     178 * @param sb pointer to superblock
     179 */
     180inline uint16_t ext2_superblock_get_inode_size(ext2_superblock_t *sb)
     181{
     182        if (ext2_superblock_get_rev_major(sb) == 0) {
     183                return EXT2_REV0_INODE_SIZE;
     184        }
     185        return uint32_t_le2host(sb->inode_size);
     186}
     187
    132188
    133189/** Read a superblock directly from device (i.e. no libblock cache)
Note: See TracChangeset for help on using the changeset viewer.