Changeset 9b9d37bb in mainline for uspace/lib/ext4/libext4_inode.c
- Timestamp:
- 2011-10-06T09:48:53Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 1114173
- Parents:
- 3712434
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ext4/libext4_inode.c
r3712434 r9b9d37bb 39 39 #include "libext4.h" 40 40 41 uint32_t ext4_inode_get_mode(ext4_superblock_t *sb, ext4_inode_t *inode) 42 { 43 if (ext4_superblock_get_creator_os(sb) == EXT4_SUPERBLOCK_OS_HURD) { 44 return ((uint32_t)uint16_t_le2host(inode->osd2.hurd2.mode_high)) << 16 | 45 ((uint32_t)uint16_t_le2host(inode->mode)); 46 } 47 return uint16_t_le2host(inode->mode); 48 } 49 50 bool ext4_inode_is_type(ext4_superblock_t *sb, ext4_inode_t *inode, uint32_t type) 51 { 52 uint32_t mode = ext4_inode_get_mode(sb, inode); 53 return (mode & EXT4_INODE_MODE_TYPE_MASK) == type; 54 } 55 41 56 /* 42 uint32_t ext4_inode_get_mode(ext4_inode_t *inode)43 57 uint32_t ext4_inode_get_uid(ext4_inode_t *inode) 44 58 */ 45 59 46 uint64_t ext4_inode_get_size(ext4_ inode_t *inode)60 uint64_t ext4_inode_get_size(ext4_superblock_t *sb, ext4_inode_t *inode) 47 61 { 48 return ((uint64_t)uint32_t_le2host(inode->size_hi)) << 32 | 49 ((uint64_t)uint32_t_le2host(inode->size_lo)); 62 uint32_t major_rev = ext4_superblock_get_rev_level(sb); 63 64 if (major_rev > 0 && ext4_inode_is_type(sb, inode, EXT4_INODE_MODE_FILE)) { 65 return ((uint64_t)uint32_t_le2host(inode->size_hi)) << 32 | 66 ((uint64_t)uint32_t_le2host(inode->size_lo)); 67 } 68 return uint32_t_le2host(inode->size_lo); 50 69 } 51 70 … … 68 87 */ 69 88 89 uint32_t ext4_inode_get_direct_block(ext4_inode_t *inode, uint8_t idx) 90 { 91 assert(idx < EXT4_INODE_DIRECT_BLOCK_COUNT); 92 return uint32_t_le2host(inode->blocks[idx]); 93 } 94 95 uint32_t ext4_inode_get_indirect_block(ext4_inode_t *inode, uint8_t idx) 96 { 97 assert(idx < EXT4_INODE_INDIRECT_BLOCK_COUNT); 98 return uint32_t_le2host(inode->blocks[idx + EXT4_INODE_INDIRECT_BLOCK]); 99 } 100 70 101 /** 71 102 * @}
Note:
See TracChangeset
for help on using the changeset viewer.