Changes in uspace/srv/fs/fat/fat_fat.h [991f645:7ece4247] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/fs/fat/fat_fat.h
r991f645 r7ece4247 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 CLBN2PBN(bs, cl, bn) \ 79 (SSA((bs)) + ((cl) - FAT_CLST_FIRST) * SPC((bs)) + (bn) % SPC((bs))) 80 81 #define FAT_IS_FAT12(bs) (CC(bs) < FAT12_CLST_MAX) 82 #define FAT_IS_FAT16(bs) \ 83 ((CC(bs) >= FAT12_CLST_MAX) && (CC(bs) < FAT16_CLST_MAX)) 84 #define FAT_IS_FAT32(bs) (CC(bs) >= FAT16_CLST_MAX) 85 86 #define FAT_CLST_SIZE(bs) \ 87 (FAT_IS_FAT32(bs) ? FAT32_CLST_SIZE : FAT16_CLST_SIZE) 88 89 #define FAT_MASK(bs) \ 90 (FAT_IS_FAT12(bs) ? FAT12_MASK : \ 91 (FAT_IS_FAT32(bs) ? FAT32_MASK : FAT16_MASK)) 92 93 #define FAT_CLST_LAST1(bs) (FAT32_CLST_LAST1 & FAT_MASK((bs))) 94 #define FAT_CLST_LAST8(bs) (FAT32_CLST_LAST8 & FAT_MASK((bs))) 95 #define FAT_CLST_BAD(bs) (FAT32_CLST_BAD & FAT_MASK((bs))) 96 97 #define FAT_ROOT_CLST(bs) \ 98 (FAT_IS_FAT32(bs) ? uint32_t_le2host(bs->fat32.root_cluster) : \ 99 FAT_CLST_ROOT) 100 54 101 /* forward declarations */ 55 102 struct block; … … 57 104 struct fat_bs; 58 105 59 typedef uint 16_t fat_cluster_t;106 typedef uint32_t fat_cluster_t; 60 107 61 #define fat_clusters_get(numc, bs, dh, fc) \62 fat_cluster_walk((bs), ( dh), (fc), NULL, (numc), (uint16_t) -1)63 extern int fat_cluster_walk(struct fat_bs *, devmap_handle_t, fat_cluster_t,64 fat_cluster_t *, uint 16_t *, uint16_t);108 #define fat_clusters_get(numc, bs, sid, fc) \ 109 fat_cluster_walk((bs), (sid), (fc), NULL, (numc), (uint32_t) -1) 110 extern int fat_cluster_walk(struct fat_bs *, service_id_t, fat_cluster_t, 111 fat_cluster_t *, uint32_t *, uint32_t); 65 112 66 113 extern int fat_block_get(block_t **, struct fat_bs *, struct fat_node *, 67 114 aoff64_t, int); 68 extern int _fat_block_get(block_t **, struct fat_bs *, devmap_handle_t,115 extern int _fat_block_get(block_t **, struct fat_bs *, service_id_t, 69 116 fat_cluster_t, fat_cluster_t *, aoff64_t, int); 70 117 … … 73 120 extern int fat_chop_clusters(struct fat_bs *, struct fat_node *, 74 121 fat_cluster_t); 75 extern int fat_alloc_clusters(struct fat_bs *, devmap_handle_t, unsigned,122 extern int fat_alloc_clusters(struct fat_bs *, service_id_t, unsigned, 76 123 fat_cluster_t *, fat_cluster_t *); 77 extern int fat_free_clusters(struct fat_bs *, devmap_handle_t, fat_cluster_t);78 extern int fat_alloc_shadow_clusters(struct fat_bs *, devmap_handle_t,124 extern int fat_free_clusters(struct fat_bs *, service_id_t, fat_cluster_t); 125 extern int fat_alloc_shadow_clusters(struct fat_bs *, service_id_t, 79 126 fat_cluster_t *, unsigned); 80 extern int fat_get_cluster(struct fat_bs *, devmap_handle_t, unsigned,127 extern int fat_get_cluster(struct fat_bs *, service_id_t, unsigned, 81 128 fat_cluster_t, fat_cluster_t *); 82 extern int fat_set_cluster(struct fat_bs *, devmap_handle_t, unsigned,129 extern int fat_set_cluster(struct fat_bs *, service_id_t, unsigned, 83 130 fat_cluster_t, fat_cluster_t); 84 131 extern int fat_fill_gap(struct fat_bs *, struct fat_node *, fat_cluster_t, 85 132 aoff64_t); 86 extern int fat_zero_cluster(struct fat_bs *, devmap_handle_t, fat_cluster_t);87 extern int fat_sanity_check(struct fat_bs *, devmap_handle_t);133 extern int fat_zero_cluster(struct fat_bs *, service_id_t, fat_cluster_t); 134 extern int fat_sanity_check(struct fat_bs *, service_id_t); 88 135 89 136 #endif
Note:
See TracChangeset
for help on using the changeset viewer.