Changeset 375ab5e in mainline for uspace/srv/fs/fat/fat_fat.h
- Timestamp:
- 2011-08-24T20:10:43Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- eb660787
- Parents:
- 7fadb65 (diff), 842a2d2 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/fs/fat/fat_fat.h
r7fadb65 r375ab5e 1 1 /* 2 2 * Copyright (c) 2008 Jakub Jermar 3 * Copyright (c) 2011 Oleg Romanenko 3 4 * All rights reserved. 4 5 * … … 29 30 /** @addtogroup fs 30 31 * @{ 31 */ 32 */ 32 33 33 34 #ifndef FAT_FAT_FAT_H_ … … 40 41 #define FAT1 0 41 42 42 #define FAT_CLST_RES0 0x0000 43 #define FAT_CLST_RES1 0x0001 44 #define FAT_CLST_FIRST 0x0002 45 #define FAT_CLST_BAD 0xfff7 46 #define FAT_CLST_LAST1 0xfff8 47 #define FAT_CLST_LAST8 0xffff 43 #define FAT_CLST_RES0 0 44 #define FAT_CLST_RES1 1 45 #define FAT_CLST_FIRST 2 46 47 #define FAT32_CLST_BAD 0x0ffffff7 48 #define FAT32_CLST_LAST1 0x0ffffff8 49 #define FAT32_CLST_LAST8 0x0fffffff 50 51 #define FAT12_MASK 0x0fff 52 #define FAT16_MASK 0xffff 53 #define FAT32_MASK 0x0fffffff 54 55 #define FAT12_CLST_MAX 4085 56 #define FAT16_CLST_MAX 65525 57 58 /* Size in bytes for cluster value of FAT */ 59 #define FAT12_CLST_SIZE 2 60 #define FAT16_CLST_SIZE 2 61 #define FAT32_CLST_SIZE 4 48 62 49 63 /* internally used to mark root directory's parent */ … … 52 66 #define FAT_CLST_ROOT FAT_CLST_RES1 53 67 68 /* 69 * Convenience macros for computing some frequently used values from the 70 * primitive boot sector members. 71 */ 72 #define RDS(bs) ((sizeof(fat_dentry_t) * RDE((bs))) / BPS((bs))) + \ 73 (((sizeof(fat_dentry_t) * RDE((bs))) % BPS((bs))) != 0) 74 #define SSA(bs) (RSCNT((bs)) + FATCNT((bs)) * SF((bs)) + RDS(bs)) 75 #define DS(bs) (TS(bs) - SSA(bs)) 76 #define CC(bs) (DS(bs) / SPC(bs)) 77 78 #define FAT_IS_FAT12(bs) (CC(bs) < FAT12_CLST_MAX) 79 #define FAT_IS_FAT16(bs) \ 80 ((CC(bs) >= FAT12_CLST_MAX) && (CC(bs) < FAT16_CLST_MAX)) 81 #define FAT_IS_FAT32(bs) (CC(bs) >= FAT16_CLST_MAX) 82 83 #define FAT_CLST_SIZE(bs) \ 84 (FAT_IS_FAT32(bs) ? FAT32_CLST_SIZE : FAT16_CLST_SIZE) 85 86 #define FAT_MASK(bs) \ 87 (FAT_IS_FAT12(bs) ? FAT12_MASK : \ 88 (FAT_IS_FAT32(bs) ? FAT32_MASK : FAT16_MASK)) 89 90 #define FAT_CLST_LAST1(bs) (FAT32_CLST_LAST1 & FAT_MASK((bs))) 91 #define FAT_CLST_LAST8(bs) (FAT32_CLST_LAST8 & FAT_MASK((bs))) 92 #define FAT_CLST_BAD(bs) (FAT32_CLST_BAD & FAT_MASK((bs))) 93 94 #define FAT_ROOT_CLST(bs) \ 95 (FAT_IS_FAT32(bs) ? uint32_t_le2host(bs->fat32.root_cluster) : \ 96 FAT_CLST_ROOT) 97 54 98 /* forward declarations */ 55 99 struct block; … … 57 101 struct fat_bs; 58 102 59 typedef uint 16_t fat_cluster_t;103 typedef uint32_t fat_cluster_t; 60 104 61 #define fat_clusters_get(numc, bs, dh, fc) \62 fat_cluster_walk((bs), ( dh), (fc), NULL, (numc), (uint16_t) -1)105 #define fat_clusters_get(numc, bs, sid, fc) \ 106 fat_cluster_walk((bs), (sid), (fc), NULL, (numc), (uint32_t) -1) 63 107 extern int fat_cluster_walk(struct fat_bs *, service_id_t, fat_cluster_t, 64 fat_cluster_t *, uint 16_t *, uint16_t);108 fat_cluster_t *, uint32_t *, uint32_t); 65 109 66 110 extern int fat_block_get(block_t **, struct fat_bs *, struct fat_node *, … … 78 122 extern int fat_alloc_shadow_clusters(struct fat_bs *, service_id_t, 79 123 fat_cluster_t *, unsigned); 124 extern int fat_get_cluster_fat12(struct fat_bs *, service_id_t, unsigned, 125 fat_cluster_t, fat_cluster_t *); 126 extern int fat_get_cluster_fat16(struct fat_bs *, service_id_t, unsigned, 127 fat_cluster_t, fat_cluster_t *); 128 extern int fat_get_cluster_fat32(struct fat_bs *, service_id_t, unsigned, 129 fat_cluster_t, fat_cluster_t *); 80 130 extern int fat_get_cluster(struct fat_bs *, service_id_t, unsigned, 81 131 fat_cluster_t, fat_cluster_t *); 132 extern int fat_set_cluster_fat12(struct fat_bs *, service_id_t, unsigned, 133 fat_cluster_t, fat_cluster_t); 134 extern int fat_set_cluster_fat16(struct fat_bs *, service_id_t, unsigned, 135 fat_cluster_t, fat_cluster_t); 136 extern int fat_set_cluster_fat32(struct fat_bs *, service_id_t, unsigned, 137 fat_cluster_t, fat_cluster_t); 82 138 extern int fat_set_cluster(struct fat_bs *, service_id_t, unsigned, 83 139 fat_cluster_t, fat_cluster_t);
Note:
See TracChangeset
for help on using the changeset viewer.