Rev 3507 | Rev 3512 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3507 | Rev 3510 | ||
---|---|---|---|
Line 211... | Line 211... | ||
211 | 211 | ||
212 | void |
212 | void |
213 | fat_mark_cluster(dev_handle_t dev_handle, unsigned fatno, fat_cluster_t clst, |
213 | fat_mark_cluster(dev_handle_t dev_handle, unsigned fatno, fat_cluster_t clst, |
214 | fat_cluster_t value) |
214 | fat_cluster_t value) |
215 | { |
215 | { |
- | 216 | block_t *bb, *blk; |
|
- | 217 | uint16_t bps; |
|
- | 218 | uint16_t rscnt; |
|
216 | /* TODO */ |
219 | uint16_t sf; |
- | 220 | uint8_t fatcnt; |
|
- | 221 | fat_cluster_t *cp; |
|
- | 222 | ||
- | 223 | bb = block_get(dev_handle, BS_BLOCK, BS_SIZE); |
|
- | 224 | bps = uint16_t_le2host(FAT_BS(bb)->bps); |
|
- | 225 | rscnt = uint16_t_le2host(FAT_BS(bb)->rscnt); |
|
- | 226 | sf = uint16_t_le2host(FAT_BS(bb)->sec_per_fat); |
|
- | 227 | fatcnt = FAT_BS(bb)->fatcnt; |
|
- | 228 | block_put(bb); |
|
- | 229 | ||
- | 230 | assert(fatno < fatcnt); |
|
- | 231 | blk = block_get(dev_handle, rscnt + sf * fatno + |
|
- | 232 | (clst * sizeof(fat_cluster_t)) / bps, bps); |
|
- | 233 | cp = (fat_cluster_t *)blk->data + clst % (bps / sizeof(fat_cluster_t)); |
|
- | 234 | *cp = host2uint16_t_le(value); |
|
- | 235 | blk->dirty = true; /* need to sync block */ |
|
- | 236 | block_put(blk); |
|
217 | } |
237 | } |
218 | 238 | ||
219 | void fat_alloc_shadow_clusters(dev_handle_t dev_handle, fat_cluster_t *lifo, |
239 | void fat_alloc_shadow_clusters(dev_handle_t dev_handle, fat_cluster_t *lifo, |
220 | unsigned nclsts) |
240 | unsigned nclsts) |
221 | { |
241 | { |